Files
Predictalytics/STATUS.md
T
RichardandClaude Opus 5 1f230fe12c Fruehjahrsputz 2/2: Dokumentation auf den tatsaechlichen Stand gebracht
Die Plandokumente waren durchweg veraltet: 85 von 91 Punkten im
UMSETZUNGSPLAN standen auf offen, obwohl der Code sie enthielt, und in
FIXPLAN-UI-Ranglisten war keine einzige der 18 Aufgaben abgehakt, obwohl
beide zugehoerigen Commits laengst im Zweig stecken. Alles abschnittsweise
gegen den Code geprueft und die Haekchen gesetzt - mit Belegstellen, damit
die naechste Pruefung nicht wieder bei null anfaengt.

Neu: STATUS.md als Einstiegsseite - wo das Projekt steht, was fertig ist,
was offen ist, und was beim Aufraeumen bewusst stehengeblieben ist. CLAUDE.md
verweist darauf.

Nachgezogen:
* UMSETZUNGSPLAN.md - 66 Punkte abgehakt. Offen bleiben A4 (Strategie-
  Klassifikation), B2 (Secrets) sowie C3/D1/D2 (SQL-Arbeiten des Nutzers).
* FIXPLAN-UI-Ranglisten.md - abgeschlossen bis auf den als "Optional"
  markierten Pfeilrichtungs-Punkt.
* FIXPLAN-TODO.md - Teil D und F abgehakt; die Test-Baseline "16 gruen"
  auf die heutigen 126 korrigiert. Offen: F5 und zwei Tests aus F6.
* FIXPLAN-G-Speicher.md - G1 bis G4 als erledigt vermerkt, Baseline "39/1"
  korrigiert, Pfad auf die nicht mehr existierende WinFormsHost/appsettings.json
  richtiggestellt.
* docs/PLAN-Linux-Portierung.md - der Watchdog-Warnhinweis war ueberholt
  (DcHeartbeatService meldet an /api/watchdog/v1/ping). Abschnitt 11 empfahl
  noch, mit Phase 0 zu beginnen; jetzt benennt er Phase 5 und 6 als das, was
  wirklich aussteht. Die Randnotiz zu Zugangsdaten in LicenseGuard.cs ist
  gegenstandslos, die Datei laeuft ueber den Deploymentcenter.Client.

Zwei Befunde, die keine Aufraeumarbeit sind und deshalb nur dokumentiert
wurden - beide in STATUS.md Abschnitt 3:

1. In src/Predictalytics.Api/appsettings.json steht ein echter
   OpenRouter-API-Key im Klartext, versioniert seit 7045002. Nicht
   eigenmaechtig entfernt: ohne Rotation beim Anbieter bringt das nichts
   (die History behaelt ihn), wuerde aber die KI-Analyse abschalten.
   Der Schluessel muss zurueckgezogen und neu ausgestellt werden.
2. Die Portierung ist auf keinem Linux-System je ausgefuehrt worden. Die
   Verifikation vom 2026-08-08 lief unter Windows.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-23 12:30:42 +02:00

159 lines
7.9 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.
# Predictalytics — Stand des Projekts
> Bestandsaufnahme vom **2026-08-23**, erstellt beim Frühjahrsputz. Jede Aussage hier ist
> gegen den Code geprüft, nicht aus den Plandokumenten übernommen — die waren zu diesem
> Zeitpunkt durchweg veraltet.
>
> Dieses Dokument ist die Einstiegsseite. Die Detailpläne bleiben bestehen und tragen
> jetzt jeweils oben einen eigenen Statusblock.
---
## 1. Wo wir stehen
Predictalytics analysiert Polymarket-Trader auf ihre Eignung fürs Copytrading. Die
Anwendung ist **funktional vollständig und läuft im Betrieb**: 151.094 Trader und
38,2 Mio. Trades in der Produktivdatenbank (Stand 2026-08-08).
Der aktuelle Zweig ist `feature/linux-net10`. Er trägt die Portierung auf .NET 10 und
Avalonia und ist **noch nicht nach `main` gemerged**`main` steht neun Commits zurück.
| | |
|---|---|
| Zielframework | net10.0, ein einziges für alle Projekte |
| Oberfläche | Avalonia 12.1.1 (Windows + Linux), zusätzlich ein Headless-Modus |
| Datenzugriff | EF Core **9** (bewusst; Pomelo hat keinen EF-10-Provider), 32 Migrationen |
| Tests | **126 grün, 1 bewusst übersprungen** |
| Build | fehlerfrei, 8 Nullable-Warnungen (siehe Abschnitt 5) |
### Aufbau
```
Predictalytics.Domain 1.321 Z. Entities, Enums, Repository-Interfaces
Predictalytics.Application 3.036 Z. Analytik, Scoring, Kalkulatoren
Predictalytics.Infrastructure 4.966 Z. EF-Kontext, Repositories, Provider (+65 Migrationsdateien)
Predictalytics.Worker 2.449 Z. 13 Hintergrunddienste
Predictalytics.Api 896 Z. Minimal-API-Endpunkte + WebUI (3.247 Z. HTML/JS/CSS)
Predictalytics.Hosting 1.972 Z. Plattformneutraler Kern: Kestrel, Worker, Lizenz, Heartbeat
Predictalytics.Shell 1.305 Z. Avalonia-Bedienhülle
Predictalytics.Application.Tests 3.216 Z. 126 Tests
```
`Predictalytics.Hosting` hängt an einem **Schwester-Repo**: `Deploymentcenter` muss neben
dem Predictalytics-Checkout liegen, sonst bricht der Build mit einer erklärenden Meldung ab.
---
## 2. Was fertig ist
Alles Folgende ist im Code belegt — die Belegstellen stehen in den jeweiligen Plandokumenten.
* **Kernanalytik** (`UMSETZUNGSPLAN.md`, Phase 1): positionsbasierte PnL-Engine nach
Average-Cost mit sauberer Behandlung jeder `TradeSide`, marktbasierte Win-Rate,
Deep-Dive-Kennzahlen aus echter Preishistorie, Copytrading-Score aus gemessenem
Alpha-Verfall gegen das Markt-Tape.
* **Robustheit** (Phase 2): EF-Migrationen statt handgeschriebener `ALTER TABLE`,
entkoppelte Scoring-Pipeline, Log-Retention, Testprojekt. Alle fünf Bugs aus dem
Review-Pass vom 2026-07-01 sind behoben.
* **Speicher-Haushalt** (`FIXPLAN-G-Speicher.md`): budgetabhängiges Retention-Fenster,
Burst-Kompaktierung, Per-Kategorie-Edge.
* **Kategorie-Erkennung** (`FIXPLAN-TODO.md`, Teil F): kanonische Tag-Tabelle,
Rausch-Filter, Tag-Nachladen für On-Demand-Märkte, Offline-Backfill beim Start.
* **HF-Trader-Tiering** (Teil D): `IngestMode` mit Hysterese, wöchentliche Biopsie,
Aggregations-Buckets.
* **Web-UI** (`FIXPLAN-UI-Ranglisten.md`): Showcase-Sektionen, serverseitige Sortierung
und Filterung.
* **Copytrading-Analytik**: Co-Movement samt Clusterung, Strategie-Drift, Edge-Freshness,
Copy-Portfolio, Insider-Feed — alle fünf Vorschläge der Roadmap sind umgesetzt und
in diesem Zweig enthalten.
* **Portierung** (`docs/PLAN-Linux-Portierung.md`, Phasen 04): .NET 10, extrahierter
Hosting-Kern, Avalonia-Shell, abgesicherte Steuerendpunkte, plattformfeste Kultur- und
Log-Pfade. Der WinForms-Host ist entfernt.
* **Betriebsanbindung**: Lizenz, Watchdog, UpdateService, Fehler-Stream und Bugtracker
laufen alle über das Deployment Center.
---
## 3. Was offen ist
Nach Dringlichkeit:
### 3.1 ⚠️ OpenRouter-API-Key liegt im Klartext im Repository
`src/Predictalytics.Api/appsettings.json` enthält einen **echten** OpenRouter-Schlüssel,
versioniert seit Commit `7045002` und damit auf dem Gitea-Server.
**Zu tun:** Den Schlüssel bei OpenRouter zurückziehen und neu ausstellen. Ihn nur aus der
Datei zu entfernen genügt nicht — der Git-Verlauf behält ihn. Anschließend über die
Umgebungsvariable `OpenRouter__ApiKey` setzen; eine Codeänderung braucht es dafür nicht,
`WebApplication.CreateBuilder` liest Umgebungsvariablen bereits mit Vorrang.
Der Schlüssel wurde bewusst **nicht** eigenmächtig entfernt: ohne Rotation bringt das
keinen Sicherheitsgewinn, würde aber die KI-Strategieanalyse stillschweigend abschalten.
### 3.2 Die Portierung ist unter Linux nie gelaufen
Phase 5 (Deployment, systemd/Container, Reverse Proxy, CI) und Phase 6 (Verifikation) des
Portierungsplans sind unangetastet. Der Code ist plattformneutral gebaut, aber **auf keinem
Linux-System je ausgeführt worden**. Die Ende-zu-Ende-Prüfung vom 2026-08-08 lief unter
Windows. Solange das aussteht, ist „läuft unter Linux" eine Annahme, kein Befund.
### 3.3 A4 — Strategie-Klassifikation
Der einzige größere unerledigte Block aus Phase 1. `StrategyType` entsteht weiterhin aus
zwei Signalen — `avgSize > 10000` ergibt `Whale`, `hedgingRate > 30` ergibt `Hedger`, sonst
`Bot`/`Unknown` — weshalb der Großteil der Trader strukturell auf `Unknown` landet. Die
Bausteine für eine bessere Einstufung liegen fertig herum (`StrategyMetricsCalculator`,
`TraderTraitCalculator`, `FingerprintSnapshotService`), sie speisen die Klassifikation nur
nicht.
Die Logik steht außerdem **doppelt** da: `AnalyticsService.cs:418` und
`ScoringService.cs:89`. Beim Anfassen zusammenführen.
### 3.4 Kleinere Reste
* `FIXPLAN-UI-Ranglisten.md`: Pfeilrichtung ▲/▼ in der aktiven Sortierspalte (war als
„Optional" markiert).
* `FIXPLAN-TODO.md` F5/F6: gezielter Nachlade-Schritt für fehlende Event-Tags, zwei Tests.
* `UMSETZUNGSPLAN.md` C3 und D1/D2: DB-Arbeiten auf SQL-Ebene und die Entscheidung über
einen Datenbank-Neustart — beides liegt beim Nutzer.
---
## 4. Zweige
`feature/linux-net10` enthält alle Feature-Zweige. Die folgenden sind vollständig darin
aufgegangen und können gelöscht werden:
```
copy-portfolio edge-freshness fingerprint-drift-foundation insider-follow-feed
integration smart-money-comovement smart-money-graph ui-ranglisten-showcases
ops-watchdog-license fix-event-description-truncation
```
`fix-event-description-truncation` war der einzige mit eigenem Stand; sein Fix und sein
Regressionstest stecken seit Commit `cb58e09` im Hauptzweig.
**Offen: der Merge nach `main`.** `main` steht neun Commits zurück und kennt weder die
Avalonia-Shell noch die Deploymentcenter-Anbindung.
---
## 5. Bewusst stehengelassen
Beim Aufräumen geprüft und **nicht** entfernt, weil Löschen hier Funktionsverlust wäre und
nicht Entrümpelung:
| Was | Warum es bleibt |
|---|---|
| `Providers/Azuro/AzuroProvider.cs` | Platzhalter mit `IsImplemented => false`. Die Worker überspringen ihn sauber; er kostet nichts und markiert den Ausbaupfad. |
| `Providers/Limitless/` (3 Dateien) | **Voll implementierter** zweiter Marktplatz mit `IsImplemented => true`. Wird produktiv nur nicht bespielt. |
| `Services/CopytradingBacktestHarness.cs` (123 Z.) | Fertig implementierter Latenz-Sweep, per DI registriert, aber **von niemandem aufgerufen**. Entweder anschließen oder bewusst verwerfen — beides eine fachliche Entscheidung. |
| `wwwroot/landing.html`, `wwwroot/docs.html` | Marketing-Seiten mit Preis-Abschnitt, vom Dashboard aus nicht verlinkt. Passen zur später angedachten Monetarisierung. |
| 8 Nullable-Warnungen | `TradeRepository.cs:94-102`, `PolymarketProvider.cs:357`, `TraderAnalyticsWorker.cs:152`. Bestehen seit Längerem; sie zu beheben ist Logikarbeit, kein Aufräumen. |
| 65 Migrationsdateien | Die Schemahistorie. Zusammenfassen ginge, ist aber riskant und sollte eine bewusste Entscheidung sein. |
Ein Nebenbefund ohne Handlungszwang: der Kategorie-Backfill beim Start
(`PredictalyticsHost.cs:116`) lädt **alle** Märkte samt Event in den Speicher. Bei
wachsendem Bestand wird das die Startzeit spürbar belasten.