Skip to content

feat(dashboard): Waisen-Banner, Kosten/akzeptierte Note, prompt-basierte Cache-Quote (#196 P1-3)#209

Merged
TillQuandel merged 2 commits into
masterfrom
feat/196-kennzahlen-p1-3
Jul 11, 2026
Merged

feat(dashboard): Waisen-Banner, Kosten/akzeptierte Note, prompt-basierte Cache-Quote (#196 P1-3)#209
TillQuandel merged 2 commits into
masterfrom
feat/196-kennzahlen-p1-3

Conversation

@TillQuandel

Copy link
Copy Markdown
Owner

Scope

Issue #196, Punkte 1–3 (aufsteigender Aufwand, wie im Issue priorisiert). P4 (Wilson-CI, braucht Persistenz-Lücke) und P5 (Delta-Bezugsversion) bleiben offen.

P1 — Waisen-Versions-Banner

orphan_versions() (eval_dashboard.py) meldet generative Pipeline-Versionen numerisch über config.AGENT_VERSION — die #191-Fehlerklasse (verwaiste WIP-Branch-Läufe) meldet sich damit selbst. Hinweis-Charakter: bewusste Re-Evals/Branch-Läufe sind legitim; foss/extractive haben eine eigene Nummernwelt und sind ausgenommen. Dazu jsonl_fallback-Flag, wenn query_note_evals scheitert oder leer ist (JSONL deckt nur ~32 % der Historie — Silent-Staleness wird sichtbar). Beides in data.json unter warnings; der Client rendert ein amber Hinweis-Banner in der Übersicht (versteckt, wenn nichts anliegt).

P2 — Kosten pro akzeptierter Note je Version

kpi_trend.cost_per_note = cost_sum / n_vault je Version; None statt eines falschen 0-$-Werts für Subscription-Runs (compute_cost_per_call liefert dort 0, Issue-Vorgabe) und bei n_vault=0. Anzeige in der Kosten-Sektion-Headline: „v0.3.56 (letzter API-Lauf): 0,0050 $ pro akzeptierter Note." UI-Label „Subscription" an der Kosten-Kachel bleibt unverändert.

P3 — Cache-Effizienz prompt-basiert

cache_c wurde serverseitig aggregiert, aber nie ausgegeben (totes Feld); die cache_pct-Formel hatte Output im Nenner und ließ cache_creation weg — Planner zeigte 75,8 %. Neu: _cache_pct_prompt_based = cache_r/(input+cache_r+cache_c), cache_c in Response und Agent-Tooltip (dreizeilig: Tokens+Kosten / Cache-Hit mit Formel-Label / Cache-Neuanlage). Empirisch nach Umbau: Planner zeigt exakt die im Audit vorhergesagten 51,1 %. Anschluss an tools/cache_report.py / #147.

Verifikation

  • TDD: 11 neue Tests (test_dashboard_kennzahlen.py) — orphan_versions-Semantik, Cache-Formel, build_data-Integration (Waisen, Fallback-Flag, cost_per_note-Guards)
  • Suite 5677 grün (vorher 5666), ruff format+check sauber
  • Playwright (Firefox): Banner default hidden; simuliert (fetch-Patch über echten 15-s-Refresh-Pfad) sichtbar mit beiden Meldungen; Kosten-Headline und Agent-Tooltip wie oben; keine JS-Fehler
  • Cross-Model-Review (Mistral magistral-medium): keine Funde; die offene „DB leer"-Formulierungsfrage selbst entschieden — Banner-Text sagt jetzt „Eval-DB nicht nutzbar (nicht erreichbar oder leer)" statt fälschlich „SQLite nicht erreichbar"

Merge-Hinweis

Trivialer Konflikt mit PR #207 am Agent-Tooltip (beide ändern dieselbe Zeile): bei der Auflösung die dreizeilige #196-Fassung nehmen und ag.cache_pct/cost_usd-Werte durch _fmtDE(...) aus #207 formatieren.

Tilltime added 2 commits July 11, 2026 23:11
…rte Cache-Quote (#196 P1-3)

P1 — Waisen-Versions-Banner: orphan_versions() meldet generative
Pipeline-Versionen numerisch UEBER config.AGENT_VERSION (#191-Fehler-
klasse meldet sich selbst; Hinweis-Charakter, bewusste Re-Evals sind
legitim; foss/extractive ausgenommen). Dazu jsonl_fallback-Flag, wenn
statt SQLite der JSONL-Fallback laeuft (deckt nur einen Teil der
Historie — Silent-Staleness sichtbar). Client: amber Hinweis-Banner
in der Uebersicht, versteckt wenn nichts anliegt.

P2 — Kosten pro akzeptierter Note je Version (kpi_trend.cost_per_note):
cost_sum/n_vault; None statt falschem 0-$-Wert fuer subscription-Runs
(compute_cost_per_call liefert dort 0) und bei n_vault=0. Anzeige in
der Kosten-Sektion-Headline (letzte Version mit API-Kosten).

P3 — Cache-Effizienz: cache_c wurde aggregiert, aber nie ausgegeben
(totes Feld); cache_pct hatte Output im Nenner und liess
cache_creation weg — Planner zeigte 75,8 % statt 51,1 %. Neu:
_cache_pct_prompt_based = cache_r/(input+cache_r+cache_c); cache_c in
Response + Agent-Tooltip (dreizeilig, Label praezisiert). Empirisch
nach Umbau: Planner exakt die im Audit vorhergesagten 51,1 %.

TDD: 11 neue Tests (orphan_versions, Cache-Formel, build_data-
Integration fuer Warnungen/Fallback/cost_per_note). Playwright-
verifiziert: Banner default hidden + simuliert sichtbar (fetch-Patch,
beide Meldungen), ins-cost "v0.3.56 (letzter API-Lauf): 0,0050 $ pro
akzeptierter Note", Agent-Tooltip "88k tokens / Cache-Hit 51.1 % vom
Prompt / Cache-Neuanlage 348 k tokens"; keine JS-Fehler.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants