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>
90 lines
6.6 KiB
Markdown
90 lines
6.6 KiB
Markdown
# PolyTrader WebUI — Gesamtdokumentation & Architekturübersicht
|
|
|
|
## 1. Architektur & Hosting
|
|
Das WebInterface ist als eigenständiges Projekt [`PolyTrader.Web`](file:///j:/Softwareprojekte/PolytraderSharp/PolyTraderSharp/src/PolyTrader.Web/) konzipiert und wird über ASP.NET Core Kestrel auf dem Server gehostet.
|
|
|
|
- **Frontend**: Vanilla HTML5, CSS3 und modernes JavaScript (ES6+), vollständig autark ohne externe CDN-Bibliotheken (kein React, Vue, npm oder Drittanbieter-CDNs). Alle Visualisierungen (Equity-Kurve, Säulendiagramme, Donut-/Balkendiagramme) basieren auf dynamischem, responsivem Inline-SVG.
|
|
- **Backend**: ASP.NET Core Minimal APIs mit strukturierter Dependency Injection in die PolyTrader-Kern- und Modul-Services (`PolyTrader.Core`, `PolyTrader.Modules.CopyTrading`, `PolyTrader.Modules.ResolutionFarming`, `PolyTrader.Modules.Supervisor`, `PolyTrader.Modules.Accounting`).
|
|
- **Sicherheit & Auth**: Header-basierte Bearer-Token-Authentifizierung (`Authorization: Bearer <token>`) bzw. Auth-Cookie für Browser-Sessions. Automatischer Redirect auf `/login` bei ungültigen Anfragen.
|
|
|
|
---
|
|
|
|
## 2. Navigationsstruktur & Module
|
|
|
|
| Ansicht | Pfad / ID | Funktionalitäten |
|
|
|---|---|---|
|
|
| **Dashboard** | `#view-dashboard` | Globale PnL, USDC-Salden, Portfolio-Wert, Notfall-Pause, Modul-KPI-Kacheln, Notable Trades (24h), Account-Übersicht (3d PnL, Winrate, Overall PnL) |
|
|
| **Analytics** | `#view-analytics` | KPI-Cards (Trades, Winrate, Profit-Faktor, Max Drawdown, Net PnL), Pure-SVG Equity Curve, Modul-PnL-Chart, Daily PnL Bar Chart, paginierte Trade-Historie mit Volltextsuche & Filterung |
|
|
| **CopyTrading** | `#view-copytrading` | Master-Trader-Verwaltung (CRUD via Modal), Offene Positionen mit Buchgewinn ($/%) & Status, Geschlossene Trades (Paginierung & Suche), Account-spezifische Risikolimits & Eskalationsparameter |
|
|
| **Resolution Farming** | `#view-resolutionfarming` | Account-Wahlschalter, Scanner-Kandidaten (Ask, Fee, Net-Edge, Score, Status), Offene Farming-Positionen, Trade-Historie, Account-Farming-Parameter (Cluster-Limits, Whitelist/Blacklist) |
|
|
| **Supervisor** | `#view-supervisor` | AI Copilot Chat (Profile: Allgemein, Technik, CopyTrading, ResolutionFarming; Schnellabfrage-Presets; Tool-Invocations mit Parametern; Token-Zähler), Archivierte Berichte (Volltext-Modal), Signal-Dossiers (Markdown-Inspektor), Counterfactuals |
|
|
| **Accounting** | `#view-accounting` | BWA-Periodenabrechnung (Anfangs-/Endbestand, Handelsvolumen, Cashflows, Gebühren, Netto-Ergebnis), Währungswahl (USDC/USD/EUR via EZB-Kurse), PDF-Export (MigraDoc Stream), CSV-Export, Ledger-Journal (Suche & Paginierung), Sync & Ingest Historie |
|
|
| **Konten** | `#view-accounts` | Konfigurierte Polymarket-Konten, Wallet-Adressen, Demo/Live-Status, Links zu Polymarket-Profilen |
|
|
| **Jobs** | `#view-jobs` | Hintergrund-Jobs (Scheduler), Status, Intervall, Letzter Lauf, Nächster Lauf, Sofortausführung (Run Now), Live-Toggle (Aktivieren/Deaktivieren) |
|
|
| **Terminal / Logs** | `#view-logs` | Echtzeit-Logstream via Server-Sent Events (SSE), Auto-Scroll, Log-Level-Filter (Info, Warning, Error, Trade), Leeren |
|
|
| **Module** | `#view-modules` | Strategie- und Analyse-Modulübersicht mit Direkt-Startknöpfen in die Fachansichten |
|
|
| **Einstellungen** | `#view-settings` | Server-Port, Lokaler Zugriff vs. LAN/VPN, Token-Anzeige, Token-Kopieren & Neugenerierung |
|
|
|
|
---
|
|
|
|
## 3. Endpunkt-Übersicht (Minimal APIs)
|
|
|
|
### Authentifizierung & Settings
|
|
- `POST /api/auth/login`: Authentifizierung via Token, Setzen des Auth-Cookies
|
|
- `POST /api/auth/logout`: Löschen des Auth-Cookies
|
|
- `GET /api/settings/webui`: Aktuelle Servereinstellungen
|
|
- `POST /api/settings/webui`: Speichern der Servereinstellungen in `appsettings.Local.json`
|
|
- `POST /api/settings/webui/generate-token`: Generierung eines kryptografisch sicheren Tokens
|
|
|
|
### Dashboard & Konten & Jobs
|
|
- `GET /api/dashboard/summary`: Globale KPIs, Handelsmodi, Watchdog-/Alchemy-/VPN-Status
|
|
- `GET /api/dashboard/overview-widgets`: Modul-KPIs und notable Trades
|
|
- `POST /api/dashboard/trading-mode`: Umschalten von Live/Demo/Pause
|
|
- `GET /api/accounts`: Liste aller Konten mit Performance-Metriken
|
|
- `GET /api/jobs`: Liste aller Scheduler-Jobs
|
|
- `POST /api/jobs/{name}/toggle`: Job aktivieren / deaktivieren
|
|
- `POST /api/jobs/{name}/run`: Job sofort anstoßen
|
|
|
|
### Analytics
|
|
- `GET /api/analytics/kpis`: Aggregierte Kennzahlen (Winrate, Profit-Faktor, Drawdown)
|
|
- `GET /api/analytics/charts`: Zeitreihendaten für SVG-Equity-Kurve, Modul-Aufteilung und Tages-PnL
|
|
- `GET /api/analytics/trades`: Paginierte, durchsuchbare Trade-Historie
|
|
|
|
### CopyTrading
|
|
- `GET /api/modules/copytrading/traders`: Alle Master-Trader
|
|
- `POST /api/modules/copytrading/traders`: Anlegen / Bearbeiten von Master-Tradern
|
|
- `DELETE /api/modules/copytrading/traders/{id}`: Löschen eines Master-Traders
|
|
- `GET /api/modules/copytrading/open-trades`: Offene Positionen mit Buchgewinn
|
|
- `GET /api/modules/copytrading/closed-trades`: Geschlossene Trades mit Filterung
|
|
- `GET /api/modules/copytrading/settings/{accountId}`: Risikolimits des Kontos
|
|
- `POST /api/modules/copytrading/settings/{accountId}`: Speichern der Risikolimits
|
|
|
|
### Resolution Farming
|
|
- `GET /api/modules/resolutionfarming/candidates`: Scanner-Kandidaten
|
|
- `GET /api/modules/resolutionfarming/positions`: Offene Farming-Positionen
|
|
- `GET /api/modules/resolutionfarming/history`: Abgeschlossene Trades
|
|
- `GET /api/modules/resolutionfarming/settings/{accountId}`: Farming-Parameter
|
|
- `POST /api/modules/resolutionfarming/settings/{accountId}`: Speichern der Parameter
|
|
|
|
### Supervisor
|
|
- `GET /api/modules/supervisor/profiles`: Verfügbare Rollen-Profile
|
|
- `POST /api/modules/supervisor/ask`: Interaktiver Chat mit LLM-Agent & Tool-Execution
|
|
- `GET /api/modules/supervisor/reports`: Archivierte Berichte
|
|
- `GET /api/modules/supervisor/reports/{id}`: Detailbericht
|
|
- `GET /api/modules/supervisor/dossiers`: Signal-Historie
|
|
- `GET /api/modules/supervisor/dossiers/{signalId}`: Trade-Dossier Markdown
|
|
- `GET /api/modules/supervisor/counterfactuals`: Realitäts-Abgleich abgelehnter Trades
|
|
|
|
### Accounting & BWA
|
|
- `GET /api/modules/accounting/statement`: Periodenabrechnung mit FX-Faktor (USDC/USD/EUR)
|
|
- `GET /api/modules/accounting/export/pdf`: Binärer PDF-Download der Periodenabrechnung
|
|
- `GET /api/modules/accounting/export/csv`: Binärer CSV-Download des Ledgers
|
|
- `GET /api/modules/accounting/ledger`: Paginiertes Transaktionsjournal
|
|
- `GET /api/modules/accounting/runs`: Ingestion-Läufe & Saldendifferenz
|
|
- `POST /api/modules/accounting/ingest`: Starten eines Blockchain-Syncs
|
|
|
|
### Terminal & Module
|
|
- `GET /api/logs`: Statischer Abruf vergangener Logs
|
|
- `GET /api/logs/stream`: SSE-Log-Stream
|
|
- `GET /api/modules`: Liste aller Strategie- und Analyse-Module
|