update
This commit is contained in:
@@ -545,22 +545,33 @@ async def set_baustein_absolviert(topic: str, baustein: str) -> bool:
|
||||
return cursor.rowcount > 0
|
||||
|
||||
|
||||
async def list_baustein_levels_all() -> dict[str, dict[str, set[str]]]:
|
||||
"""Bausteine je Meilenstein in EINER Query: {"absolviert"/"verstanden"/"gemeistert": {topic → {Titel}}}."""
|
||||
async def count_relevant_subs(topic: str, baustein: str) -> int:
|
||||
"""Anzahl relevanter Konsens-Subbausteine eines Bausteins (für den cap = 2×Subs)."""
|
||||
from textkit import _norm_titel
|
||||
db = await get_db()
|
||||
cursor = await db.execute(
|
||||
"SELECT topic, baustein, absolviert, verstanden, gemeistert FROM baustein_progress"
|
||||
"SELECT COUNT(*) FROM subbausteine WHERE topic = ? AND baustein_norm = ? "
|
||||
"AND status = 'konsens' AND relevanz != 'rand'",
|
||||
(topic, _norm_titel(baustein)),
|
||||
)
|
||||
rows = await cursor.fetchall()
|
||||
levels: dict[str, dict[str, set[str]]] = {"absolviert": {}, "verstanden": {}, "gemeistert": {}}
|
||||
for topic, baustein, absolviert, verstanden, gemeistert in rows:
|
||||
if absolviert is not None:
|
||||
levels["absolviert"].setdefault(topic, set()).add(baustein)
|
||||
if verstanden is not None:
|
||||
levels["verstanden"].setdefault(topic, set()).add(baustein)
|
||||
if gemeistert is not None:
|
||||
levels["gemeistert"].setdefault(topic, set()).add(baustein)
|
||||
return levels
|
||||
return (await cursor.fetchone())[0]
|
||||
|
||||
|
||||
async def subs_count_alle() -> dict[tuple[str, str], int]:
|
||||
"""Relevante Konsens-Subbausteine je (topic, baustein_norm) — für die Stufen-Ableitung."""
|
||||
db = await get_db()
|
||||
cursor = await db.execute(
|
||||
"SELECT topic, baustein_norm, COUNT(*) FROM subbausteine "
|
||||
"WHERE status = 'konsens' AND relevanz != 'rand' GROUP BY topic, baustein_norm"
|
||||
)
|
||||
return {(t, bn): n for t, bn, n in await cursor.fetchall()}
|
||||
|
||||
|
||||
async def list_baustein_scores_all() -> list[tuple[str, str, int]]:
|
||||
"""(topic, baustein, gute_antworten) je Baustein — Rohdaten für die Stufen-Ableitung."""
|
||||
db = await get_db()
|
||||
cursor = await db.execute("SELECT topic, baustein, gute_antworten FROM baustein_progress")
|
||||
return [(t, b, n) for t, b, n in await cursor.fetchall()]
|
||||
|
||||
|
||||
async def delete_baustein_daten(topic: str) -> None:
|
||||
|
||||
Reference in New Issue
Block a user