Phase 6 (Stufe 3): CopyTrading-Modul auf EF/MySQL umschaltbar

- CopyTradingDbContext (mod_copytrading_* Tabellen) + Design-Time-Factory
- EF-Repos: CopyTradeLog, AccountSettings, TrackedTrader, MasterTraderHistory
- Neue Repo-Contracts ITrackedTraderRepository + IMasterTraderHistoryRepository
  (loest die Collection-Inkonsistenz trackers/tracked_traders auf eine Quelle auf)
- Mongo-Impls der neuen Contracts (Uebergang)
- CopyTradingModule.RegisterServices: Provider-Toggle (MySql via EF / Mongo)
- StartupHydrationService + MasterTraderAnalyticsJob nutzen die Repos statt _db
- InitialCopyTrading-Migration erstellt und auf MySQL angewendet

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Richard
2026-07-05 14:11:03 +02:00
co-authored by Claude Opus 4.8
parent d8cfdbf6be
commit 8101b79cfb
17 changed files with 1107 additions and 21 deletions
+4 -4
View File
@@ -25,6 +25,7 @@ namespace PolyTraderSharp.Services
private readonly IAccountRepository _accountRepo;
private readonly IPositionRepository _positionRepo;
private readonly ICopyTradingAccountSettingsRepository _accountSettingsRepo;
private readonly ITrackedTraderRepository _traderRepo;
private readonly IMongoDatabase _db;
private readonly TerminalLogger _logger;
@@ -34,6 +35,7 @@ namespace PolyTraderSharp.Services
IAccountRepository accountRepo,
IPositionRepository positionRepo,
ICopyTradingAccountSettingsRepository accountSettingsRepo,
ITrackedTraderRepository traderRepo,
IMongoDatabase db,
TerminalLogger logger)
{
@@ -42,6 +44,7 @@ namespace PolyTraderSharp.Services
_accountRepo = accountRepo;
_positionRepo = positionRepo;
_accountSettingsRepo = accountSettingsRepo;
_traderRepo = traderRepo;
_db = db;
_logger = logger;
}
@@ -65,10 +68,7 @@ namespace PolyTraderSharp.Services
HydrateAccountSettings(accounts);
// Trader (TrackedTrader) sind aktuell noch modulnah; bis zum Trader-Repo in
// Phase 5 direkt aus der "trackers"-Collection geladen.
var tradersCol = _db.GetCollection<TrackedTrader>("trackers");
foreach (var trd in tradersCol.Find(_ => true).ToList())
foreach (var trd in _traderRepo.GetAll())
{
_copyState.Traders[trd.Id] = trd;
}