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:
@@ -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>
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user