Skip to content

fix(dashboard): total_dur_h filtert Waisen-Traces via db_matched (#229)#251

Merged
TillQuandel merged 1 commit into
masterfrom
fix/229-total-dur-waisen
Jul 13, 2026
Merged

fix(dashboard): total_dur_h filtert Waisen-Traces via db_matched (#229)#251
TillQuandel merged 1 commit into
masterfrom
fix/229-total-dur-waisen

Conversation

@TillQuandel

Copy link
Copy Markdown
Owner

Befund

Beim #226-Nachbar-KPI-Audit festgestellt: total_dur_h summierte weiterhin ALLE Traces inkl. Waisen (Trace-JSONL ohne pipeline_runs-Zeile) — 40,1h angezeigt vs. 31,2h DB-gejoint (~22% zu hoch). Die Nachbar-KPI total_tokens hat seit PR #226 den db_matched-Filter, total_dur_s fehlte er (bewusst nicht mitgefixt, Scope-Disziplin in #226).

Fix

generative/eval_dashboard.py:609, Funktion _calc_kpis — derselbe Filter wie bei total_tokens direkt daneben:

-    total_dur_s = sum(r["duration_min"] * 60 for r in token_runs)
+    total_dur_s = sum(r["duration_min"] * 60 for r in token_runs if r.get("db_matched", True))

db_matched wird beim Server-Join in generative/eval_dashboard_server.py:450 gesetzt (tr["db_matched"] = tr.get("run_id","") in _run_info); DB-only-Runs sind per Konstruktion True (Zeile 507). Default True erhält den deprecated Standalone-Pfad (main()/_build_html), der _calc_kpis ohne Server-Join aufruft.

Scope strikt auf die eine Filter-Zeile begrenzt — Token-Totals und Dauer-Semantik selbst unverändert (das sind #238/#239, separate Issues). Die Strip-Hint-HTML wurde nicht angefasst: sie beschreibt die Laufzeit nicht explizit falsch, nur unspezifisch — mit dem Fix stimmt die implizite DB-Zuordnungs-Basis jetzt ohnehin für Tokens und Laufzeit überein.

TDD

Neuer Test generative/tests/test_dashboard_total_dur_h_db_matched.py (analog zum #226-Vorbild test_dashboard_total_tokens_db_matched.py):

  • RED auf master (56a3a39): Waisen-Run (10h, db_matched=False) wurde mitgezählt — 11.0 == 1.0 schlug fehl.
  • GREEN nach Fix: 3/3 neue Tests grün, plus alle 7 bestehenden total_tokens-Tests weiterhin grün (10/10 zusammen).

Suite

pytest generative lib/decision_engine/tests shared/tests -q: 5791 passed, 3 skipped, 4 deselected, 0 failed.

ruff

ruff check + ruff format --check auf geänderten Dateien: sauber.

Closes #229

total_dur_h summierte bisher ALLE token_runs inkl. Waisen-Traces (Trace-
JSONL ohne pipeline_runs-Zeile) — 40,1h angezeigt vs. 31,2h DB-gejoint
(~22% zu hoch). total_tokens hat seit PR #226 den db_matched-Filter,
total_dur_s fehlte er (Scope-Disziplin in #226 bewusst ausgeklammert).

Fix: denselben `if r.get("db_matched", True)`-Filter auf total_dur_s
angewendet (eval_dashboard.py:609), analog zu total_tokens direkt
daneben.
@TillQuandel
TillQuandel merged commit 57e7e21 into master Jul 13, 2026
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.

Dashboard: Lifetime-Laufzeit (total_dur_h) zaehlt Waisen-Traces — Folge zu #198 P3

2 participants