Files
PolyTraderSharp/agentspace/antigravity/paket2-abgeschlossen.md
T
RichardandClaude Opus 5 dcc764dec1
CI / Build & Tests (Linux) (push) Canceled after 0s
CI / Plattformneutralität & Hygiene (push) Canceled after 0s
WebUI: Module, Analytics und Buchhaltung als eigene Ansichten
Das WebGUI konnte bisher Dashboard, Konten, Jobs, Logs und Einstellungen.
Die vier Strategie- und Analysemodule waren nur in der Avalonia-Oberflaeche
erreichbar - wer den Server aus der Ferne bediente, sah sie nicht.

Fuenf neue Endpunktgruppen holen sie herein:

  /api/analytics                  KPIs, Equity-Kurve, PnL je Modul und Tag,
                                  durchsuchbare Trade-Historie mit Seitenlauf
  /api/modules/copytrading        Master-Trader (CRUD), offene und
                                  geschlossene Trades, Risikolimits je Konto
  /api/modules/resolutionfarming  Scanner-Kandidaten, Positionen, Historie,
                                  Farming-Parameter je Konto
  /api/modules/supervisor         Profile, Agentenfragen, Berichtsarchiv,
                                  Signal-Dossiers, Counterfactuals
  /api/modules/accounting         BWA-Periodenabrechnung, Ledger-Journal,
                                  PDF- und CSV-Export, Ingest-Laeufe

Dazu im Bestand:
- Dashboard bekommt /overview-widgets: Modul-KPIs (heute/7T/30T), auffaellige
  Trades der letzten 24 Stunden, Warnungen und Fehler des Tages, den letzten
  Supervisor-Bericht.
- Die Kontenliste zeigt 3-Tage-PnL, Winrate, Gesamtergebnis und die
  beteiligten Module statt nur Salden.
- Jobs lassen sich ueber /toggle und /state ein- und ausschalten, nicht nur
  ausloesen.

Die Oberflaeche bleibt ohne Fremdbibliotheken: alle Diagramme sind Inline-SVG,
kein CDN, kein npm. Alle neuen Pfade liegen unter /api/ und damit hinter der
bestehenden Token-Pruefung.

Zwei Fehler nebenbei behoben:

- AccountingReportService.ResolveCurrency lief in eine NullReferenceException,
  wenn der FX-Dienst nicht gesetzt war. Betrifft jeden EUR-Aufruf ohne
  geladene EZB-Kurse.
- Ein Master-Trader, dessen Name ein Apostroph enthaelt, hatte einen toten
  Loeschen-Knopf: escapeHtml laesst ' unberuehrt, und im onclick-Attribut
  beendete das Zeichen das JavaScript-Literal vorzeitig. Laengerer Text mit
  Anfuehrungszeichen konnte darueber eigenen Code einschleusen. Neu setzt
  jsArg() den Wert als JSON-Literal ein; geprueft mit
  O'Brien "quote" <b>bold</b> \ backslash.

McpLightServerTests weicht jetzt aus, wenn HttpListener mangels URL-ACL nicht
binden darf, statt den Lauf scheitern zu lassen.

Geprueft auf der Linux-Test-VM (Ubuntu 26.04, .NET 10): Build ohne Fehler,
533 von 533 Tests bestanden, alle 11 Ansichten und 15 Unteransichten geladen,
alle Endpunkte mit 200 beantwortet, Schreibwege bis in die Datenbank
nachverfolgt, PDF- und CSV-Export gueltig, SSE-Logstrom live.

Offene Befunde aus der Abnahme liegen als #532 (Kopfleiste laeuft unter
1623 px ueber), #533 (EUR-PDF ohne EZB-Kurse liefert Nullbetraege) und #534
(Einstellungen melden Erfolg trotz gescheitertem Speichern) im Bugtracker.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-10 09:17:49 +02:00

2.8 KiB

Paket 2: Analytics & Trade-Historie — Erfolgreich Abgeschlossen

Status: Abgeschlossen (Build 0 Fehler, 513 Tests bestanden)

1. Übersicht & Ziel

In Paket 2 wurde das vollständige Performance- und Analytics-System im WebUI implementiert. Die Berechnungen stützen sich direkt auf die Core-Logik PolyTrader.Core.Analytics.TradeAnalytics und den globalen ITradeLogRepository. Das WebUI verfügt nun über vollwertige, eigenständige SVG-Charts ohne externe Bibliotheken oder CDNs.

2. Implementierte Komponenten

Backend

  • src/PolyTrader.Web/Endpoints/AnalyticsEndpoints.cs:
    • GET /api/analytics mit flexiblen Query-Parametern (accountId, module, mode, days, search, winLoss, page, pageSize).
    • Automatische Ermittlung verfügbarer Konten und Module aus aktiven Daten.
    • Berechnung der 5 Kern-KPIs (Trades, Net PnL, Win-Rate %, Ø PnL/Trade, Profit-Faktor mit NoLoss-Erkennung).
    • Berechnung der 3 Chart-Datenreihen:
      • Equity-Kurve (kumulierter PnL im Zeitverlauf)
      • PnL nach Modul (Balken)
      • PnL nach Tag (Tagesbalken mit Gewinn/Verlust-Farbgebung)
    • Vollständige Paginierung, Suchfilterung (Market/Outcome) und Win/Loss-Filter für die Trade-Historie.
  • src/PolyTrader.Web/Hosting/WebUiHostingExtensions.cs:
    • Registrierung von endpoints.MapAnalyticsEndpoints().

Frontend

  • src/PolyTrader.Web/wwwroot/index.html:
    • Neuer Hauptnavigations-Eintrag "Analytics".
    • #view-analytics mit Scoped-Toolbar (Konto, Modul, Modus, Zeitraum, Schnellsuche, Aktualisieren).
    • 5-Spalten KPI-Karten (Trades, Net PnL, Win-Rate, Ø PnL/Trade, Profit-Faktor).
    • Sub-Tabs für Charts ("Equity-Kurve", "PnL nach Modul", "Tages-PnL").
    • Reaktive SVG-Chart-Container mit responsiver Skalierung.
    • Durchsuchbare und paginierte Trade-Historie-Tabelle mit Status-Badges und Paginierungskontrollen.
  • src/PolyTrader.Web/wwwroot/css/app.css:
    • Styling für Analytics-Toolbar, Filter-Dropdowns, SVG-Charts (Gitterlinien, Achsenbeschriftungen, Farbverläufe, Hover-Effekte) und Paginierung.
  • src/PolyTrader.Web/wwwroot/js/app.js:
    • Integrierte View-Steuerung (showView('analytics')).
    • loadAnalytics() mit Debounce-Suche und Filterübernahme.
    • Vektor-SVG-Rendering direkt in Vanilla-JS (renderEquitySvg, renderModuleSvg, renderDaySvg) mit Null-Linien-Erkennung und Auto-Scaling.
    • Tabellen-Renderer für paginierte Trade-Historie inklusive Vor-/Zurück-Paginierung.

Tests

  • tests/PolyTrader.Tests/WebUi/AnalyticsEndpointsTests.cs:
    • 8 Unit-Tests für Konto-Filter, Modul-Filter, Modus-Filter (Live/Demo), Zeitfenster-Filter, Volltextsuche, Win/Loss-Klassifizierung, KPI-Berechnung und SVG-Chart-Datenreihen.
    • Gesamttests der Solution: 513 bestanden.

Nächstes Paket: Paket 3: Fachmodule im WebUI (CopyTrading & ResolutionFarming)