Skip to content

fix(dashboard): UX-Politur — Run-Badge-Label, Trade-off-Legenden, Versions-Label-Case, n=0-Wertkennzeichnung, PDF-Dropdown-Sprachfilter#294

Merged
TillQuandel merged 1 commit into
masterfrom
fix/ux-politur-badges-legenden
Jul 15, 2026
Merged

fix(dashboard): UX-Politur — Run-Badge-Label, Trade-off-Legenden, Versions-Label-Case, n=0-Wertkennzeichnung, PDF-Dropdown-Sprachfilter#294
TillQuandel merged 1 commit into
masterfrom
fix/ux-politur-badges-legenden

Conversation

@TillQuandel

Copy link
Copy Markdown
Owner

Kontext

Fünf kleine, unabhängig verifizierte UX-Fixes aus dem Multi-Perspektiven-Review 2026-07-15. Kein Redesign, keine Änderung an eval_dashboard_server.py:507-528 (Fallback-Block), _trendChart oder den KPI-Aggregationen (_calc_kpis/kpi_trend) — parallele PRs arbeiten dort.

Die 5 Fixes

U3 — Lauf-Filter-Badge zeigt rohe Run-ID
Befund: _renderFilterBadges() nutzte für den run-Filter _globalFilters.run (select-value, z.B. "20260713-084724") statt des sichtbaren Options-Texts.
Fix: für k === 'run' wird selectedOptions[0].text ins Badge übernommen ("13.07. 08:47 · Schlebbe … · v0.3.143").

U4 — Trade-off-Chart-2-Legende zeigt rohe kleingeschriebene PDF-Keys
Befund: _chart_longitudinal (ch4/leg4, "Akzeptanzrate über Versionen") resolved über _PDF_LABELS.get(key, key) — für PDFs außerhalb der 3 registrierten Einträge (bates/kuhlthau/schlebbe) fiel das auf den rohen Key zurück (z.B. "cobaltite-paper"). Live-Daten zeigen: das ist über die DB-Fallback-Runs inzwischen der Regelfall (25 von 26 PDFs unregistriert), nicht die Ausnahme.
Fix: Fallback prettified den Key (re.sub(r"[-_]+", " ", key).strip().title()"Cobaltite Paper") statt ihn roh durchzureichen. Registrierte Keys bleiben unverändert.
Hinweis: dieselbe rohe Darstellung besteht unverändert in Trade-off-Chart-1 (ch3/leg3, "Skaliert die Pipeline mit der PDF-Länge?", SCALING/scaling_chart) — außerhalb des hier beauftragten Scopes, nicht mit angefasst.

U7 — kpi-ver-label wird per CSS uppercase gerendert
Befund: .sub-label hat text-transform: uppercase, trifft auch die eingebettete Versionsnummer ("V0.3.143" statt "v0.3.143").
Fix: text-transform: none auf #kpi-ver-label. PR #291 (offen, fügt ein zweites Label #kpi-ver-label-perf am "Kosten & Performance"-Header hinzu) ist noch nicht gemergt — der Selektor deckt #kpi-ver-label-perf bereits vorsorglich mit ab (ID gegen den #291-Diff verifiziert, nicht geraten), damit es denselben Fix ohne Nacharbeit erbt.

U5 — n=0-Balken: aufgedruckte "100,0 %" wirkt wie echter Wert
Befund: ch1-Wert-Labels (afterDatasetsDraw) übernahmen bei nMap[label]==0 bereits die graue Balkenfarbe (barColor), aber ohne zusätzliches Signal im Text selbst.
Fix: dieselbe Bedingung zusätzlich für Sternchen ("100,0 %*") und globalAlpha-Dimmung im Wert-Label genutzt. Kein Redesign.

D6 — PDF-Dropdown ignoriert aktiven Sprachfilter
Befund: Das Versions-Dropdown (_all_pvers_opts) filtert bei aktivem Sprachfilter bereits auf passende Zeilen (if language: _pver_rows = [...]); das PDF-Dropdown (_all_pdfs_opts) direkt darüber tat das nicht.
Fix: dieselbe Sprachfilter-Bedingung auf die PDF-Options-Zeilen angewandt.

Verifikation

Volle Suite grün (5899 passed, 3 skipped, 0 failed), ruff check clean auf allen geänderten/neuen Dateien, TDD (rot→grün) für alle 5 Fixes inkl. expliziter Red-Bestätigung per git stash für Fix D6. Playwright (Firefox, playwright-core) gegen eigenen Server (Port 8070, ATOMIC_DB_PATH=C:\tmp\kpi-db.db) mit echten Daten:

  1. Run-Filter gesetzt → Badge zeigt "Lauf: 13.07. 18:41 · Hrastinski · v0.3.143" statt roher Run-ID.
  2. Trade-off-Chart-2 mit PDF-Filter (unter SPAGHETTI_LIMIT) → Legende zeigt "Cobaltite Paper" statt "cobaltite-paper".
  3. getComputedStyle(#kpi-ver-label).textTransform === 'none', sichtbarer Text "v0.3.140" (klein).
  4. ch1 zeigt real vorhandene n=0-Zeilen ("Bates 2017 (n=0)", "extreme-events-decis... (n=0)") mit "100,0 %*" / "77,8 %*" in gedimmtem Grau.
  5. Sprachfilter DE→DE gesetzt → PDF-Dropdown-Optionen 26 → 10 (9 PDFs + "Alle"), API-seitig gegengeprüft (25 → 9).

NUL-Byte-Check (Python, kein bash grep/sed): vorher/nachher exakt 1 NUL-Byte in internal/dashboard/eval_dashboard.html.

Screenshots: C:\tmp\uxpolish-verify\ (fix1–fix5, inkl. fix2b für Einzel-PDF-Legende).

Kollisionsvermeidung

Nicht angefasst: eval_dashboard_server.py:507-528 (DB-only-Runs-Fallback-Block für token_runs), _trendChart (~Z.1600), KPI-Aggregationen (_calc_kpis, kpi_trend, version_delta) in eval_dashboard.py. Fix U4 berührt zwangsläufig _chart_longitudinal (dieselbe Funktion, die der Review explizit als Fundort nennt) — Änderung ist eine einzelne Zeile (Fallback-Ausdruck), keine Signatur-/Strukturänderung, kein Overlap mit den genannten Bereichen.

Quelle: Multi-Perspektiven-Review 2026-07-15.

…sions-Label-Case, n=0-Wertkennzeichnung, PDF-Dropdown-Sprachfilter

Fünf unabhängig verifizierte Fixes aus dem Multi-Perspektiven-Review 2026-07-15:

U3: Lauf-Filter-Badge zeigte die rohe Run-ID (select-value) statt des
lesbaren Options-Texts. _renderFilterBadges() übernimmt für den run-Filter
jetzt selectedOptions[0].text.

U4: Trade-off-Chart-2 ("Akzeptanzrate über Versionen", ch4/leg4) zeigte für
PDFs außerhalb der 3 registrierten _PDF_LABELS-Einträge den rohen,
kleingeschriebenen Key (z.B. "cobaltite-paper") — inzwischen über die
DB-Fallback-Runs der Regelfall statt die Ausnahme. Fallback prettified
("Cobaltite Paper") statt roh.

U7: .sub-label ist uppercase, traf auch die eingebettete Versionsnummer
("V0.3.143" statt "v0.3.143"). text-transform:none auf #kpi-ver-label;
#kpi-ver-label-perf (PR #291, offen) vorsorglich mit abgedeckt.

U5: ch1-Wert-Labels bei n=0 (keine Eval-Basis) wirkten wie echte Werte.
Dieselbe Bedingung wie barColor zusätzlich per Sternchen ("100,0 %*") und
globalAlpha-Dimmung im Text markiert.

D6: PDF-Dropdown ignorierte den aktiven Sprachfilter — das Versions-Dropdown
direkt darunter berücksichtigte ihn bereits. Gleiche Einschränkung jetzt auch
auf die PDF-Optionen angewandt.
@TillQuandel TillQuandel merged commit cbd05ef into master Jul 15, 2026
1 of 4 checks passed
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