Skip to content

Dashboard: Median-Default, Ära-Entzerrung, Label-Reihenfolge, Versions-Delta (closes #36) - #139

Merged
TillQuandel merged 1 commit into
masterfrom
fix/dashboard-followups-36
Jul 6, 2026
Merged

Dashboard: Median-Default, Ära-Entzerrung, Label-Reihenfolge, Versions-Delta (closes #36)#139
TillQuandel merged 1 commit into
masterfrom
fix/dashboard-followups-36

Conversation

@TillQuandel

Copy link
Copy Markdown
Owner

Setzt die vier priorisierten Punkte aus #36 um. Wichtiger Befund vorab: Drei der vier Punkte waren bereits durch frühere PRs (#38, #59) im Live-Render-Pfad erledigt — Issue #36 blieb aber offen, weil Punkt 4 (Übersicht-Insight) fehlte. Dieser PR ergänzt Punkt 4 und verifiziert alle vier frisch mit echten Daten (eigener Server auf Port 8060, read-only).

Variant-H-Layout + Pastell-Palette unverändert (kein Redesign); quality_history.jsonl/runs//DB nur gelesen, nie geschrieben.

1. ch4 entspaghettieren — bereits erledigt (PR #38), frisch verifiziert

internal/dashboard/eval_dashboard.html Zeilen 1434–1478: bei >3 PDFs (SPAGHETTI_LIMIT) zeigt ch4 standardmäßig eine Median-Linie über alle PDFs; sobald der PDF-Filter aktiv ist, schrumpft d.long.datasets auf 1 Eintrag und die Per-PDF-Einzellinie erscheint.

  • Vorher/Nachher: kein Code-Unterschied in diesem PR — nur Beweis erbracht.
  • Screenshot: a_ch4_median_default.png (Default, 26 PDFs → "Median über 26 PDFs — Einzel-Linien per PDF-Filter"), b_ch4_pdf_filter.png (Filter auf Porst-2014-Auszug-S1-40 → Einzel-Linie über 19 Versionspunkte).

2. Trade-off-Scaling entzerren — bereits erledigt (PR #59 P2), frisch verifiziert

Gewählte Variante (dokumentiert wie gefordert): ältere Punkte dimmen statt hartem Versions-Cutoffmark_scaling_recency() (generative/eval_dashboard.py) markiert alle bis auf die jüngsten 10 Versionen als recent=False; ch3-JS reduziert für diese Punkte Deckkraft und Radius. Begründung (aus PR #59 übernommen): kommt ohne neuen UI-Filter aus, verwirft alte Versionen nicht komplett aus der Darstellung (bleiben als Kontext sichtbar, nur zurückgenommen).

  • Screenshot: in a_ch4_median_default.png links sichtbar (Panel "Skaliert die Pipeline mit der PDF-Länge?", Hinweistext "Ältere Versionen gedimmt").

3. Kalibrierungs-Tabelle mit Arbeits-Reihenfolge — bereits erledigt (PR #59), frisch verifiziert

Server sortiert calibration.rows nach LLM-Fehlerquote absteigend (ungelabelt zuerst); Client markiert die ersten 3 ungelabelten Zeilen mit "Als Nächstes labeln" (renderCalibration(), Zeilen 1683–1694).

  • Screenshot: c_calib_table.png — reale Daten (356 evaluierte Notes, 0 gelabelt), Top-Zeilen bei 100 % Fehlerquote, erste 3 Zeilen mit Badge.

4. Übersicht-Insight um Version-über-Version-Delta — NEU in diesem PR

Vorher: ins-overview zeigte nur den Stand der neuesten Version ("Pipeline v0.3.142: Fehlerquote 9,0 %, Belegrate 79,2 % über 10 evaluierte Notes.").

Nachher: ergänzt um vs. <Vorversion>: Y % (n=B), inkl. N-Guard: ist eine der beiden Versionen n<20, erscheint statt einer Besser/Schlechter-Wertung nur (n<20 — nicht belastbar). Nutzt ausschließlich bereits vorhandene, per TDD getestete Serverdaten (version_delta() + kpi_trend["deltas"]/["n"], generative/eval_dashboard.py / eval_dashboard_server.py) — keine neue Python-Logik, reines JS-Wiring in renderInsights().

Real erzeugter Satz (Screenshot d_overview_delta.png):

Pipeline v0.3.142: Fehlerquote 9,0 %, Belegrate 79,2 % über 10 evaluierte Notes. (n=10 — zu klein für Zielvergleich) vs. v0.3.141: 1,1 % (n=7) (n<20 — nicht belastbar)

(Realer Datensatz liefert zufällig einen n<20-Fall auf beiden Seiten — N-Guard greift sichtbar.)

Qualität

  • Suite: python -m pytest generative → 1350 passed, 2 skipped, 4 deselected (Baseline unverändert, keine Python-Logik geändert).
  • uvx ruff format --check .: 214 files already formatted.
  • Beweis: eigener Server python C:/tmp/dash36/start_server.py (Port 8060, echte Daten, read-only) + Playwright-Screenshots. Server danach per PID beendet. Der Server auf Port 8051 (Tills Tab) war während der gesamten Session unangetastet (hatte zum Zeitpunkt der Prüfung ohnehin keinen Listener — unabhängig von dieser Arbeit).

closes #36

#36)

Ergaenzt die Uebersicht-Insight-Zeile (ins-overview) um den fehlenden
vierten Punkt aus Issue #36: "vs. <Vorversion>: X % (n=Y)" mit N-Guard
(keine Besser/Schlechter-Wertung bei n<20 in einer der Versionen).

Nutzt ausschliesslich bereits vorhandene, per TDD getestete Server-Daten
(version_delta() + kpi_trend["deltas"]/["n"] aus generative/eval_dashboard.py
bzw. eval_dashboard_server.py, #36 P4 / PR #59) -- keine neue Python-Logik,
reines JS-Wiring.

Die anderen drei #36-Punkte waren bereits durch fruehere PRs erledigt und
werden hier nur frisch verifiziert (echte Daten, Server auf Port 8060):
- ch4-Median-Default + Per-PDF-Linien bei aktivem PDF-Filter (PR #38)
- Scaling-Trade-off-Chart dimmt alte Versions-Aeren (mark_scaling_recency,
  PR #59 P2)
- Kalibrierungs-Tabelle nach LLM-Fehlerquote sortiert + "Als Naechstes
  labeln"-Badge (PR #59)

Suite: 1350 passed, 2 skipped, 4 deselected (unveraendert). ruff format
--check sauber (kein .py geaendert).
@TillQuandel
TillQuandel merged commit 853006c into master Jul 6, 2026
1 of 3 checks passed
@TillQuandel
TillQuandel deleted the fix/dashboard-followups-36 branch July 6, 2026 17:42
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.

Dashboard: inhaltliche Follow-ups aus dem Visual-Polish-Review (2026-06-10)

2 participants