From a1ce3fcbbcf2b6eee756d2665e3510e697c9af4f Mon Sep 17 00:00:00 2001 From: bergm Date: Wed, 1 Jul 2026 18:35:53 +0200 Subject: [PATCH] Phase 4.4: IPolyTraderModule-Contract im Core - Modul-Vertrag (Name, DbPrefix, RegisterServices, StartAsync/StopAsync) unter src/PolyTrader.Core/Modularity/. - UI-Teil (RegisterUi/IModuleUiHost) bewusst auf Phase 5 vertagt. - Microsoft.Extensions.Configuration.Abstractions als Core-Paket. - Build 0 Fehler. Co-Authored-By: Claude Opus 4.8 --- .../Modularity/IPolyTraderModule.cs | 40 +++++++++++++++++++ src/PolyTrader.Core/PolyTrader.Core.csproj | 1 + 2 files changed, 41 insertions(+) create mode 100644 src/PolyTrader.Core/Modularity/IPolyTraderModule.cs diff --git a/src/PolyTrader.Core/Modularity/IPolyTraderModule.cs b/src/PolyTrader.Core/Modularity/IPolyTraderModule.cs new file mode 100644 index 0000000..328a158 --- /dev/null +++ b/src/PolyTrader.Core/Modularity/IPolyTraderModule.cs @@ -0,0 +1,40 @@ +using System.Threading; +using System.Threading.Tasks; +using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.DependencyInjection; + +namespace PolyTrader.Core.Modularity +{ + /// + /// Vertrag für ein PolyTrader-Modul. Module referenzieren nur den Core, niemals + /// einander. Ein Modul kapselt einen eigenständigen Funktionsbereich (z.B. Copytrading) + /// mit eigenen Services, Jobs, DB-Objekten und – ab Phase 5 – eigenen UI-Tabs und + /// Settings-Sektionen. + /// + /// Hinweis: Der UI-Beitrag (RegisterUi/IModuleUiHost) wird in Phase 5 ergänzt, sobald + /// die konkrete UI-Integration (Tabs + Settings-Sektion) feststeht. Bis dahin deckt der + /// Contract Lebenszyklus und Service-Registrierung ab. + /// + public interface IPolyTraderModule + { + /// Eindeutiger Anzeigename des Moduls, z.B. "CopyTrading". + string Name { get; } + + /// + /// Namespace-Präfix für die DB-Objekte des Moduls (z.B. "ct_"), damit sich Module + /// nicht in die Quere kommen. + /// + string DbPrefix { get; } + + /// + /// Registriert die Services/Jobs des Moduls im DI-Container. Wird beim App-Start + /// aufgerufen, bevor der Host gebaut wird. + /// + void RegisterServices(IServiceCollection services, IConfiguration configuration); + + /// Wird nach der Core-Hydration gestartet (kein Anlaufen gegen leeren State). + Task StartAsync(CancellationToken cancellationToken); + + Task StopAsync(CancellationToken cancellationToken); + } +} diff --git a/src/PolyTrader.Core/PolyTrader.Core.csproj b/src/PolyTrader.Core/PolyTrader.Core.csproj index f6f82c4..52db334 100644 --- a/src/PolyTrader.Core/PolyTrader.Core.csproj +++ b/src/PolyTrader.Core/PolyTrader.Core.csproj @@ -9,6 +9,7 @@ +