Bindet Lizenz, Watchdog, Fehler-Stream, UpdateService und Erstinstallation an
das Deploymentcenter 2.5.1 an. Einbauort ist IBKRTrader.Hosting - den Host
teilen sich Shell und Daemon.
Projekt-Befunde aus dem Konzept vorab bereinigt:
P1 Echte DB-Zugangsdaten als Vorgabewerte in AppSettings -> Platzhalter.
Das alte Passwort steht weiterhin in der Git-Historie und ist als
kompromittiert zu behandeln (Rotation ist Nutzer-Aktion).
P2 AppPaths fiel unter Windows auf /etc/ibkrtrader zurueck, was .NET zu
C:\etc\ibkrtrader aufloest. Jetzt %ProgramData%\IBKRTrader.
P3 Globale Ausnahmebehandler (AppDomain / TaskScheduler) - vorher gab es
keinen Logeintrag, wenn der Prozess unbehandelt wegbrach.
P4 Version einmal zentral in Directory.Build.props statt zweimal hartkodiert.
Bewusste Abweichungen vom DC-Leitfaden, beide fuer ein handelndes System:
- Lizenz-Urteil fuehrt zum Sperrbetrieb (TradingEnabled=false) statt zu
Environment.Exit(1). Keine neuen Einstiege, aber Risiko-, Exit- und
Buchhaltungslogik laufen weiter.
- exitCurrentApp bleibt immer false; der Aufrufer beendet geordnet.
Das SDK haengt als Cross-Repo-ProjectReference am Schwester-Repo
Deploymentcenter (Interim, siehe Konzept 2.2). Damit ist P5 offen: die
Gitea-CI checkt das Schwester-Repo nicht aus und wird rot, bis der Bezug auf
ein NuGet-Paket umgestellt ist.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
IBKRTrader – DB-Provisioning
Die App legt das DB-Schema nicht zur Laufzeit an (EF-Migrationen werden extern angewendet). Einmalig beim Aufsetzen einer DB:
1. (Nur falls nötig) Alt-Tabellen entfernen
Wenn frühere Läufe bereits core_*/ct_*-Tabellen im alten (snake_case) Schema angelegt haben,
kollidieren sie mit dem EF-Schema. Dann einmalig ausführen:
mysql -h <host> -u <user> -p <db> < scripts/drop-app-tables.sql
⚠️ Löscht Daten in diesen Tabellen. Bei frischem Aufsetzen unkritisch.
2. Migrationen anwenden
Liest den Connection-String aus appsettings.Local.json und wendet beide Contexts an:
powershell -ExecutionPolicy Bypass -File scripts/provision-db.ps1
Voraussetzung: dotnet-ef (dotnet tool install --global dotnet-ef).
Angelegt werden: core_position, core_trade_history, core_budget, core_worker_log,
core_settings, core_ibkr_instruments, core_ibkr_market_data, core_ibkr_external_identifiers,
ct_congressMember, ct_trade sowie __EFMigrationsHistory.
Sicherheit
- DB-Passwort rotieren – das ursprüngliche liegt in der Git-Historie (Commit
ebeb035). - Optional Master-Key setzen (
IBKRTRADER_MASTER_KEYoder Dateimaster.key) für die at-rest-Verschlüsselung künftiger Credentials.