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>
46 lines
2.8 KiB
Markdown
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)**
|