Skip to content

fix(dashboard): eine Zahlen-Locale (DE), Ziel-Ampel + Delta-Chips an KPI-Kacheln (#204 P1-3)#207

Merged
TillQuandel merged 1 commit into
masterfrom
fix/204-locale-ampel-delta
Jul 11, 2026
Merged

fix(dashboard): eine Zahlen-Locale (DE), Ziel-Ampel + Delta-Chips an KPI-Kacheln (#204 P1-3)#207
TillQuandel merged 1 commit into
masterfrom
fix/204-locale-ampel-delta

Conversation

@TillQuandel

Copy link
Copy Markdown
Owner

Scope

Issue #204, Punkte 1–3 (HOCH). Punkte 4–8 bleiben offen im Issue.

P1 — eine Zahlen-Locale (DE), zentral

_fmtDE (existierte, wurde aber nur in den Insight-Headlines genutzt) ist jetzt die zentrale Formatierungsfunktion für alle sichtbaren Zahlen: KPI-Kacheln (mit digits pro Metrik: %, h → 1, M-Tokens → 2, n → 0, Kosten → 2/4), Gesamt-Strip, Vergleichs- + Kalibrierungs-Tabelle, Sparkline (Achsen + Delta), _autoUnit, Chart-Tooltips (Akzeptanz, Agenten inkl. cache_pct, Laufzeit, Scatter), Note-Drawer und Canvas-Bar-Labels. Koordinaten-toFixed (SVG-Pfade) und locale-neutrale toFixed(0)-Ganzzahlen bewusst unangetastet.

Nebenfix: Das Spark-Delta rechnete Farb-/Vorzeichen-Logik per parseFloat auf dem formatierten String — mit DE-Komma würde parseFloat("-0,9") bei -0 abschneiden. Jetzt numerische Basis (dnum, auf 1 Dezimale gerundet), Formatierung nur für die Anzeige.

P2 — Ziel-Ampel an den KPI-Kacheln

Kachel-Wert und linke Akzent-Kante folgen der vorhandenen tone-Ampel (mint/amber/coral); info/neutral-Kacheln (Notes, Laufzeit, Tokens, Kosten) bleiben bewusst ungefärbt — Ampelfarben nur an Threshold-Stellen.

P3 — Delta-Chips an den Qualitäts-Kacheln

Chip „↓ 0,9" (Pfeil + Betrag vs. Vorversion) direkt an Akzeptanz/Fehlerquote/Belegrate; Datenquelle kpi_trend.deltas (server-berechnet mit N-Guard, PR #59). Bei reliable=false (n<20) ausgegraut mit Tooltip „nicht belastbar", sonst gefärbt mit lowerIsBetter-Semantik nur für die Fehlerquote. Ergänzt #196 P5 (Delta-Bezugsversion) — dort unverändert offen.

Verifikation

  • Playwright (Firefox, hell + dunkel, keine JS-Fehler):
    • Kacheln „81,7 / 7,4 / 77,8 / 2,46" (DE), Banner „7,4 %" jetzt konsistent zur Kachel
    • Qualitäts-Werte amber + Kante (alle drei verfehlen aktuell knapp ihr Ziel), neutrale Kacheln ungefärbt
    • Chips dim bei n<20; reliable-Zustand über fetch-Patch + echten 15-s-Refresh-Pfad: accept-Abfall rot, hall-Abfall grün, cov-Anstieg grün
    • Tabellen „100,0%" neben „4.100" Wörtern, Kalibrierung „100,0 %", Canvas-Bar-Labels „92,9 %"
  • Suite 5666 grün, ruff format+check sauber (Python unverändert)
  • Cross-Model-Review (Mistral magistral-medium): keine Funde (LOW-Bestätigungen)

…KPI-Kacheln (#204 P1-3)

P1 — Locale-Mix DE/EN beseitigt: _fmtDE (bestand nur fuer Insight-
Headlines) ist jetzt die zentrale Formatierung fuer alle sichtbaren
Zahlen — KPI-Kacheln (digits pro Metrik), Strip, Vergleichs- und
Kalibrierungs-Tabelle, Sparkline-Achsen/-Delta, _autoUnit, Chart-
Tooltips und Canvas-Bar-Labels. Vorher: Banner "7,4 %" ueber Kachel
"7.4", Tabelle "29.807" Woerter neben "50.0%".

P2 — Ziel-Erreichung sichtbar: Kachel-Wert + linke Akzent-Kante folgen
der vorhandenen tone-Ampel (good/warn/bad); info/neutral-Kacheln
bleiben bewusst ungefaerbt (kein Farb-Rauschen).

P3 — Delta-Chip (Pfeil + Betrag vs. Vorversion) direkt an den drei
Qualitaets-Kacheln; Datenquelle kpi_trend.deltas (server-berechnet,
N-Guard): bei reliable=false ausgegraut statt gefaerbt, Farbsemantik
invertiert nur fuer Fehlerquote (lowerIsBetter).

Nebenfix: Spark-Delta rechnet auf gerundeter numerischer Basis (dnum)
statt parseFloat auf dem formatierten String — mit DE-Komma haette
parseFloat("−0,9") sonst bei "0" abgeschnitten.

Playwright-verifiziert (Firefox, hell + dunkel): Kacheln "81,7/7,4/
77,8/2,46", Chips dim bei n<20 und korrekt gefaerbt bei reliable
(accept-Abfall rot, hall-Abfall gruen, cov-Anstieg gruen), Tabellen
"100,0%"/"4.100", Canvas-Labels "92,9 %", 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