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>
@
This commit is contained in:
Richard
2026-07-27 09:58:49 +02:00
parent ebeb035e92
commit 9abad277c2
7 changed files with 253 additions and 7 deletions
+13 -7
View File
@@ -3,7 +3,8 @@ trigger: always_on
---
Projektname: IBKRTrader
Ziel: Modulares, hochperformantes C# Trading-Framework (.NET 8) für automatische Aktien-Strategien mit Interactive Brokers API.
Ziel: Modulares, hochperformantes C# Trading-Framework (.NET 10) für automatische Aktien-Strategien mit Interactive Brokers API.
Vorbild-Konzept: Polytrader (Core + unabhängige Module + Launcher, der die Fenster der einzelnen Module öffnet).
Strikte Architektur-Regeln (immer einhalten):
Harter Core + beliebig viele unabhängige Module
@@ -16,16 +17,21 @@ Keine gegenseitigen Blockierungen alles thread-sicher und performant
Technik (fest):
C# .NET 8 WinForms
MySQL (bergisnu_db0 / bergisnu_0 / o5/A49+f}:Da / larx.your-database.de)
IBKR TWS/Gateway API
C# .NET 10 WinForms
MySQL Zugangsdaten NUR in settings.json (gitignored), NIE im Repo/Code/Doku hinterlegen
IBKR TWS/Gateway API (Paper: Port 4002, Live: Port 4001 Umschaltung über TradingSettings.Mode)
Interne REST-API + lokaler Webserver (für späteres Web-UI)
Settings: settings.json + SettingsWorker.json
Settings: settings.json (Vorlage: settings.example.json)
Logging: RichTextBox (rtb_logs) + Dateien unter Logs\[Modul]\[Level]-dd-MM-yy.txt (Info/Warn/Error)
Tests: eigenes Projekt IBKRTrader.Tests (xUnit + NSubstitute + FluentAssertions), NUR Unit-Tests,
alles Externe (DB/IBKR/Scraper) gemockt. DoD jeder Phase: `dotnet test` grün + Build sauber.
Bereits vorhandene UI-Elemente (müssen verwendet werden):
UI-Grundmodell (Launcher-Prinzip nach Polytrader):
TabControl mit Tabs: Dashboard, Trade History, Settings (PropertyGrid), Logs (rtb_logs), Workers/Services (dgv_workerlist), CongressTrading
LauncherForm = Basis-Fenster. Enthält: Core-Status/Steuerung ("Trading aktivieren", Paper/Live),
Workers/Services (dgv_workerlist), Logs (rtb_logs), Settings (PropertyGrid) und eine Modul-Liste.
Jedes Modul wird als EIGENSTÄNDIGES Fenster aus dem Launcher geöffnet (nicht als Tab).
Der Launcher trackt offene Fenster (Key → Form) und fokussiert bei erneutem Öffnen.
dgv_workerlist Spalten: Active | Type | Module | Workername | Last Runtime | Next Runtime | Run Every | Info
Type = "Worker" oder "Service" (Service = permanent laufend)