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 @@ +