This commit is contained in:
team3
2026-07-08 21:14:33 +02:00
parent 9a6ab0937b
commit f9d77a113b
30 changed files with 1064 additions and 654 deletions

View File

@@ -301,6 +301,33 @@ async def test_events_run_summary_per_board(testdb):
assert (await db.events_run_summary(TOPIC, "r2"))["agents"]["gesamt"] == 2 # ohne board = alle
async def test_latest_board_runs_je_ebene(testdb):
"""Je Ebene der jüngste Lauf MIT Daten: ein „Nur Artefakte"-Lauf (r2) lässt die
Inventar-Anzeige auf r1 stehen; Guide-Läufe (Suffix -g+hex4) haben eine eigene Zeile."""
db = testdb
assert await db.latest_board_runs(TOPIC) == {"inventory": None, "artefacts": None, "guide": None}
db.set_current_run(TOPIC, "20260708-1000-aaaa") # Voll-Lauf: beide Ebenen
await db.add_event(TOPIC, "agent", key="i1", status="ok",
meta={"board": "inventory", "tokens": {"input": 10, "output": 1}})
await db.add_event(TOPIC, "agent", key="a1", status="ok", meta={"board": "artefacts"})
db.set_current_run(TOPIC, "20260708-1100-bbbb") # „Nur Artefakte"
await db.add_event(TOPIC, "agent", key="a2", status="ok",
meta={"board": "artefacts", "tokens": {"input": 5, "output": 7}})
db.set_current_run(TOPIC, "20260708-1200-gabc1") # Guide (Events untagged)
await db.add_event(TOPIC, "agent", key="g1", status="ok",
meta={"tokens": {"input": 3, "output": 4}})
latest = await db.latest_board_runs(TOPIC)
assert latest["inventory"]["run_id"] == "20260708-1000-aaaa"
assert latest["inventory"]["tokens"]["input"] == 10
assert latest["artefacts"]["run_id"] == "20260708-1100-bbbb"
assert latest["artefacts"]["tokens"]["output"] == 7
assert latest["guide"]["run_id"] == "20260708-1200-gabc1"
assert latest["guide"]["tokens"]["input"] == 3
# aktiv folgt der Registry: nur der Guide-Lauf ist noch der aktuelle
assert latest["guide"]["aktiv"] and not latest["inventory"]["aktiv"]
db.set_current_run(TOPIC, None)
async def test_topic_delete_entfernt_guides_und_kanban(testdb, tmp_path, monkeypatch):
"""DELETE /topics: guides/guide_cards/kanban_cards mitlöschen — GET /topics leitet
Topics aus guides ab, sonst taucht das gelöschte Topic sofort wieder auf."""
@@ -351,6 +378,7 @@ async def test_runs_endpoint_liefert_bilanz(testdb):
await db.add_event(TOPIC, "fail", key="inventory:b-1", status="dead", meta={"error": "kaputt"})
res = await routes.get_runs(TOPIC)
runs = res["runs"]
assert set(res["latest"]) == {"inventory", "artefacts", "guide"} # je Ebene letzter Lauf mit Daten
assert len(runs) == 1 and runs[0]["run_id"] == "r1" and runs[0]["aktiv"] is True
assert runs[0]["agents"]["gesamt"] == 2 and runs[0]["agents"]["timeout"] == 1
assert runs[0]["tokens"]["output"] == 20