Supervisor S-3-Rest + RF-Designer-Konvertierung: Counterfactual, Tagesbericht, UI
RF-UI designerfaehig (Richards Vorgabe, letzter code-only-Altbestand):
- ResolutionFarmingMainForm auf partial + .Designer.cs umgestellt (4 Tabs Kandidaten/
Positionen/Historie/Settings, alle Controls im Designer; Verhalten unveraendert).
S-3 Counterfactual ('Was waere aus abgelehnten BUYs geworden?'):
- CounterfactualJob (alle 6h, API-gedrosselt): nimmt Rejected-BUY-Entscheidungen mit
abgelaufenem MarketEndDate aus dem Journal, prueft die Marktaufloesung
(ICounterfactualResolutionSource; live = Adapter um CheckMarketResolutionAsync) und
speichert IsWinner + hypothetischen PnL/Share (CounterfactualMath, pur) nach
sup_counterfactuals (unique je DecisionId -> idempotent). Migration generiert+angewendet.
- Agent-Tool query_counterfactuals + UI-Tab 'Counterfactual' (via Designer).
S-3 Threema-Tagesbericht:
- DailyReportService: taeglich zur konfigurierten Stunde (OPT-IN via
POLYTRADER_SUPERVISOR_DAILY=0-23) laesst der Agent einen 24h-Kurzbericht erstellen
(KPIs je Modul, Fehler, Reject-Haeufungen), sendet via Threema und legt ihn als
sup_report ab. Ohne OpenRouter-Key: stiller Skip mit Log.
Tests: +7 (CounterfactualMath, Job aufgeloest/unaufgeloest/idempotent, Tagesbericht
mit/ohne Key). Build 0 Fehler, 367 Tests gruen, --smoke-ui alle 5 Views gruen.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
b7b2a141e3
commit
c7668170a4
@@ -30,7 +30,8 @@ namespace PolyTrader.Modules.Supervisor
|
||||
sp.GetRequiredService<PolyTrader.Core.Persistence.IDecisionJournal>(),
|
||||
sp.GetRequiredService<PolyTrader.Core.Persistence.IOrderEventLog>(),
|
||||
sp.GetRequiredService<PolyTrader.Core.Persistence.ITradeLogRepository>(),
|
||||
sp.GetRequiredService<DossierService>()));
|
||||
sp.GetRequiredService<DossierService>(),
|
||||
sp.GetRequiredService<Persistence.ISupervisorCounterfactualRepository>()));
|
||||
services.AddSingleton<Agent.IChatCompletionClient>(_ =>
|
||||
new Agent.OpenRouterClient(new System.Net.Http.HttpClient { Timeout = TimeSpan.FromMinutes(3) }));
|
||||
services.AddSingleton<Agent.SupervisorAgent>();
|
||||
@@ -40,6 +41,13 @@ namespace PolyTrader.Modules.Supervisor
|
||||
services.AddDbContextFactory<Persistence.SupervisorDbContext>(o =>
|
||||
o.UseMySql(conn, PolyTrader.Core.Configuration.DatabaseServerVersion.Value));
|
||||
services.AddSingleton<Persistence.ISupervisorReportRepository, Persistence.EfSupervisorReportRepository>();
|
||||
services.AddSingleton<Persistence.ISupervisorCounterfactualRepository, Persistence.EfSupervisorCounterfactualRepository>();
|
||||
|
||||
// S-3: Counterfactual-Job (abgelehnte BUYs vs. Marktausgang) + täglicher Threema-Bericht
|
||||
// (OPT-IN via POLYTRADER_SUPERVISOR_DAILY = Stunde 0–23).
|
||||
services.AddSingleton<Counterfactual.ICounterfactualResolutionSource, Counterfactual.ApiCounterfactualResolutionSource>();
|
||||
services.AddHostedService<Counterfactual.CounterfactualJob>();
|
||||
services.AddHostedService<Services.DailyReportService>();
|
||||
|
||||
// S-4: MCP-Light – exponiert die read-only Tool-Registry für externe KI-Clients
|
||||
// (z. B. Claude Code). OPT-IN via POLYTRADER_MCP_PORT, bindet nur 127.0.0.1.
|
||||
|
||||
Reference in New Issue
Block a user