Files
RichardandClaude Opus 5 0a72ea7e28 Deploymentcenter-Integration (Schritte 0-8 des Konzepts)
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>
2026-08-22 10:44:56 +02:00
..
@
2026-07-29 09:47:06 +02:00
@
2026-07-29 09:47:06 +02:00

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_KEY oder Datei master.key) für die at-rest-Verschlüsselung künftiger Credentials.