From 48c662a699da11cf4192ba9a917b29a92ef51278 Mon Sep 17 00:00:00 2001 From: Richard Date: Tue, 28 Jul 2026 10:32:05 +0200 Subject: [PATCH] @ R3-Vorbereitung: --db-version-Diagnose + EF-Strategie festgelegt - Program: --db-version gibt die DB-Serverversion aus (fuer EF-ServerVersion-Pin) - Bestaetigt: MariaDB 11.8.6 -> Pin wie PolytraderSharp (MariaDbServerVersion 11.8.6) - docs/ARCHITECTURE.md: R3-Strategie fixiert (EF-Migrationen extern, Verbindung aus appsettings.Local.json) Co-Authored-By: Claude Opus 4.8 @ --- Program.cs | 25 +++++++++++++++++++++++++ docs/ARCHITECTURE.md | 13 ++++++++++--- 2 files changed, 35 insertions(+), 3 deletions(-) diff --git a/Program.cs b/Program.cs index 4b0f214..d292cf9 100644 --- a/Program.cs +++ b/Program.cs @@ -32,6 +32,13 @@ internal static class Program return; } + // Diagnose: gibt die MySQL/MariaDB-Serverversion aus (für das EF-ServerVersion-Pinning). + if (args.Length > 0 && string.Equals(args[0], "--db-version", StringComparison.OrdinalIgnoreCase)) + { + RunDbVersion(); + return; + } + ApplicationConfiguration.Initialize(); var modules = new List { new CongressTradingModule() }; @@ -153,6 +160,24 @@ internal static class Program }); } + /// Diagnose: öffnet die DB (aus settings.json) und gibt die Serverversion aus. Kein UI. + private static void RunDbVersion() + { + var settings = new SettingsService(); + settings.Load(); + var conn = settings.Settings.Database.BuildConnectionString(); + try + { + using var c = new MySqlConnector.MySqlConnection(conn); + c.Open(); + Console.WriteLine($"ServerVersion: {c.ServerVersion}"); + } + catch (Exception ex) + { + Console.WriteLine($"FEHLER: {ex.GetType().Name}: {ex.Message}"); + } + } + /// /// Headless-Smoke-Test: baut den Host, registriert Views + Modul-UI und konstruiert jede /// registrierte View sowie den Launcher – ohne Message-Loop. Gibt die Fehleranzahl zurück. diff --git a/docs/ARCHITECTURE.md b/docs/ARCHITECTURE.md index f7773dc..bf18cbb 100644 --- a/docs/ARCHITECTURE.md +++ b/docs/ARCHITECTURE.md @@ -88,9 +88,16 @@ IBKRTrader.App (WinExe, Root) – Generic Host + Shell (Launcher) + C - [ ] **Offen (R4/R5):** Worker von `WorkerEngine`/`IWorker` auf `IHostedService` umstellen (aktuell noch WorkerEngine) ### R3 – Persistenz auf EF Core -- [ ] `AddCorePersistence` + `CoreDbContext` + Entities + EF-Repos (core_) -- [ ] Modul-DbContext (ct_) im CongressTrading-Projekt -- [ ] Dapper/manuelle Migrationen entfernen +**Festgelegt:** EF-Migrationen **extern** (wie PolytraderSharp) – Schema per `dotnet ef database update`, +App legt keine Tabellen zur Laufzeit an. Server: **MariaDB 11.8.6** (via `--db-version` bestätigt) → +Pin `new MariaDbServerVersion(new Version(11, 8, 6))`. Verbindung aus `appsettings.Local.json`. +- [x] `--db-version`-Diagnose (Serverversion für den EF-Pin) +- [ ] `Configuration/DatabaseOptions` (aus appsettings.Local.json) + `DatabaseServerVersion`-Pin +- [ ] `AddCorePersistence` + `CoreDbContext` + Entities + EF-Repos (core_position, core_trade_history, core_budget, core_worker_log, core_settings) +- [ ] Consumer umstellen: `PortfolioService`, `BudgetService`, `TradeHistoryService`, `WorkerBase`-Log, IBKR +- [ ] Modul-DbContext (ct_) im CongressTrading-Projekt + EF-Repo +- [ ] EF-Migrationen erzeugen (`dotnet ef migrations add`); Dapper + manuelle Migrationen entfernen +- Hinweis: nur build-verifizierbar (Unit-Tests laufen ohne DB); Schema-Anwendung erfolgt extern ### R4 – Trading-Kern einфügen - [ ] Risk/Execution/Portfolio/Broker-Seam nach Core/Trading (aus Phase 3 portiert)