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>
7.9 KiB
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 jederTradeSide, 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):
IngestModemit 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 0–4): .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.mdF5/F6: gezielter Nachlade-Schritt für fehlende Event-Tags, zwei Tests.UMSETZUNGSPLAN.mdC3 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.