Files
PolyTraderSharp/docs/PROJEKTSTAND.md
T
RichardandClaude Opus 5 1fd3671b42 Projektstand dokumentiert; Modularisierungsplan auf den Iststand nachgezogen
docs/PROJEKTSTAND.md neu: Einstiegsdokument mit Gesamtueberblick - Architektur,
Modul-Stand, was abgeschlossen ist und was offen. Alle Angaben am Code
nachgeprueft, nicht aus den Plandokumenten uebernommen. Die offenen Punkte sind
danach getrennt, ob sie am Schreibtisch erledigt werden koennen oder echtes
Geld/den Zielserver brauchen - das war vorher nirgends zusammengefasst.

Modularisierungsplan korrigiert: Die Phasen 3 bis 6 standen auf "IN ARBEIT"
beziehungsweise offen, obwohl die Arbeit seit Wochen getan war. Nachgeprueft und
abgehakt sind unter anderem:
- Phase 5: alle Modul-Services liegen im Modulprojekt, frm_main ist weg, alle
  vier Module implementieren IPolyTraderModule
- Phase 6: komplett - kein MongoDB.Driver/LiteDB mehr in irgendeiner csproj
- Phase 7 teilweise: 476 Tests, keine leeren catch-Bloecke mehr,
  Secrets-Verschluesselung umgesetzt (AES-GCM statt DPAPI, da DPAPI Windows-only
  ist und die Linux-Portierung blockiert haette)
Offen bleiben aus Phase 7 nur God-Methoden und die TerminalLogger-Umstellung.

Beim Nachpruefen aufgefallen: Accounting A-3 (US-Steuerschicht, Form 8949) ist
entgegen der bisherigen Annahme nicht gebaut - es gibt keinen UsTaxEngine.
A-2 und A-4 dagegen sind da. Im Projektstand vermerkt.

docs/README.md verweist jetzt auf den Projektstand und fuehrt die bisher
fehlenden Ordner sicherheit/ und den Deploymentcenter-Plan auf.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-22 11:04:02 +02:00

198 lines
11 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Projektstand PolyTrader
**Stand: 22.08.2026** · erstellt beim Frühjahrsputz, alle Angaben am Code nachgeprüft
(nicht aus Plandokumenten übernommen — mehrere davon waren veraltet).
> Dieses Dokument ist der Einstiegspunkt: Was existiert, was ist fertig, was ist offen und
> warum. Die Detailpläne unter `umsetzungsplaene/` bleiben maßgeblich für das *Wie*.
---
## 1. Kurzfassung
PolyTrader ist eine modulare Trading- und Analyse-Suite für Polymarket: ein schlanker
**Core** und vier eigenständige **Module**, dazu eine plattformneutrale
**Avalonia-Oberfläche**.
| | |
|---|---|
| Projekte | 7 (Core, 4 Module, Avalonia-App, Tests) — **alle auf `net10.0`** |
| Plattform | **Windows und Linux.** Seit dem 22.08.2026 kein `net10.0-windows` mehr im Repo; Linux-Publish verifiziert |
| Produktivcode | ~27.100 LOC, davon Core ~8.000, CopyTrading ~7.700, UI ~4.900 |
| Tests | **476**, alle grün (~5.700 LOC) |
| Build | 0 Fehler, 15 Warnungen (alle im Avalonia-Projekt, siehe §5.3) |
| Sicherheit | 0 anfällige Pakete über alle 7 Projekte, inkl. transitiver |
| Datenbank | MySQL über EF Core / Pomelo. Mongo und SQLite vollständig entfernt |
**Der große Bogen ist geschlossen.** Aus dem monolithischen WinForms-Copytrader ist ein
modulares, plattformneutrales System geworden. Was noch offen ist, teilt sich sauber in
zwei Gruppen: Dinge, die **nur im Zielland mit echtem Geld** abgenommen werden können, und
**bewusst zurückgestellte Neuentwicklung**.
---
## 2. Architektur
```
PolyTrader.Core Host, Persistenz (EF/MySQL), Settings, Jobs, Logging,
CLOB-Client, Streaming, Security, Deploymentcenter-Anbindung
├── Modules.CopyTrading Master-Trader spiegeln
├── Modules.ResolutionFarming Favoriten nahe Auflösung
├── Modules.Supervisor KI-gestützte Handelsanalyse (OpenRouter)
└── Modules.Accounting Unabhängige Buchhaltung aller Live-Accounts
PolyTrader.App.Avalonia Einfenster-Shell mit Seitenleiste
```
**Leitprinzip, das gehalten hat:** Der Core kennt keine Module. Module registrieren sich
über `IPolyTraderModule` und liefern ihre Ansichten über einen toolkit-neutralen
UI-Contract — deshalb war der Wechsel von WinForms nach Avalonia überhaupt möglich, ohne
die Fachlogik anzufassen.
---
## 3. Modul-Stand
| Modul | Stand | Offen |
|---|---|---|
| **CopyTrading** | Produktiv nutzbar. Rentabilitätsplan und alle Review-Fixes umgesetzt | CLOB-User-/Market-WSS-Kanal + Orderbuch-Check, Partial-Fill-Verdrahtung, echte `fee_rate_bps` — alles live-gebunden |
| **ResolutionFarming** | Slices 05 fertig: Logik, Persistenz, Scanner, UI, Demo-Execution, Monitor | Live-Anbindung und On-Chain-Redeem |
| **Supervisor** | S-0 bis S-4 komplett: Journal, Dossiers, OpenRouter-Agent, Profile, Berichte, Counterfactual | Predictalytics-Werkzeuge (API existiert noch nicht), Live-Key-Test |
| **Accounting** | A-1 Ingest, A-2 Abrechnung/BWA/FX und A-4 Export (CSV + PDF) sind gebaut | **A-3 US-Steuerschicht fehlt vollständig** — kein `UsTaxEngine`, kein Form-8949/Schedule-D |
---
## 4. Abgeschlossen
- **Modularisierung** (Phasen 06) — Core + vier Module, kein Monolith mehr
- **MySQL-Migration** — Mongo restlos raus, `core_`/`mod_`-Schema, Migration über
`--migrate-json` / `--verify-mysql` gelaufen
- **Linux-Portierung, UI-Teil** — WinForms vollständig nach Avalonia portiert (A1A4),
LiveCharts2 statt ScottPlot, kategorisierter `SettingsEditor` statt `PropertyGrid`
- **Einfenster-Shell** — Mehrfenster-Launcher durch eine Shell mit Seitenleiste ersetzt
- **Deploymentcenter-Integration** (D-0 bis D-5) — Lizenz, Watchdog, Fehler-Reporting,
Auslieferung und Erstinstallation, **code-seitig**
- **Sicherheit F1F6** — AES-GCM at-rest für Keys über `POLYTRADER_MASTER_KEY`, keine
Secrets in Argumenten oder Logs
- **WinForms-Ausbau** (P11/L5) und **LicenseLabrador-Ablösung** (D-6) — 22.08.2026
---
## 5. Offen
### 5.1 Blockiert durch Live-Betrieb / Zielland
Diese Punkte sind **nicht** liegengeblieben — sie lassen sich am Schreibtisch nicht
abschließen, weil sie echtes Geld, echte Marktdaten oder den Zielserver brauchen.
| Punkt | Was fehlt |
|---|---|
| **A5 — Abnahme der Oberfläche** | Jedes Fenster mit echten Daten durchklicken: Spaltenbreiten, Umbrüche, Splitter, KPI-Kacheln. Vergleich gegen einen Worktree des Tags `winforms-final` |
| **Deploymentcenter live** | Abnahme von D-1/D-2 (Watchdog, Lizenz), Live-Abnahme von D-5 (Erstinstallation). Serverseitig fehlen: Release-Signierschlüssel und Installationskonto |
| **Alte Dienste abschalten** | `watchdog.mhdf.de` und `license.mhdf.de` — erst **nach** der Live-Abnahme, sonst fehlt die Rückfallebene |
| **Master-Key im Zielland** | Master-Key setzen und Bestandsdaten migrieren; Alchemy- und Mullvad-Zugänge rotieren |
| **Modul-Livegang** | CopyTrading-WSS-Kanäle, ResolutionFarming-Anbindung und On-Chain-Redeem (siehe §3) |
| **systemd / Feldtest** | Unit liegt unter `deploy/polytrader.service`, ist aber nicht im Betrieb erprobt |
### 5.2 Geplant, aber bewusst nicht gebaut
Vollständige Pläne, **null Zeilen Code** — jederzeit startbar, nichts davon blockiert
etwas anderes:
| Vorhaben | Art |
|---|---|
| **Modul MarketMaking** | Liquidity Rewards + Spread. Setzt das Orderbuch-Fundament aus CopyTrading Phase 1 voraus |
| **Modul BundleArbitrage** | Preissummen-Anomalien. Startet bewusst als reines Mess-Modul |
| **Modul DataDriven** | Konzept, noch kein Umsetzungsplan |
| **StrategieDrift** | Verhaltensänderung eines Masters erkennen, bevor das PnL es zeigt |
| **AI-Auflösequalität** | LLM bewertet je Markt das Resolution-Risiko als Entry-Gate |
| **AutoRedeem** | On-Chain-Auto-Redeem, modulweise schaltbar. Höchste Kritikalitätsstufe |
| **Accounting A-3** | US-Steuerschicht (FIFO-Lot-Matching, Form 8949, Schedule D) |
### 5.3 Technische Restposten
| Punkt | Details |
|---|---|
| **Keine CI** | Weder `.github/workflows` noch `.gitea/workflows` — es existiert keinerlei Automatisierung. Build und Tests laufen ausschließlich von Hand. **Der größte strukturelle Mangel** |
| **15 Build-Warnungen** | Alle im Avalonia-Projekt: 13 × `CS8618` (Felder in Fenster-Konstruktoren), 1 × `CS8848` (Vorrang bei `switch`), 1 × `CS8602` (möglicher Nullverweis in `PdfExporter.cs:40`). Die letzten beiden sind einen Blick wert |
| **TerminalLogger** | Stempelt mit `DateTime.Now` statt der konfigurierten `AppTimeZone`. Auf einem UTC-Linuxserver passen Logdatei-Grenzen nicht zur angezeigten Uhrzeit. Umstellung auf `Microsoft.Extensions.Logging` steht ohnehin aus |
| **God-Methoden** | `PollLiveAccountsAsync`, `ProcessAccountOrderAsync`; duplizierte Closed-Trade-Erzeugung (Phase 7) |
| **Aufgeschobene Follow-ups** | TradeId-Autoincrement, Dedup, Performance (aus dem CopyTrading-Plan) |
---
## 6. Der Frühjahrsputz vom 22.08.2026
Zwei Commits: `dd8da3f` sicherte den unversionierten Arbeitsstand (58 Dateien: die
Deploymentcenter-Integration und die Einfenster-Shell lagen uncommittet im Arbeitsbaum),
`bf8048b` räumte auf.
**Entfernt** — 124 Dateien, 10.619 Zeilen weniger:
- Das **WinForms-Projekt** samt `Ui/`, `Models/`, `Licensing/`, `services/`, `Properties/`,
`Resources/icons/`, `Program.cs`, `favicon.ico` und `PolyTrader.App.csproj`
- **`LicenseLabrador.Client`** aus `lib/nuget` und dem Quellen-Mapping
- **`agentspace/`** (30 Dateien: WinForms-Designer-Patcher, `fix_mongo.py`, Wegwerfskripte)
- `Ideen-fuer-Mittwoch.txt`, das Root-`appsettings.json` (Duplikat), lokal `MongoDB/`,
`data.db` und eine `.bak`-Datei
**Beim Aufräumen aufgefallen und mitbehoben:**
- Der Rückfall-Tag **`winforms-final` lag nur lokal** und war nicht auf dem Server — genau
die Sicherung, auf die sich die Doku als Fallback beruft. Jetzt gepusht.
- Die Avalonia-App band ihre **PNG-Symbole aus dem Repo-Root** ein (`..\..\Resources\*.png`)
und hätte sie beim Ausbau verloren. Sie liegen jetzt in
`src/PolyTrader.App.Avalonia/Assets/`; der `avares://`-Pfad blieb gleich.
**Bewusst *nicht* entfernt**, obwohl Pläne es nahelegten:
- **`Newtonsoft.Json` im Core** ist kein toter Ballast, sondern ein Sicherheits-Pin:
Nethereum 6.1.0 würde sonst transitiv auf 11.0.2 auflösen (GHSA-5crp-9r3c-p9vr).
- **Die `Watchdog*`-Felder in `ServerSettings`.** Schnitt D-6 verlangte ihre Entfernung,
aber D-1 hatte sie zuvor auf die Deploymentcenter-API *umgewidmet*. Sie sind in Gebrauch;
ein Entfernen wäre ein Rückschritt gewesen.
- **`Resources/*.png`** — siehe oben.
**Gesucht und nicht gefunden:** toter Code. Eine Prüfung aller 285 Typen in `src/` gegen
ihre Verwendung ergab keinen einzigen verwaisten Typ. Die scheinbaren Treffer waren
EF-Design-Time-Factories und Migrationen (per Reflection genutzt) sowie Null-Stubs, die
über DI registriert sind. Auch leere `catch {}`-Blöcke: keine.
**Doku nachgezogen:** Der Modularisierungsplan führte die Phasen 36 als „IN ARBEIT"
beziehungsweise offen, obwohl sie seit Wochen erledigt waren — die Häkchen sind jetzt am
Code nachgeprüft gesetzt. Der Watchdog/LicenseLabrador-Plan ist als **abgelöst**
gekennzeichnet, `ANALYSE-Linux-Portierung.md` steht auf Revision 6.
---
## 7. Doku-Landkarte
| Dokument | Rolle |
|---|---|
| `PROJEKTSTAND.md` | **Dieses Dokument** — Einstieg und Gesamtüberblick |
| `ANALYSE-Linux-Portierung.md` | Rahmen der Linux-Fähigkeit, Fahrplan P1P11 / L1L5 |
| `LEITFADEN-Avalonia-Portierung.md` | Arbeitsregeln für die Oberfläche. **Vor jeder UI-Arbeit lesen** |
| `UI-SPEZIFIKATION-WinForms.md` | Beschreibung der alten Oberfläche — Vergleichsvorlage für A5 |
| `umsetzungsplaene/` | Detailpläne je Vorhaben |
| `konzepte/` | Vorhaben ohne Umsetzungsplan |
| `sicherheit/SICHERHEITSKONZEPT.md` | Konzept + **wiederkehrende Audit-Checkliste**. Die offenen Kästchen dort sind eine Vorlage, keine Rückstände |
| `IDEENSAMMLUNG-Feldtest-2026-08.md` | Beobachtungen aus dem laufenden Einsatz. Nur sammeln |
| `.agents/rules/clob.md` | Regeln für alles, was Geld bewegt |
**Abgelöst, nur noch Verlauf:** `UMSETZUNGSPLAN-Watchdog-LicenseLabrador-Integration.md`
---
## 8. Empfohlene nächste Schritte
1. **A5 durchklicken** — die Oberfläche mit echten Daten abnehmen. Blockiert nichts
technisch, ist aber die letzte offene Zusage der UI-Portierung.
2. **CI aufsetzen** — der größte strukturelle Mangel. Ein Workflow, der `dotnet build` und
`dotnet test` auf Linux fährt, hätte den plattformneutralen Zustand von allein gehalten.
3. **Deploymentcenter live abnehmen** — danach können die Altdienste abgeschaltet werden,
womit zwei Sicherheits-Auflagen von selbst entfallen.
4. **Erst dann neue Module.** MarketMaking und BundleArbitrage sind fertig geplant und
warten — aber Neuentwicklung vor der Abnahme des Bestehenden vergrößert nur die Menge
an ungeprüftem Code.