update
This commit is contained in:
@@ -147,44 +147,56 @@ async def remove_bausteine(topic: str):
|
||||
|
||||
# --- Baustein-Lernen: Vertiefung, Chat, Prüfung ---
|
||||
|
||||
async def _bester_text(topic: str, baustein: str) -> str | None:
|
||||
"""Kontext für Chat/Prüfung: Deep Dive bevorzugt, sonst kurze Vertiefung."""
|
||||
return await get_vertiefung(topic, baustein, "deepdive") or await get_vertiefung(topic, baustein, "vertiefung")
|
||||
|
||||
|
||||
@router.get("/bausteine/lernstand", response_model=BausteinLernstandResponse)
|
||||
async def baustein_lernstand(topic: str):
|
||||
"""Prüfungs-Stand + Vertiefungs-Existenz pro Baustein (roher Titel als Key)."""
|
||||
"""Prüfungs-Stand + Vertiefungs-/Deepdive-Existenz pro Baustein (roher Titel als Key)."""
|
||||
progress = await list_baustein_progress(topic)
|
||||
mit_vertiefung = await list_vertiefungen(topic)
|
||||
texte = await list_vertiefungen(topic)
|
||||
bausteine = {
|
||||
p["baustein"]: {
|
||||
"gute_antworten": p["gute_antworten"],
|
||||
"absolviert": p["absolviert"] is not None,
|
||||
"vertiefung": p["baustein"] in mit_vertiefung,
|
||||
"vertiefung": "vertiefung" in texte.get(p["baustein"], set()),
|
||||
"deepdive": "deepdive" in texte.get(p["baustein"], set()),
|
||||
}
|
||||
for p in progress
|
||||
}
|
||||
for b in mit_vertiefung - set(bausteine):
|
||||
bausteine[b] = {"gute_antworten": 0, "absolviert": False, "vertiefung": True}
|
||||
for b, arten in texte.items():
|
||||
if b not in bausteine:
|
||||
bausteine[b] = {
|
||||
"gute_antworten": 0, "absolviert": False,
|
||||
"vertiefung": "vertiefung" in arten, "deepdive": "deepdive" in arten,
|
||||
}
|
||||
return {"bausteine": bausteine}
|
||||
|
||||
|
||||
@router.get("/bausteine/vertiefung", response_model=VertiefungResponse)
|
||||
async def get_baustein_vertiefung(topic: str, baustein: str):
|
||||
md = await get_vertiefung(topic, baustein)
|
||||
async def get_baustein_vertiefung(topic: str, baustein: str, art: str = "vertiefung"):
|
||||
if art not in ("vertiefung", "deepdive"):
|
||||
raise HTTPException(400, "Unbekannte Art")
|
||||
md = await get_vertiefung(topic, baustein, art)
|
||||
if md is None:
|
||||
raise HTTPException(404, "Keine Vertiefung vorhanden")
|
||||
raise HTTPException(404, "Kein Text vorhanden")
|
||||
return {"md": md}
|
||||
|
||||
|
||||
@router.post("/bausteine/vertiefung", response_model=VertiefungResponse)
|
||||
async def create_baustein_vertiefung(req: VertiefungRequest):
|
||||
md = await vertiefung_generieren(req.topic, req.baustein, req.section, provider=req.provider)
|
||||
md = await vertiefung_generieren(req.topic, req.baustein, req.section, art=req.art, provider=req.provider)
|
||||
if md is None:
|
||||
raise HTTPException(502, "Vertiefung fehlgeschlagen — bitte erneut versuchen")
|
||||
await set_vertiefung(req.topic, req.baustein, md)
|
||||
raise HTTPException(502, "Generierung fehlgeschlagen — bitte erneut versuchen")
|
||||
await set_vertiefung(req.topic, req.baustein, req.art, md)
|
||||
return {"md": md}
|
||||
|
||||
|
||||
@router.post("/bausteine/chat", response_model=BausteinChatResponse)
|
||||
async def baustein_chat_route(req: BausteinChatRequest):
|
||||
vertiefung = await get_vertiefung(req.topic, req.baustein)
|
||||
vertiefung = await _bester_text(req.topic, req.baustein)
|
||||
reply = await baustein_chat(
|
||||
req.topic, req.baustein, req.section, vertiefung,
|
||||
[m.model_dump() for m in req.messages], provider=req.provider,
|
||||
@@ -198,7 +210,7 @@ async def baustein_pruefung_route(req: BausteinPruefungRequest):
|
||||
(p for p in await list_baustein_progress(req.topic) if p["baustein"] == req.baustein),
|
||||
{"gute_antworten": 0, "absolviert": None},
|
||||
)
|
||||
vertiefung = await get_vertiefung(req.topic, req.baustein)
|
||||
vertiefung = await _bester_text(req.topic, req.baustein)
|
||||
data = await baustein_pruefung(
|
||||
req.topic, req.baustein, req.section, vertiefung,
|
||||
[m.model_dump() for m in req.messages], stand["gute_antworten"], provider=req.provider,
|
||||
|
||||
Reference in New Issue
Block a user