From 3456fd97680b9d7ba39b5739bde4175483836b2b Mon Sep 17 00:00:00 2001 From: Richard Date: Mon, 6 Jul 2026 18:44:49 +0200 Subject: [PATCH] Modularisierung: WSS-/Alchemy-Listener ins Copytrading-Modul verschoben MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Beide Listener sind copytrading-spezifisch (überwachen die getrackten Master- Trader bzw. Auto-Redeem nach Copytrading-Settings) und werden jetzt vom Modul besessen statt von der App. Reiner Move, keine Logikänderung. - services/AlchemyWebsocketService.cs + services/PolymarketWssClient.cs -> src/PolyTrader.Modules.CopyTrading/Services/ (Namespace bleibt transitional). - CopyTradingModule.RegisterServices registriert nun beide Hosted Services sowie IBlockchainWssClientFactory->AlchemyWssClientFactory (Core-WSS-Infra, nur vom Copytrading-Blockchain-Listener genutzt). - Program.cs: die drei Registrierungen entfernt (WSS-Factory + 2 Hosted Services) + ungenutztes using PolyTrader.Core.Streaming. - WSS-Verbindungsinfrastruktur (AlchemyWssClient/BlockchainWss) bleibt in Core. DI-Auflösung unverändert (gleicher Container). Build grün, --smoke-ui grün. Laufzeit-Verifikation der WSS-Verbindungen: Server-Test. Co-Authored-By: Claude Opus 4.8 --- Program.cs | 4 ---- src/PolyTrader.Modules.CopyTrading/CopyTradingModule.cs | 9 +++++++++ .../Services}/AlchemyWebsocketService.cs | 0 .../Services}/PolymarketWssClient.cs | 0 4 files changed, 9 insertions(+), 4 deletions(-) rename {services => src/PolyTrader.Modules.CopyTrading/Services}/AlchemyWebsocketService.cs (100%) rename {services => src/PolyTrader.Modules.CopyTrading/Services}/PolymarketWssClient.cs (100%) diff --git a/Program.cs b/Program.cs index d6951a1..e25efc0 100644 --- a/Program.cs +++ b/Program.cs @@ -9,7 +9,6 @@ using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Options; using PolyTrader.Core.Configuration; using PolyTrader.Core.DependencyInjection; -using PolyTrader.Core.Streaming; using PolyTrader.Core.Modularity; using PolyTrader.Modules.CopyTrading; using PolyTrader.Modules.CopyTrading.Persistence; @@ -79,7 +78,6 @@ internal static class Program }; services.Configure(context.Configuration.GetSection(DatabaseOptions.SectionName)); services.AddCorePersistence(databaseOptions); - services.AddSingleton(); services.AddSingleton((IServiceProvider sp) => ServerSettings.Load("server_settings.xml")); services.AddSingleton(); services.AddSingleton(delegate(IServiceProvider sp) @@ -124,11 +122,9 @@ internal static class Program module.RegisterServices(services, context.Configuration); } - services.AddHostedService(); services.AddHostedService(); services.AddHostedService(); services.AddHostedService(); - services.AddHostedService(); services.AddHostedService((IServiceProvider sp) => sp.GetRequiredService()); services.AddHostedService((IServiceProvider sp) => sp.GetRequiredService()); services.AddSingleton(); diff --git a/src/PolyTrader.Modules.CopyTrading/CopyTradingModule.cs b/src/PolyTrader.Modules.CopyTrading/CopyTradingModule.cs index 35a21a2..e781ae5 100644 --- a/src/PolyTrader.Modules.CopyTrading/CopyTradingModule.cs +++ b/src/PolyTrader.Modules.CopyTrading/CopyTradingModule.cs @@ -7,6 +7,7 @@ using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using PolyTrader.Core.Configuration; using PolyTrader.Core.Modularity; +using PolyTrader.Core.Streaming; using PolyTrader.Modules.CopyTrading.Persistence; using PolyTrader.Modules.CopyTrading.Persistence.Ef; using PolyTrader.Modules.CopyTrading.Ui; @@ -47,11 +48,19 @@ namespace PolyTrader.Modules.CopyTrading services.AddSingleton(); services.AddSingleton(); + // WSS-Infrastruktur (Core) wird nur vom Copytrading-Blockchain-Listener genutzt. + services.AddSingleton(); + // Modul-Services (Signalquelle, Ausführung, Analytics) services.AddSingleton(); services.AddHostedService(sp => sp.GetRequiredService()); services.AddHostedService(); services.AddHostedService(); + + // WSS-Listener des Moduls: Blockchain (Alchemy → Master-Trader-Wallets) und + // Polymarket-Markt-WSS (Auto-Redeem nach Copytrading-Settings). + services.AddHostedService(); + services.AddHostedService(); } public void RegisterUi(IModuleUiHost host, IServiceProvider services) diff --git a/services/AlchemyWebsocketService.cs b/src/PolyTrader.Modules.CopyTrading/Services/AlchemyWebsocketService.cs similarity index 100% rename from services/AlchemyWebsocketService.cs rename to src/PolyTrader.Modules.CopyTrading/Services/AlchemyWebsocketService.cs diff --git a/services/PolymarketWssClient.cs b/src/PolyTrader.Modules.CopyTrading/Services/PolymarketWssClient.cs similarity index 100% rename from services/PolymarketWssClient.cs rename to src/PolyTrader.Modules.CopyTrading/Services/PolymarketWssClient.cs