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>
116 lines
3.8 KiB
Markdown
116 lines
3.8 KiB
Markdown
# Predictalytics
|
|
|
|
**Stand des Projekts, offene Punkte und Altlasten-Entscheidungen:
|
|
[`STATUS.md`](STATUS.md)** — dort zuerst nachsehen.
|
|
|
|
Betriebsdokumentation zur Anbindung an das Deployment Center (Lizenz, Watchdog,
|
|
Updates, Fehler-Stream): [`docs/BETRIEB-Deploymentcenter.md`](docs/BETRIEB-Deploymentcenter.md).
|
|
|
|
## Zentraler Bugtracker — Deployment Center
|
|
|
|
Erfasse unbehandelte Fehler, geplante Verbesserungen und Ideen im zentralen
|
|
Deployment Center. Basis-URL: `https://dc.mhdf.de`
|
|
|
|
### Zugang
|
|
Token steht in der Umgebungsvariable `DC_TOKEN`.
|
|
Header: `Authorization: Bearer $DC_TOKEN`
|
|
|
|
Ist `DC_TOKEN` nicht gesetzt, melde nichts und weise stattdessen darauf hin —
|
|
die Endpunkte antworten sonst mit `401 unauthorized`.
|
|
|
|
Die vollständige Schnittstellenbeschreibung liegt maschinenlesbar unter
|
|
`GET /api/openapi.json`, das Handbuch unter `/docs/`.
|
|
|
|
### Projekt
|
|
Dieses Projekt ist `predictalytics`.
|
|
Repo: `http://192.168.178.10:8418/Richard/Predictalytics`
|
|
Fällt dir ein Fehler im Deployment Center selbst auf, melde ihn unter
|
|
`deploymentcenter`.
|
|
|
|
### Etwas melden
|
|
`POST /api/bugtracker/v1/report`
|
|
|
|
```json
|
|
{
|
|
"project_slug": "predictalytics",
|
|
"type": "bug",
|
|
"title": "Kurze, aussagekräftige Zusammenfassung",
|
|
"description": "Unter welchen Bedingungen tritt es auf?",
|
|
"error_message": "Exakte Fehlermeldung",
|
|
"stack_trace": "Vollständiger Stacktrace",
|
|
"severity": "high",
|
|
"environment": "production",
|
|
"build_version": "v1.0.0",
|
|
"repo_url": "http://192.168.178.10:8418/Richard/Predictalytics",
|
|
"git_branch": "main",
|
|
"commit_sha": "a21536f",
|
|
"file_path": "src/Predictalytics.Worker/Services/TraderAnalyticsWorker.cs",
|
|
"line_no": 152,
|
|
"client_ref": "eindeutige-id-dieses-laufs"
|
|
}
|
|
```
|
|
|
|
**Setze immer `client_ref`** — ein wiederholter Aufruf mit demselben Wert legt
|
|
kein Duplikat an. Gib nach Möglichkeit `file_path` und `line_no` an; das spart
|
|
dem nächsten Agenten das Parsen des Stacktrace.
|
|
|
|
Schweregrade: `idea` (Gedanke für später), `wishlist` (Backlog),
|
|
`low`, `medium`, `high`, `critical`.
|
|
|
|
### Arbeit übernehmen
|
|
Bevor du an einem Item arbeitest, übernimm es — sonst arbeiten zwei Agenten
|
|
parallel am selben Problem:
|
|
|
|
```
|
|
POST /api/bugtracker/v1/manage?action=next
|
|
Body: {"project_slug": "predictalytics", "limit": 1}
|
|
```
|
|
|
|
Antwortet der Server mit `409 already_claimed`, nimm das nächste Item.
|
|
Die Reservierung läuft nach 30 Minuten ab; `action=claim` auf dieselbe ID
|
|
erneuert sie.
|
|
|
|
### Fortschritt festhalten
|
|
```
|
|
POST /api/bugtracker/v1/manage?action=comment&id=<ID>
|
|
Body: {"comment": "Was du herausgefunden hast", "action_taken": "investigated"}
|
|
```
|
|
|
|
`action_taken`: `investigated`, `fix_proposed`, `pr_opened`, `needs_human`,
|
|
`blocked`, `commented`.
|
|
|
|
### Abschließen
|
|
```
|
|
POST /api/bugtracker/v1/manage?action=resolve&id=<ID>
|
|
Body: {"resolved_in_build": "v1.0.1", "resolution_notes": "Was geändert wurde"}
|
|
```
|
|
|
|
Kommst du nicht weiter, gib das Item zurück statt es blockieren zu lassen:
|
|
```
|
|
POST /api/bugtracker/v1/manage?action=release&id=<ID>
|
|
Body: {"note": "Grund"}
|
|
```
|
|
|
|
### Laufzeitfehler
|
|
Die Anwendung meldet Error/Fatal selbst über `POST /api/errors/v1/report`
|
|
(`Services/DcErrorReporter.cs`) — dort nichts von Hand nachreichen.
|
|
|
|
### Release melden
|
|
Nach einem Release schließen sich Items mit passendem `resolved_in_build`
|
|
automatisch:
|
|
```
|
|
POST /api/updateservice/v1/publish
|
|
Body: {"product_slug": "predictalytics", "version": "1.0.1",
|
|
"download_url": "...", "sha256_hash": "...", "git_commit": "..."}
|
|
```
|
|
|
|
Die Version in `Directory.Build.props` (`<Version>`) muss dazu passen — sie ist
|
|
es, die der Client als installierte Version meldet.
|
|
|
|
### Fehlerbehandlung
|
|
Antworten haben die Form `{"status":"error","error":{"code":"…"}}`.
|
|
Reagiere auf `code`, nicht auf den Text:
|
|
- `401 unauthorized` — Token prüfen, nicht wiederholen
|
|
- `409 already_claimed` — nächstes Item nehmen
|
|
- `429 rate_limited` — Intervall verdoppeln, später erneut
|