update
This commit is contained in:
@@ -21,7 +21,7 @@ from elements import generate_element, chat_with_guide, chat_with_element, check
|
||||
from lernen import NOETIG, MASTERY, MEISTERN, baustein_chat, baustein_diskussion, baustein_element_anlegen, pruefung_bewertung, pruefung_frage, score_berechnen, vertiefung_generieren
|
||||
from guide import generate_guide, guide_slot_dateien
|
||||
from pipeline import cancel_guide
|
||||
from regeln import FORMATE, formate_stats, guide_lock, ist_absolviert, lade_lernstand
|
||||
from regeln import FORMATE, formate_stats, guide_lock, ist_absolviert, lade_lernstand, thema_abgeschlossen
|
||||
from models import (
|
||||
GuideCreateRequest, GuideResponse,
|
||||
TopicCreateRequest,
|
||||
@@ -59,18 +59,20 @@ async def get_topics():
|
||||
@router.get("/stats")
|
||||
async def get_stats():
|
||||
"""Tracker: Themen-Anzahl + pro Format erstellt/absolviert."""
|
||||
guides, progress, bausteine_done = await lade_lernstand()
|
||||
guides, progress, levels = await lade_lernstand()
|
||||
themen = set(await db_list_topics()) | {g["topic"] for g in guides} | set(bausteine_topics())
|
||||
if PROJECTS_DIR.is_dir():
|
||||
themen |= {e.name for e in PROJECTS_DIR.iterdir() if e.is_dir()}
|
||||
return {"themen": len(themen), "formate": formate_stats(guides, progress, bausteine_done)}
|
||||
return {"themen": len(themen), "formate": formate_stats(guides, progress, levels)}
|
||||
|
||||
|
||||
@router.get("/topics/fortschritt")
|
||||
async def topic_fortschritt(topic: str):
|
||||
"""Absolviert-Status pro Format — fürs Freischalten der nächsten Ausbaustufe."""
|
||||
guides, progress, bausteine_done = await lade_lernstand()
|
||||
return {fmt: ist_absolviert(topic, fmt, guides, progress, bausteine_done) for fmt in FORMATE}
|
||||
"""Absolviert-Status pro Format + Themen-Abschluss — fürs Freischalten der nächsten Ausbaustufe."""
|
||||
guides, progress, levels = await lade_lernstand()
|
||||
status = {fmt: ist_absolviert(topic, fmt, guides, progress, levels) for fmt in FORMATE}
|
||||
status["abgeschlossen"] = thema_abgeschlossen(topic, guides, progress, levels)
|
||||
return status
|
||||
|
||||
|
||||
@router.post("/topics")
|
||||
@@ -270,8 +272,8 @@ async def baustein_pruefung_route(req: BausteinPruefungRequest):
|
||||
|
||||
@router.post("/guides", response_model=GuideResponse)
|
||||
async def create(req: GuideCreateRequest):
|
||||
guides, progress, bausteine_done = await lade_lernstand()
|
||||
grund = guide_lock(req.topic.strip(), req.format, guides, progress, bausteine_done)
|
||||
guides, progress, levels = await lade_lernstand()
|
||||
grund = guide_lock(req.topic.strip(), req.format, guides, progress, levels)
|
||||
if grund:
|
||||
raise HTTPException(400 if grund == "Erst Bausteine erstellen" else 409, grund)
|
||||
await create_topic(req.topic.strip())
|
||||
@@ -299,8 +301,8 @@ async def list_all():
|
||||
@router.get("/guides/locks")
|
||||
async def guide_locks(topic: str):
|
||||
"""Sperr-Gründe pro Format für den ▶-Button — None = erstellbar."""
|
||||
guides, progress, bausteine_done = await lade_lernstand()
|
||||
return {fmt: guide_lock(topic, fmt, guides, progress, bausteine_done) for fmt in ("OnePager", *FORMATE)}
|
||||
guides, progress, levels = await lade_lernstand()
|
||||
return {fmt: guide_lock(topic, fmt, guides, progress, levels) for fmt in ("OnePager", *FORMATE)}
|
||||
|
||||
|
||||
@router.get("/guides/{guide_id}", response_model=GuideResponse)
|
||||
|
||||
Reference in New Issue
Block a user