Richard
261032f9f9
@
...
R3 Slice 1: EF-Core-Infrastruktur im Core + InitialCore-Migration
- Pomelo.EntityFrameworkCore.MySql 8.0.3 + EF Core Design 8.0.11 (Core), NuGet-Allowlist erweitert
- Configuration/DatabaseOptions + DatabaseServerVersion (MariaDB 11.8.6 gepinnt)
- Persistence/Entities: CorePosition, CoreTrade, CoreBudget, CoreWorkerLog, CoreSetting
- Persistence/Ef/CoreDbContext (core_-Tabellen) + Design-Time-Factory (env IBKRTRADER_MYSQL)
- DependencyInjection/AddCorePersistence (AddDbContextFactory), in Program verdrahtet
(Connection aus appsettings.Local.json)
- EF-Migration InitialCore erzeugt (5 core_-Tabellen)
- Consumer noch auf Dapper (folgt in Slice 2); Build + 30/30 Tests + smoke-ui gruen
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
@
2026-07-28 10:40:09 +02:00
Richard
48c662a699
@
...
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 <noreply@anthropic.com >
@
2026-07-28 10:32:05 +02:00
Richard
8f44c0fd82
@
...
R2: Generic Host + Modul-Vertrag + Shell-UI (PolytraderSharp-Konzept)
- Core/Modularity: neuer IModule (Name, DbPrefix, RegisterServices(services,config),
RegisterUi(host,sp), StartAsync/StopAsync, GetActivationBlocker) + ModuleView
+ IModuleUiHost + WindowMenu. Alte IModule/ModuleRegistry/WindowManager/ModuleFormBase entfernt.
- Program.cs: Host.CreateDefaultBuilder + IConfiguration (appsettings.json/.Local.json);
Core-Services registriert, Module via RegisterServices, Views via RegisterUi.
- UI: ShellUiHost (Einzelinstanz-Fenster + Fenster-Menue), LauncherForm als Shell
(Buttons je View), Core-Views Logs/Settings/Workers als eigene Fenster.
- CongressTrading auf neuen Vertrag; Worker als IWorker registriert.
- --smoke-ui Headless-Test (konstruiert jede View + Launcher).
- appsettings.Local.json gitignored.
- Tests angepasst -> 30/30 gruen; Build + Smoke-UI + App-Start verifiziert.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
@
2026-07-28 00:24:00 +02:00
Richard
c20538c8d8
@
...
R1: Umbau auf Multi-Projekt-Struktur (Vorbild PolytraderSharp)
Kurskorrektur: Vorbild ist PolytraderSharp (C#), nicht die veraltete Python-Version.
Reiner Strukturumbau, Verhalten unveraendert.
- src/IBKRTrader.Core (classlib): Core-Code + UI-Contract (ModuleFormBase, WindowManager)
- src/IBKRTrader.Modules.CongressTrading (classlib, referenziert nur Core)
- Root: IBKRTrader.App (WinExe) referenziert Core + Modul
- tests/IBKRTrader.Tests: Referenzen auf Core + Modul
- Neue .slnx; ungenutztes HtmlAgilityPack entfernt
- docs/ARCHITECTURE.md: korrigierter Ziel-Stand + R-Phasenplan
- Build + 38/38 Tests gruen; App startet
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
@
2026-07-27 20:26:25 +02:00
Richard
2ad4b55db1
@
...
Phase 3: Trading-Kern (Risk, Execution, Portfolio) mit sicherem Broker-Default
- Core/Trading/TradingModels: Signal, Order(Request/Result), RiskContext/Decision,
Account, Position, Quote, ExecutionResult, Enums (Side/OrderType/Mode)
- IBrokerClient + NullBrokerClient (sicherer Default, handelt NIE bis IBKR-Adapter verifiziert)
- RiskService (+IRiskService): Sizing nach MaxTrade%, Modul-Limit, Slippage; Buy/Sell
- PortfolioService (+IPortfolioService): core_position + core_trade_history + core_budget
- ExecutionService (+IExecutionService): Signal -> Kurs -> Konto -> Risiko -> Order -> Buchung
- TradingSettings in AppSettings (Paper/Live, TradingEnabled, Risikoparameter)
- CoreMigrations: core_position; DI-Registrierung der Trading-Services
- Tests: RiskService (11) + ExecutionService (6, NSubstitute) -> 38/38 gruen
Offen (bewusst gekapselt): echter IbkrBrokerClient gegen Client-Portal-Gateway (manuell verifizieren).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
@
2026-07-27 11:33:59 +02:00
Richard
d0bc833235
@
...
Phase 2: Launcher-UI + eigenstaendige Modul-Fenster
- Form1 -> LauncherForm (Dateien via git mv, Designer/resx angepasst)
- Modul-Tab: Karten aus ModuleRegistry mit "Fenster oeffnen"-Button je Modul
- UI/WindowManager: Fenster-Tracking (Key->Form), Re-Open fokussiert, CloseAll
- UI/ModuleFormBase: Basisklasse fuer eigenstaendige Modul-Fenster
- CongressTradingForm: DB-Kennzahlen + manueller Scrape-Trigger (Phase-4-Ausbau folgt)
- WindowManager in DI; Launcher schliesst Modul-Fenster beim Beenden
- Tests: WindowManager (6) -> 21/21 gruen; Launcher-Start verifiziert
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
@
2026-07-27 10:39:50 +02:00
Richard
af398353f0
@
...
Phase 1: Modul-System formalisiert (IModule + ModuleRegistry)
- Core/Modules/IModule.cs: Vertrag (Key, DisplayName, Description, Version,
RegisterServices, InitializeAsync, GetWorkers, CreateWindow)
- Core/Modules/ModuleRegistry.cs
- CongressTradingModule auf IModule umgestellt (instanzbasiert, Platzhalter-Fenster)
- Program.cs iteriert ueber IModule[] + Registry; Form1 initialisiert Module ueber Registry
- Testbarkeit: WorkerBase DB-Log-Seam (virtuell); CapitolTradesScraper.ParseTradesFromHtml
extrahiert (offline gegen ct_raw.html testbar)
- Tests: ModuleRegistry, CongressTradingModule, WorkerBase, CapitolTradesScraper -> 15/15 gruen
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
@
2026-07-27 10:07:47 +02:00
Richard
9abad277c2
@
...
Phase 0: Test-Fundament & Architektur-Doku
- IBKRTrader.Tests (xUnit + NSubstitute + FluentAssertions), nur Unit-Tests
- Repo-lokale NuGet.config: Test-Pakete in Allowlist ergaenzt
- Hauptprojekt: Test-Unterordner aus SDK-Globbing ausgeschlossen
- docs/ARCHITECTURE.md: Plan + Phasen-Checkliste
- grundregeln.md: .NET 10, Launcher-Modell; DB-Passwort entfernt
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
@
2026-07-27 09:58:49 +02:00