update
This commit is contained in:
@@ -415,33 +415,19 @@ async def baustein_pruefung_route(req: BausteinPruefungRequest):
|
|||||||
return {"feedback": data["feedback"], "punkte": punkte, "bewertung": _farbe(punkte),
|
return {"feedback": data["feedback"], "punkte": punkte, "bewertung": _farbe(punkte),
|
||||||
"gute_antworten": gute, "cap": cap}
|
"gute_antworten": gute, "cap": cap}
|
||||||
|
|
||||||
# aktion "antwort_pruefen" (Agent 2 genau): verbindlich, persistiert. Serialisiert je Baustein,
|
# aktion "antwort_pruefen" (Agent 2 genau): verbindlich, persistiert. NUR hier ändert sich der Score.
|
||||||
# Basis driftfrei über den offene_frage-Anker. NUR hier ändert sich der Score.
|
# LLM läuft OHNE Lock; gebucht wird kurz über _buche (Anker + Score), wie bei Quiz/Lück.
|
||||||
async with _pruef_lock(req.topic, req.baustein):
|
# So blockiert die lange KI-Bewertung keine folgende (deterministische) Antwort desselben Bausteins.
|
||||||
stand = await get_baustein_progress(req.topic, req.baustein)
|
data = await pruefung_bewertung(
|
||||||
war_stufe = stand["absolviert"] is not None # Element-Guard
|
req.topic, req.baustein, req.section, kompakt, req.frage, msgs, provider=req.provider,
|
||||||
basis, re_bewertung = _basis(stand, req.frage)
|
role="guide" if req.gruendlich else "judge", begruendung=req.begruendung,
|
||||||
if not re_bewertung:
|
)
|
||||||
await set_offene_frage(req.topic, req.baustein, req.frage, basis, 0)
|
if data is None:
|
||||||
|
raise HTTPException(502, "Bewertung fehlgeschlagen — bitte erneut versuchen")
|
||||||
data = await pruefung_bewertung(
|
roh = _erklaeren_delta(data["niveau"], req.nachgefragt)
|
||||||
req.topic, req.baustein, req.section, kompakt, req.frage, msgs, provider=req.provider,
|
res = await _buche(req, req.frage, roh, cap) # kurzer Lock: Basis driftfrei über offene_frage-Anker
|
||||||
role="guide" if req.gruendlich else "judge", begruendung=req.begruendung,
|
res["feedback"] = data["feedback"]
|
||||||
)
|
return res
|
||||||
if data is None:
|
|
||||||
raise HTTPException(502, "Bewertung fehlgeschlagen — bitte erneut versuchen")
|
|
||||||
|
|
||||||
floor = floor_aus_score(basis, cap)
|
|
||||||
roh = _erklaeren_delta(data["niveau"], req.nachgefragt)
|
|
||||||
d = progressiver_malus(basis, cap) if roh < 0 else roh
|
|
||||||
score = score_berechnen(basis, d, floor, cap)
|
|
||||||
punkte = score - basis
|
|
||||||
gute = await set_baustein_score(req.topic, req.baustein, score)
|
|
||||||
if not war_stufe and stufe_aus_score(score, cap) is not None:
|
|
||||||
if await set_baustein_absolviert(req.topic, req.baustein):
|
|
||||||
asyncio.create_task(baustein_element_anlegen(req.topic, req.baustein, req.section, req.provider))
|
|
||||||
return {"feedback": data["feedback"], "punkte": punkte, "bewertung": _farbe(punkte),
|
|
||||||
"gute_antworten": gute, "cap": cap}
|
|
||||||
|
|
||||||
|
|
||||||
# --- Guides ---
|
# --- Guides ---
|
||||||
|
|||||||
Reference in New Issue
Block a user