Commit Graph
29 Commits
Author SHA1 Message Date
RichardandClaude Opus 4.8 76007db93f Modul-Views: parameterloser Ctor + Initialize() (Designer-öffenbar)
Der VS-WinForms-Designer braucht einen parameterlosen Konstruktor, um eine Form
zu instanziieren. Die drei Views hatten nur einen DI-Ctor -> Designer hätte sie
nicht öffnen können. Umgestellt auf das Core-View-Muster (DashboardView):
- Parameterloser Ctor: InitializeComponent() + Event-Wiring.
- Initialize(deps): Abhängigkeiten setzen + Daten laden.
- Felder nullable + Null-Guards in den Handlern.
- CopyTradingModule.RegisterUi: new View() + view.Initialize(...) statt DI-Ctor.

Verifiziert: Build grün, --smoke-ui grün (3 Accounts / 32 Trader, alle Views OK).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-06 10:15:04 +02:00
RichardandClaude Opus 4.8 4caba5bfd1 Copytrading-Views auf Designer-Muster umgestellt
Die drei Modul-Views wurden von komplett code-first (alle Controls im Konstruktor)
auf das Standard-WinForms-Designer-Muster umgestellt (je X.cs + X.Designer.cs mit
InitializeComponent), damit sie im Designer geöffnet und bearbeitet werden können:

- ClosedTradesView, AccountSettingsView, MasterTradersView: alle wichtigen
  Steuerelemente (Panels, DataGridView mit expliziten Spalten via
  AutoGenerateColumns=false, PropertyGrid, ToolStrip, GroupBox, CheckedListBox,
  ComboBox, Buttons, Labels, Splitter) sind jetzt Designer-Felder.
- Konsistent mit den Core-Views (DashboardView-Muster): Layout im Designer,
  Zellformate/Event-Wiring/Datenbindung im Code.

Verifiziert: --smoke-ui grün (3 Accounts / 32 Trader; alle Views + Launcher OK).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-06 10:11:30 +02:00
RichardandClaude Opus 4.8 f1451b547c Fix: Startet nicht / MySQL-Timeout ohne UI (Config- & Startup-Härtung)
Ursachen (App startete aus bin/ bzw. per Doppelklick ohne UI):
1. appsettings.Local.json (MySQL-Connection) wurde NICHT ins Output kopiert und
   nur relativ zum Arbeitsverzeichnis geladen -> leere Connection -> Pomelo fiel
   auf localhost:3306 zurueck -> "Connect Timeout expired".
2. ServerVersion.AutoDetect(conn) oeffnet beim Options-Bau eine blockierende
   DB-Verbindung -> haengt/crasht den Start, wenn die DB nicht erreichbar ist.
3. CopyTradingEngine.StartAsync lud den MarketCache ungeschuetzt -> DB-Fehler
   riss AppHost.Start() ab, bevor die UI erschien.

Fixes:
- csproj: appsettings.Local.json mit ins Output kopieren (CopyToOutputDirectory).
- Program: UseContentRoot(AppContext.BaseDirectory) -> Config wird immer neben
  der EXE gesucht (Main + Smoke-Test).
- ServerVersion fest gepinnt: DatabaseServerVersion.Value = MariaDB 11.8.6 (wie
  am Server erkannt); AddCorePersistence + CopyTradingModule nutzen sie statt
  AutoDetect. Kein blockierender Connect mehr beim Start.
- CopyTradingEngine-Preload in try/catch: DB-Fehler bricht den Start nicht mehr ab.
- Neuer Diagnose-CLI --db-version (gibt @@version aus).

Verifiziert: --smoke-ui aus fremdem Arbeitsverzeichnis laeuft gruen
(3 Accounts / 32 Trader hydriert, alle Views + Launcher OK).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-06 10:03:44 +02:00
RichardandClaude Opus 4.8 05e0576965 Phase 5-UI: Copytrading-Modul-Views (Master-Trader, Closed Trades, Account-Settings)
- MasterTradersView: Liste + PropertyGrid-Editor + Account-Zuweisung
  (CheckedListBox -> AssignedAccountIds), Neu/Speichern/Loeschen; persistiert
  via ITrackedTraderRepository + synct CopyTradingState.Traders.
- ClosedTradesView: read-only Grid der geschlossenen Copytrades mit
  aufgeloesten Account-/Trader-Namen + Kurzauswertung (ICopyTradeLogRepository).
- AccountSettingsView: Account-Auswahl + PropertyGrid fuer
  CopyTradingAccountSettings, Speichern via Repo + State-Sync.
- IPolyTraderModule.RegisterUi erhaelt jetzt IServiceProvider (Module loesen
  ihre View-Abhaengigkeiten auf); Program uebergibt viewServices.
- CopyTradingModule.RegisterUi registriert die 3 Views (Group "CopyTrading").
- LauncherForm haengt Modul-Views dynamisch als Buttons an toolstrip_windows
  (Core kennt keine Modulnamen; Bindung nur ueber View-IDs).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-05 20:09:56 +02:00
RichardandClaude Opus 4.8 b951b912f4 Phase 6 (Stufe 6): MongoDB vollstaendig entfernt
- Legacy-Form stillgelegt: frm_main(.Designer/.resx) + frm_analytics(.Designer/.resx)
  geloescht, 'Open Legacy'-Menue aus LauncherForm entfernt.
- Program.cs: IMongoDatabase-Registrierung + closed_trades-Cleanup weg;
  Trade-Nummerierung liest jetzt hoechste TradeId aus ICopyTradeLogRepository.
- StartupHydrationService: Mongo-/Bson-Fallback entfernt (Settings kommen aus
  dem Repo; fehlende Accounts erhalten Default-Settings).
- Alle Mongo*Repository (Core 4 + Modul 4) geloescht; DI-Zweige auf EF/MySQL
  reduziert (AddCorePersistence, CopyTradingModule).
- ConfigMigrator: Mongo-Pfad (Run/MigrateSettings) entfernt; nur noch
  RunFromJson + VerifyMySql (kein Mongo-Treiber mehr).
- Modelle: [BsonId] entfernt (EF-Keys via HasKey); ObjectId-Defaults -> Guid.
- LiteDB-Shim (MongoDbLiteDBShim) geloescht; MongoDB.Driver- + LiteDB-Pakete
  aus App/Core entfernt; stale usings + user-sichtbare Strings bereinigt.
- DatabaseOptions/appsettings.json: Mongo-Provider/Connection-Felder entfernt.
- Build gruen; --verify-mysql bestaetigt 3 Accounts/3 Settings/32 Trader/2344 Markets.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-05 18:34:17 +02:00
RichardandClaude Opus 4.8 8101b79cfb Phase 6 (Stufe 3): CopyTrading-Modul auf EF/MySQL umschaltbar
- CopyTradingDbContext (mod_copytrading_* Tabellen) + Design-Time-Factory
- EF-Repos: CopyTradeLog, AccountSettings, TrackedTrader, MasterTraderHistory
- Neue Repo-Contracts ITrackedTraderRepository + IMasterTraderHistoryRepository
  (loest die Collection-Inkonsistenz trackers/tracked_traders auf eine Quelle auf)
- Mongo-Impls der neuen Contracts (Uebergang)
- CopyTradingModule.RegisterServices: Provider-Toggle (MySql via EF / Mongo)
- StartupHydrationService + MasterTraderAnalyticsJob nutzen die Repos statt _db
- InitialCopyTrading-Migration erstellt und auf MySQL angewendet

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-05 14:11:03 +02:00
RichardandClaude Opus 4.8 d8cfdbf6be Phase 6 (Stufe 2): Core-EF-Repos + umschaltbare Registrierung
- EF-Implementierungen hinter den Core-Interfaces: EfAccountRepository,
  EfMarketRepository, EfPositionRepository, EfTradeLogRepository. Thread-safe via
  IDbContextFactory<CoreDbContext> (kurzlebiger Context je Operation).
- AddCorePersistence(DatabaseOptions): Provider "MySql" -> EF + DbContextFactory,
  "Mongo" -> Mongo-Repos. Program.cs uebergibt die aufgeloesten Optionen.
- appsettings.json Provider-Default = "Mongo" (App bleibt vorerst auf MongoDB,
  kein Verhaltenswechsel). MySQL-Connection liegt in gitignorierter appsettings.Local.json.
- Build 0 Fehler.

Naechste Stufen: Modul-Context + EF-Repos (inkl. trackers/mt_history), Config-Migration
Mongo->MySQL, dann Provider umschalten + Mongo entfernen.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-05 13:43:34 +02:00
RichardandClaude Opus 4.8 ad9bb684d4 Phase 6: Tabellen-Namenskonvention (core_ / mod_<modul>_)
- Core-Tabellen mit core_-Praefix: core_accounts, core_positions, core_markets,
  core_trade_log. CoreDbContext.ToTable angepasst, Migration neu erzeugt + angewandt.
- Modul-Tabellen erhalten spaeter mod_copytrading_-Praefix.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-05 13:37:52 +02:00
RichardandClaude Opus 4.8 97bff61fc5 Phase 6 (Stufe 1): EF Core + MySQL Fundament (Core-Seite)
- Pomelo.EntityFrameworkCore.MySql 8.0.3 + EF Core Design im Core; DI.Abstractions
  auf 8.0.2 angehoben (Downgrade-Konflikt aufgeloest).
- DatabaseOptions: Provider (MySql|Mongo) + MySqlConnectionString (Connection liegt
  in gitignorierter appsettings.Local.json, NICHT im Repo).
- Position: AccountId + IsDemo ergaenzt (MySQL: eine positions-Tabelle statt
  Collection-per-Account).
- CoreDbContext (accounts/positions/markets/trade_log) mit Keys, Decimal-Praezision,
  NotMapped fuer Runtime-Felder, Text-Spalten fuer JSON. Design-Time-Factory (Env-Var).
- EF-Migration InitialCore erstellt UND auf die MySQL-DB angewandt (Tabellen live).

Naechste Stufen: Core-EF-Repos + DI-Umschaltung, Modul-Context (CopyTradingDbContext)
+ Repos, Config-Migration Mongo->MySQL, dann Mongo entfernen.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-05 13:32:06 +02:00
RichardandClaude Opus 4.8 095c4b64aa Phase 5: AccountState-Split (Copytrading-Limits -> Modul)
- Copytrading-Detail-Einstellungen (PerMarketLimit, MaxBuyPrice, PerMasterLimit,
  Zeit-Limits, PreRedeemLimit, ProfitTarget, MaxPriceDifference) aus dem Core-
  AccountState in das Modul-Modell CopyTradingAccountSettings verschoben.
- CopyTradingState.AccountSettings + GetAccountSettings(accountId) (Default-safe).
- Consumer umgestellt: CopyTradingEngine, TraderMonitorService, PolymarketWssClient,
  frm_main lesen die Limits jetzt aus den Account-Settings.
- Neues Modul-Repo ICopyTradingAccountSettingsRepository (Collection ct_account_settings),
  in CopyTradingModule registriert.
- StartupHydration: Settings laden + EINMALIGE Migration der Alt-Limits aus dem
  Roh-accounts-Dokument (keine konfigurierten Limits gehen verloren).
- Build 0 Fehler.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-03 10:32:52 +02:00
RichardandClaude Opus 4.8 ad5ba34b56 Phase 5-UI: Views sind echte Forms + Launcher-Offen-Status
- ModuleView liefert jetzt ein Form (CreateForm statt CreateControl); die 4 Views
  (Terminal, Settings, Jobs, Dashboard) von UserControl auf Form umgestellt
  (im Designer als Fenster bearbeitbar). ViewHostForm entfernt.
- ShellUiHost verwaltet offene Forms: Einzelinstanz, bereits offenes Fenster wird
  in den Vordergrund geholt, OpenStateChanged-Event.
- LauncherForm: Fenster-Buttons an View-IDs gebunden; offene Fenster werden am
  Button markiert (Checked), erneuter Klick holt das Fenster nach vorn.
- Build 0 Fehler.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-03 09:19:13 +02:00
RichardandClaude Opus 4.8 ff1db2aea0 Phase 5: CopyTrading-Modul-Migration (Services + Modul-Contract)
- TraderMonitorService, CopyTradingEngine, TraderAnalyticsJob physisch ins
  Modul-Projekt (src/PolyTrader.Modules.CopyTrading/Services) verschoben.
- Neu: CopyTradingModule : IPolyTraderModule — registriert CopyTradingState,
  die Signal-/Trade-Channels, ICopyTradeLogRepository und die Modul-Services selbst.
- Program.cs: Modul-Discovery (foreach module.RegisterServices / RegisterUi);
  die entsprechenden Direkt-Registrierungen entfernt. StartupHydration laeuft
  weiterhin als erster HostedService (State-Hydration vor Trading).
- MasterTraderAnalyticsJob bleibt vorerst in der App (nutzt noch den App-Shim
  fuer mt_history -> braucht erst ein History-Repo). RegisterUi noch leer
  (Modul-Views folgen; Copytrading-UI weiter ueber Legacy erreichbar).
- Build 0 Fehler. Launcher zeigt jetzt "Module: 1".

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-02 12:24:10 +02:00
RichardandClaude Opus 4.8 4f6c7fdb86 Phase 5-UI: Generischer Core-Trade-Log + modulübergreifendes Dashboard
- Core: TradeRecord (Modell) + ITradeLogRepository (+ Mongo-Impl, Collection
  "trade_log"), in AddCorePersistence registriert. Realisiert den generischen,
  modulneutralen Trade-Log aus Entscheidung #2.
- Dual-Write: PersistenceService schreibt geschlossene Copy-Trades zusaetzlich als
  generischen TradeRecord (ModuleName="CopyTrading").
- Neue DashboardView (UserControl + Designer): zeigt die letzten Trades ALLER
  Module (GetRecent) mit Konto-Aufloesung + Kurzauswertung (Gesamt-PnL, Anzahl,
  Aufschluesselung je Modul). btn_dashboard im Launcher, View "core.dashboard".
- Build 0 Fehler.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-02 12:16:20 +02:00
RichardandClaude Opus 4.8 26dd68a550 Phase 5-UI (Fundament): Modul-UI-Contract im Core (Launcher-Modell)
- IPolyTraderModule um RegisterUi(IModuleUiHost) erweitert.
- Neu: IModuleUiHost + ModuleView (Core, Modularity) — Views sind designbare
  Controls (UserControls), die die Shell in eigenständigen Host-Fenstern öffnet.
- Core: UseWindowsForms aktiviert (fuer den Control-Typ im Contract).
- Build 0 Fehler. Noch keine View implementiert (folgt view-fuer-view).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-02 10:26:21 +02:00
RichardandClaude Opus 4.8 88fc982089 Phase 5.3-ClosedTrade: ClosedTrade -> Modul + ICopyTradeLogRepository
- ClosedTrade (+ ClosedTradeRow) nach src/PolyTrader.Modules.CopyTrading/Models/.
- Neues ICopyTradeLogRepository (+ Mongo-Impl) im Modul: EnsureIndexes, Exists,
  Insert, Find(predicate) auf der closed_trades-Collection.
- closed_trades-Zugriffe der Modul-Services vom App-Shim auf das Repo umgestellt:
  TraderMonitorService, PersistenceService, PolymarketWssClient, TraderAnalyticsJob.
  Shim-/DB-Usings dort entfernt.
- TraderMonitorService nutzt kein _db mehr (auch die uebrigen _db-Guards aus 3d
  entfernt, da Repos immer verfuegbar sind). Verhaltensneutral.
- frm_main (UI) + Program.cs (BsonDocument-Cleanup) bleiben auf _db.
- Build 0 Fehler.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-01 22:27:22 +02:00
RichardandClaude Opus 4.8 3be75c0f05 Phase 5.3-WSS (1/2): Core-WSS-Verbindungsklasse extrahiert
- Neu in PolyTrader.Core.Streaming: IBlockchainWssClient + AlchemyWssClient
  (+ Factory) und Modelle (BlockchainWssSubscription/LogSubscriptionFilter/
  BlockchainLogEvent). Domänen-agnostisch: Connect, eth_subscribe, Receive-Loop,
  Decode; Reconnect/Gating/Filter bleiben beim Aufrufer.
- AlchemyWebsocketService (weiter in App) nutzt jetzt den Core-Client via Factory:
  baut Filter aus getrackten Trader-Wallets, konsumiert OnLog, triggert Poll.
  ExecuteAsync-Reconnect/Backoff/Gating unverändert. Verhaltensneutral.
- Factory in DI registriert.
- Build 0 Fehler.

Naechster Teil: Modul-Listener (eigener Key+Filter) nach Modul-Umzug.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-01 22:15:34 +02:00
RichardandClaude Opus 4.8 f5e7eaf2d5 Phase 5.3a: MarketSyncService in den Core
- Nach dem TradingState-Split nutzt MarketSyncService nur noch Core-State
  (MarketCache) + IMarketRepository + Core-API-Service -> sauber in den Core.
- Ungenutzten Shim-Import entfernt. Build 0 Fehler.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-01 20:31:35 +02:00
RichardandClaude Opus 4.8 f8d395b2a3 Phase 5.2: TradingState-Split (Core-State vs. CopyTradingState)
- Core TradingState (in Core): globale Schalter, Accounts, MarketCache, GlobalPnl.
- Neuer CopyTradingState (im Modul): Traders, MasterTraderPositions,
  TraderAnalyticsCache, TotalCopyTrades/GetNextTradeId, PendingOrderTimestamps,
  SixSharesMinimum.
- 10 Konsumenten umgestellt (Program, frm_main, CopyTradingEngine,
  TraderMonitor, Alchemy, WSS, Snapshot, StartupHydration, beide Analytics-Jobs):
  Modul-Felder von _state.* auf _copyState.* umgeleitet, CopyTradingState via DI.
- Rein mechanische Feld-Umleitung, keine Logikänderung. Build 0 Fehler.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-01 20:09:50 +02:00
RichardandClaude Opus 4.8 55050a19e5 Phase 5.1: Modul-Modelle in das CopyTrading-Modul
- TrackedTrader, TraderAnalyticsResult, MasterTraderHistoryRecord nach
  src/PolyTrader.Modules.CopyTrading/Models/ (Namespace beibehalten).
- Ungenutzte Shim-/DB-Usings entfernt (BsonId kommt transitiv via Core).
- Build bestätigt: kein Core-Code referenziert diese Modelle (saubere Grenze).
- Build 0 Fehler. Voraussetzung für den CopyTradingState (5.2).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-01 19:59:40 +02:00
RichardandClaude Opus 4.8 0ffc0413c8 Phase 4.7: MullvadVpnService + ThreemaService in den Core
- Beide Services nach Core (nutzen nur TerminalLogger/ServerSettings/JobManager,
  keine DB/TradingState/Modul-Typen).
- Threema-ProjectReference von App -> Core umgehängt (App nutzte die Lib nur
  über ThreemaService).
- Microsoft.Extensions.Hosting.Abstractions als Core-Paket (BackgroundService).
- Toten Stub services/mullvad.cs gelöscht; Mullvad-DB-Usings entfernt.
- Build 0 Fehler.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-01 19:51:52 +02:00
RichardandClaude Opus 4.8 9c068b448e Phase 4.6a: CopySignal + PolymarketApiService in den Core
- CopySignal als generischer Core-Typ (Namespace PolyTraderSharp.Models beibehalten).
- PolymarketApiService nach Core (nutzt nur TerminalLogger + HttpClient,
  keine DB); ungenutzte DB-Usings entfernt.
- Build 0 Fehler.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-01 19:47:28 +02:00
bergmandClaude Opus 4.8 a1ce3fcbbc Phase 4.4: IPolyTraderModule-Contract im Core
- Modul-Vertrag (Name, DbPrefix, RegisterServices, StartAsync/StopAsync)
  unter src/PolyTrader.Core/Modularity/.
- UI-Teil (RegisterUi/IModuleUiHost) bewusst auf Phase 5 vertagt.
- Microsoft.Extensions.Configuration.Abstractions als Core-Paket.
- Build 0 Fehler.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-01 18:35:53 +02:00
bergmandClaude Opus 4.8 8c126cd1ba Phase 4.3: ServerSettings in den Core verschoben
- ServerSettings-Model nach src/PolyTrader.Core/Models/ (Namespace beibehalten).
- Keine DB-Abhängigkeit; reines Verschieben. Build 0 Fehler.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-01 18:34:26 +02:00
bergmandClaude Opus 4.8 eebe992feb Phase 4.2: PolymarketClobClient in den Core verschoben
- CLOB-Client nach src/PolyTrader.Core/Services/ (Namespace beibehalten).
- Nutzt keinerlei DB/Shim (verifiziert) -> DB-Usings entfernt.
- Nethereum.Web3 6.1.0 als Core-Paket (EIP712-Signing).
- Reines Verschieben, KEINE Logikänderung (clob.md); Build 0 Fehler.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-01 16:58:44 +02:00
bergmandClaude Opus 4.8 9039af8d5e Phase 4.1: Basis-Infrastruktur in den Core (Logging, JobManager)
- TerminalLogger, JobManager, JobStatusRow nach Core verschoben
  (Namespaces PolyTraderSharp.Services/.Models beibehalten).
- TerminalLogger: ungenutzte DB-Usings entfernt.
- Toten Stub services/logging.cs (internal class Logging) gelöscht.
- Build 0 Fehler.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-01 16:53:38 +02:00
bergmandClaude Opus 4.8 ed5d6e35e0 Phase 3b: Repository-Schicht im Core (Interfaces + Mongo-Impl + DI)
- Interfaces: IAccountRepository, IMarketRepository, IPositionRepository
  (IPositionRepository kapselt das Collection-per-Account-Muster).
- Mongo-Implementierungen bilden die bisherige Shim-Semantik 1:1 mit direkten
  MongoDB.Driver-Aufrufen nach (kein App-Shim-Bezug im Core).
- AddCorePersistence()-Erweiterung + Registrierung in Program.cs.
- Noch keine Call-Sites umgestellt; Build 0 Fehler.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-01 16:29:51 +02:00
bergmandClaude Opus 4.8 8b3264f240 Phase 3a: Core-Domänenmodelle in den Core verschoben
- AccountState, Position, MarketData nach src/PolyTrader.Core/Models/
  (Namespace PolyTraderSharp.Models beibehalten → keine Consumer-Änderung).
- AccountState: ungenutzte usings (MongoDB.Driver, PolyTraderSharp.Extensions)
  entfernt (Core darf App-Shim nicht referenzieren).
- MongoDB.Driver 2.24.0 als Core-Paket (für BsonId-Attribute).
- Build 0 Fehler.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-01 16:27:28 +02:00
bergmandClaude Opus 4.8 e312fbbaa7 Phase 2: Konfiguration externalisieren (appsettings.json + IOptions)
- Neue Core-Klasse DatabaseOptions (Sektion "Database"), gebunden via IOptions.
- appsettings.json im App-Projekt (Mongo-Connection + DB-Name), wird in den
  Output kopiert.
- Program.cs: hart codierte "mongodb://localhost:27017" und "PolyTraderDB"
  durch konfigurierte Werte ersetzt.
- Startup-Cleanup-Hack aus dem Kopf von Main() entfernt und gekapselt nach
  dem Host-Build über die konfigurierte DB neu verankert.
- Solution-Build 0 Fehler; appsettings.json im Output verifiziert.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-01 16:22:37 +02:00
bergmandClaude Opus 4.8 4f130ff6dd Phase 1: Multi-Projekt-Gerüst (Core / Modules.CopyTrading / App)
- WinForms-Projekt umbenannt zu PolyTrader.App (AssemblyName=PolyTrader.App,
  RootNamespace bleibt PolyTraderSharp → .resx/Namespaces intakt).
- Neue leere Class-Libraries: src/PolyTrader.Core, src/PolyTrader.Modules.CopyTrading
  (net8.0-windows; CopyTrading mit UseWindowsForms für spätere UI-Tabs).
- Referenzen: App → Core + CopyTrading; CopyTrading → Core; Core → nichts.
- App-csproj: src/** vom Globbing ausgeschlossen (keine Glob-Kollision).
- Noch KEIN Code verschoben — App unverändert lauffähig.
- Solution-Build: alle 4 Projekte, 0 Fehler.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-01 15:14:26 +02:00