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>
This commit is contained in:
@@ -0,0 +1,59 @@
|
||||
# Paket 4: Supervisor & Accounting (KI-Berichte, PDF-/CSV-Export & Steuerjournal) — Erfolgreich Abgeschlossen
|
||||
|
||||
## Status: Abgeschlossen (Build 0 Fehler, 529 Tests bestanden)
|
||||
|
||||
### 1. Übersicht & Ziel
|
||||
In Paket 4 wurden die Funktionen des KI-Supervisors (`PolyTrader.Modules.Supervisor`) und der Finanzbuchhaltung / BWA (`PolyTrader.Modules.Accounting`) aus der Desktop-GUI (`SupervisorWindow.axaml` und `AccountingWindow.axaml`) vollständig in das WebInterface portiert.
|
||||
|
||||
Damit verfügt das WebInterface nun über einen vollwertigen AI-Copilot-Chat (mit Profilen und Tool-Invocations), Dossier-Inspektor, Archiv für generierte Berichte, Counterfactual-Analysen (Vergleich abgelehnter Trades mit tatsächlichem Marktausgang), eine offizielle BWA-Periodenabrechnung mit EZB-Währungsumrechnung (USDC / USD / EUR), direkte PDF- und CSV-Downloads sowie ein durchsuchbares und paginiertes Blockchain-Ledger-Journal.
|
||||
|
||||
### 2. Implementierte Komponenten
|
||||
|
||||
#### Backend Endpoints
|
||||
- **`src/PolyTrader.Web/Endpoints/SupervisorEndpoints.cs`**:
|
||||
- `GET /api/modules/supervisor/profiles`: Verfügbare Supervisor-Profile (`Allgemein`, `Technik`, `CopyTrading`, `ResolutionFarming`).
|
||||
- `POST /api/modules/supervisor/ask`: Interaktive Anfrage an den LLM-Agenten (`SupervisorAgent`), Tool-Invocations, Token-Zählung und automatische Archivierung als Bericht.
|
||||
- `GET /api/modules/supervisor/reports`: Gespeicherte Supervisor-Berichte im Archiv (paginiert / limitiert).
|
||||
- `GET /api/modules/supervisor/reports/{id}`: Volltext und Metadaten eines einzelnen Berichts.
|
||||
- `GET /api/modules/supervisor/dossiers`: Übersicht der analysierten Trading-Signale mit Entscheidungen und Begründungen.
|
||||
- `GET /api/modules/supervisor/dossiers/{signalId}`: Vollständiges Trade-Dossier mit Markdown-Rendering (`DossierBuilder.ToMarkdown`).
|
||||
- `GET /api/modules/supervisor/counterfactuals`: Realitäts-Abgleich für abgelehnte Signale (Hypothetischer PnL je Share).
|
||||
- **`src/PolyTrader.Web/Endpoints/AccountingEndpoints.cs`**:
|
||||
- `GET /api/modules/accounting/statement`: Aggregierte BWA-Periodenabrechnung (Anfangs-/Endbestand, Handelsvolumen, Ein-/Auszahlungen, Gebühren, Netto-Ergebnis) mit FX-Umrechnung (USDC, USD, EUR).
|
||||
- `GET /api/modules/accounting/export/pdf`: Direkter Binärstream (`application/pdf`) für die druckreife Periodenabrechnung (`PdfExporter.Render`).
|
||||
- `GET /api/modules/accounting/export/csv`: Direkter CSV-Download (`text/csv`) aller Ledger-Einträge des Zeitraums (`CsvExporter.Ledger`).
|
||||
- `GET /api/modules/accounting/ledger`: Buchungsjournal mit Suche (Markt, TxHash, Event) und Server-Paginierung.
|
||||
- `GET /api/modules/accounting/runs`: Historie der Blockchain-Ingestion-Läufe inklusive Soll-Ist-Saldendifferenz.
|
||||
- `POST /api/modules/accounting/ingest`: Manueller Start eines Ingestions-Laufs (Live oder Backfill).
|
||||
- **`src/PolyTrader.Web/Hosting/WebUiHostingExtensions.cs`**:
|
||||
- Registrierung von `MapSupervisorEndpoints()` und `MapAccountingEndpoints()`.
|
||||
|
||||
#### Frontend
|
||||
- **`src/PolyTrader.Web/wwwroot/index.html`**:
|
||||
- Neue Navigationspunkte "Supervisor" und "Accounting" in der Header-Leiste.
|
||||
- View `#view-supervisor` mit 4 Sub-Tabs:
|
||||
1. *AI Copilot Chat*: Interaktiver Chat mit Preset-Prompts, Profil- und Modell-Auswahl, Tool-Call-Details.
|
||||
2. *Berichte-Archiv*: Tabelle aller generierten Supervisor-Berichte mit Volltext-Ansicht.
|
||||
3. *Signal-Dossiers*: Aufgezeichnete Signale mit One-Click-Dossier-Inspektor.
|
||||
4. *Counterfactuals*: Analyse abgelehnter Trades vs. Wirklichkeit.
|
||||
- View `#view-accounting` mit 3 Sub-Tabs:
|
||||
1. *BWA & Periodenabrechnung*: Datumsfilter, Währungswahl (USDC/USD/EUR), 4 KPI-Karten, monatliche Tabelle, PDF- und CSV-Export-Buttons.
|
||||
2. *Ledger-Journal*: Durchsuchbare und paginierte Tabelle aller On-Chain- und Trade-Transaktionen mit Polygonscan-Links.
|
||||
3. *Sync & Ingest Läufe*: Status der Datenabrufe und Dialog zum manuellen Start eines Blockchain-Syncs.
|
||||
- Universelles Modal `#modalReport` zur formatierten Darstellung von Langtext-Berichten und Markdown-Signal-Dossiers.
|
||||
- **`src/PolyTrader.Web/wwwroot/css/app.css`**:
|
||||
- Chat-Box-Layout, Prompt-Presets, User- und Assistant-Chat-Bubbles, einklappbare Tool-Details, Währungsauswahl-Pills (`.currency-pills`), formatierte Markdown-Boxen (`.markdown-pre`).
|
||||
- **`src/PolyTrader.Web/wwwroot/js/app.js`**:
|
||||
- Chat-Handling inklusive Streaming/Asynchron-Feedback, Bubble-Rendering und Fehlertoleranz.
|
||||
- Abruf und Anzeige von Berichten, Signal-Dossiers und Counterfactuals.
|
||||
- BWA-Berechnung mit Währungswechsel, PDF/CSV-Download-Trigger.
|
||||
- Paginierung und Suche im Ledger-Journal sowie Blockchain-Sync-Trigger.
|
||||
|
||||
#### Tests & Verifikation
|
||||
- **`tests/PolyTrader.Tests/WebUi/SupervisorAndAccountingEndpointsTests.cs`**:
|
||||
- 8 Unit-Tests für SupervisorProfiles, AskRequest-Validierung, Report-Serialisierung, Counterfactual-Metriken, Währungsumrechnung (USDC/USD/EUR), BWA-Saldenlogik, Ledger-Suche/-Paginierung und IngestRun-Tracking.
|
||||
- Gesamtergebnis Testlauf: **529 von 529 Tests bestanden (100% Erfolgsquote, 0 Fehler)**.
|
||||
- Debug-Build: **Erfolgreich ausgeführt (0 Fehler)**.
|
||||
|
||||
---
|
||||
Nächstes Paket: **Paket 5: Feinschliff & End-to-End-Audit** (Abschluss-Audit aller Web-Routen, Konsistenzprüfung Desktop vs. Web, Bereinigung temporärer Artefakte).
|
||||
Reference in New Issue
Block a user