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(
|
||||
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:
|
||||
"""Neuer Score nach einer Antwort · driftfrei (immer aus dem Basis-Score gerechnet).
|
||||
|
||||
@@ -44,6 +45,12 @@ def score_berechnen(
|
||||
"""
|
||||
if gemeistert:
|
||||
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:
|
||||
floor, cap, strafe = (NOETIG if absolviert else 0), NOETIG, 0
|
||||
elif not tier3:
|
||||
|
||||
@@ -252,7 +252,7 @@ async def baustein_pruefung_route(req: BausteinPruefungRequest):
|
||||
)
|
||||
if data is None:
|
||||
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,
|
||||
"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 = 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)
|
||||
if score >= NOETIG and not absolviert:
|
||||
|
||||
Reference in New Issue
Block a user