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

46 lines
2.8 KiB
Markdown

# 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)**