update
This commit is contained in:
@@ -29,7 +29,8 @@ KRITIK_MAX_RUNDEN = 2 # Generator → Kritiker → ggf. Neu, höchstens so oft
|
|||||||
|
|
||||||
|
|
||||||
def score_berechnen(
|
def score_berechnen(
|
||||||
score_vor_frage: int, gut: bool, streak: int, tier2: bool, tier3: bool, absolviert: bool, gemeistert: bool,
|
score_vor_frage: int, gut: bool, streak: int, tier2: bool, tier3: bool,
|
||||||
|
absolviert: bool, verstanden: bool, gemeistert: bool,
|
||||||
) -> int:
|
) -> int:
|
||||||
"""Neuer Score nach einer Antwort · driftfrei (immer aus dem Basis-Score gerechnet).
|
"""Neuer Score nach einer Antwort · driftfrei (immer aus dem Basis-Score gerechnet).
|
||||||
|
|
||||||
@@ -44,6 +45,12 @@ def score_berechnen(
|
|||||||
"""
|
"""
|
||||||
if gemeistert:
|
if gemeistert:
|
||||||
return MEISTERN
|
return MEISTERN
|
||||||
|
# Stufe richtet sich nach dem Baustein-Fortschritt, nicht nur nach den
|
||||||
|
# Guide-Flags: ein frischer Baustein durchläuft erst Tier 1 (0→3), auch
|
||||||
|
# wenn der Guide schon tier2/tier3 freigibt. Tier 2 erst ab absolviert,
|
||||||
|
# Tier 3 erst ab verstanden.
|
||||||
|
tier2 = tier2 and absolviert
|
||||||
|
tier3 = tier3 and verstanden
|
||||||
if not tier2:
|
if not tier2:
|
||||||
floor, cap, strafe = (NOETIG if absolviert else 0), NOETIG, 0
|
floor, cap, strafe = (NOETIG if absolviert else 0), NOETIG, 0
|
||||||
elif not tier3:
|
elif not tier3:
|
||||||
|
|||||||
@@ -252,7 +252,7 @@ async def baustein_pruefung_route(req: BausteinPruefungRequest):
|
|||||||
)
|
)
|
||||||
if data is None:
|
if data is None:
|
||||||
raise HTTPException(502, "Bewertung fehlgeschlagen — bitte erneut versuchen")
|
raise HTTPException(502, "Bewertung fehlgeschlagen — bitte erneut versuchen")
|
||||||
score = score_berechnen(req.score_vor_frage, data["bewertung"] == "gut", req.streak, req.tier2, req.tier3, absolviert, gemeistert)
|
score = score_berechnen(req.score_vor_frage, data["bewertung"] == "gut", req.streak, req.tier2, req.tier3, absolviert, verstanden, gemeistert)
|
||||||
return {"feedback": data["feedback"], "bewertung": data["bewertung"], "gute_antworten": score,
|
return {"feedback": data["feedback"], "bewertung": data["bewertung"], "gute_antworten": score,
|
||||||
"absolviert": absolviert, "verstanden": verstanden, "gemeistert": gemeistert}
|
"absolviert": absolviert, "verstanden": verstanden, "gemeistert": gemeistert}
|
||||||
|
|
||||||
@@ -265,7 +265,7 @@ async def baustein_pruefung_route(req: BausteinPruefungRequest):
|
|||||||
|
|
||||||
# Score driftfrei aus dem Basis-Score rechnen (Re-Bewertung ersetzt das vorige Ergebnis).
|
# Score driftfrei aus dem Basis-Score rechnen (Re-Bewertung ersetzt das vorige Ergebnis).
|
||||||
score = score_berechnen(
|
score = score_berechnen(
|
||||||
req.score_vor_frage, data["bewertung"] == "gut", req.streak, req.tier2, req.tier3, absolviert, gemeistert,
|
req.score_vor_frage, data["bewertung"] == "gut", req.streak, req.tier2, req.tier3, absolviert, verstanden, gemeistert,
|
||||||
)
|
)
|
||||||
gute = await set_baustein_score(req.topic, req.baustein, score)
|
gute = await set_baustein_score(req.topic, req.baustein, score)
|
||||||
if score >= NOETIG and not absolviert:
|
if score >= NOETIG and not absolviert:
|
||||||
|
|||||||
Reference in New Issue
Block a user