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 <noreply@anthropic.com>
This commit is contained in:
bergm
2026-07-01 18:35:53 +02:00
co-authored by Claude Opus 4.8
parent 8c126cd1ba
commit a1ce3fcbbc
2 changed files with 41 additions and 0 deletions
@@ -0,0 +1,40 @@
using System.Threading;
using System.Threading.Tasks;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
namespace PolyTrader.Core.Modularity
{
/// <summary>
/// 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.
/// </summary>
public interface IPolyTraderModule
{
/// <summary>Eindeutiger Anzeigename des Moduls, z.B. "CopyTrading".</summary>
string Name { get; }
/// <summary>
/// Namespace-Präfix für die DB-Objekte des Moduls (z.B. "ct_"), damit sich Module
/// nicht in die Quere kommen.
/// </summary>
string DbPrefix { get; }
/// <summary>
/// Registriert die Services/Jobs des Moduls im DI-Container. Wird beim App-Start
/// aufgerufen, bevor der Host gebaut wird.
/// </summary>
void RegisterServices(IServiceCollection services, IConfiguration configuration);
/// <summary>Wird nach der Core-Hydration gestartet (kein Anlaufen gegen leeren State).</summary>
Task StartAsync(CancellationToken cancellationToken);
Task StopAsync(CancellationToken cancellationToken);
}
}
@@ -9,6 +9,7 @@
<ItemGroup> <ItemGroup>
<PackageReference Include="MongoDB.Driver" Version="2.24.0" /> <PackageReference Include="MongoDB.Driver" Version="2.24.0" />
<PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="8.0.0" /> <PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="8.0.0" />
<PackageReference Include="Microsoft.Extensions.Configuration.Abstractions" Version="8.0.0" />
<PackageReference Include="Nethereum.Web3" Version="6.1.0" /> <PackageReference Include="Nethereum.Web3" Version="6.1.0" />
</ItemGroup> </ItemGroup>