This commit is contained in:
team3
2026-07-13 16:11:00 +02:00
parent 9cd8e02e22
commit a8e8e077bd
14 changed files with 454 additions and 62 deletions

View File

@@ -14,6 +14,7 @@ from fastapi.staticfiles import StaticFiles
from pydantic import BaseModel
import agents
import artefakte
import db
import guide
import ledger
@@ -156,11 +157,17 @@ def state(topic: str):
raise HTTPException(404, "unbekanntes Topic")
run = db.one("SELECT * FROM runs WHERE topic=? ORDER BY id DESC", (topic,))
atome = db.query("SELECT * FROM atome WHERE topic=? ORDER BY id", (topic,))
# Nenner = SOLL je Atom (2 Karten + 1 Beispiel + 4 Aussagen), Zähler =
# Verifizierte, je Typ aufs Ziel gekappt — so liest sich die Karte als
# Fortschritt Richtung Vollständigkeit, nicht als Zeilenzählung.
ziel_gesamt = sum(artefakte.ZIEL_ZEILEN.values())
fuer_atom = {}
for a in db.query(
"SELECT atom_id, SUM(status='verifiziert') AS ok, COUNT(*) AS n FROM artefakte"
" WHERE atom_id IN (SELECT id FROM atome WHERE topic=?) GROUP BY atom_id", (topic,)):
fuer_atom[a["atom_id"]] = {"verifiziert": a["ok"], "gesamt": a["n"]}
"SELECT atom_id, typ, SUM(status='verifiziert') AS ok FROM artefakte"
" WHERE atom_id IN (SELECT id FROM atome WHERE topic=?)"
" GROUP BY atom_id, typ", (topic,)):
e = fuer_atom.setdefault(a["atom_id"], {"verifiziert": 0, "gesamt": ziel_gesamt})
e["verifiziert"] += min(a["ok"], artefakte.ZIEL_ZEILEN.get(a["typ"], 0))
return {
"topic": t, "run": run,
"ebenen": _ebenen_info(t, run),
@@ -171,7 +178,8 @@ def state(topic: str):
"soll": db.query("SELECT * FROM soll WHERE topic=? AND status='bestaetigt'"
" ORDER BY id", (topic,))
or db.query("SELECT * FROM soll WHERE topic=? ORDER BY id", (topic,)),
"atome": [{**a, "artefakte": fuer_atom.get(a["id"], {"verifiziert": 0, "gesamt": 0})}
"atome": [{**a, "artefakte": fuer_atom.get(a["id"],
{"verifiziert": 0, "gesamt": ziel_gesamt})}
for a in atome],
"lernziele": db.query("SELECT * FROM lernziele WHERE topic=? ORDER BY id", (topic,)),
"bausteine": db.query(