update
This commit is contained in:
@@ -557,6 +557,17 @@ async def count_relevant_subs(topic: str, baustein: str) -> int:
|
|||||||
return (await cursor.fetchone())[0]
|
return (await cursor.fetchone())[0]
|
||||||
|
|
||||||
|
|
||||||
|
async def subs_count_roh(topic: str) -> dict[str, int]:
|
||||||
|
"""Relevante Konsens-Subbausteine je ROHEM Baustein-Titel (= Guide-Section-Titel) eines Themas."""
|
||||||
|
db = await get_db()
|
||||||
|
cursor = await db.execute(
|
||||||
|
"SELECT baustein, COUNT(*) FROM subbausteine WHERE topic = ? "
|
||||||
|
"AND status = 'konsens' AND relevanz != 'rand' GROUP BY baustein",
|
||||||
|
(topic,),
|
||||||
|
)
|
||||||
|
return {b: n for b, n in await cursor.fetchall()}
|
||||||
|
|
||||||
|
|
||||||
async def subs_count_alle() -> dict[tuple[str, str], int]:
|
async def subs_count_alle() -> dict[tuple[str, str], int]:
|
||||||
"""Relevante Konsens-Subbausteine je (topic, baustein_norm) — für die Stufen-Ableitung."""
|
"""Relevante Konsens-Subbausteine je (topic, baustein_norm) — für die Stufen-Ableitung."""
|
||||||
db = await get_db()
|
db = await get_db()
|
||||||
|
|||||||
@@ -14,10 +14,9 @@ from database import (
|
|||||||
list_progress, set_progress, delete_progress,
|
list_progress, set_progress, delete_progress,
|
||||||
create_element, list_elements, get_element, update_element, delete_element,
|
create_element, list_elements, get_element, update_element, delete_element,
|
||||||
list_baustein_progress, get_baustein_progress, set_offene_frage,
|
list_baustein_progress, get_baustein_progress, set_offene_frage,
|
||||||
set_baustein_score, set_baustein_absolviert, delete_baustein_daten, count_relevant_subs, subs_count_alle,
|
set_baustein_score, set_baustein_absolviert, delete_baustein_daten, count_relevant_subs, subs_count_roh,
|
||||||
delete_topic_pipeline, delete_quelle, get_guide_content, delete_guide_content,
|
delete_topic_pipeline, delete_quelle, get_guide_content, delete_guide_content,
|
||||||
)
|
)
|
||||||
from textkit import _norm_titel
|
|
||||||
from bausteine import generate_bausteine, cancel_bausteine, bausteine_status, active_bausteine, reset_bausteine, lade_quelle, lade_uebersicht, subbausteine_titel, lade_frage_muster
|
from bausteine import generate_bausteine, cancel_bausteine, bausteine_status, active_bausteine, reset_bausteine, lade_quelle, lade_uebersicht, subbausteine_titel, lade_frage_muster
|
||||||
from elements import generate_element, chat_with_guide, chat_with_element, check_element, style_element, refine_suggestion
|
from elements import generate_element, chat_with_guide, chat_with_element, check_element, style_element, refine_suggestion
|
||||||
from lernen import NIVEAUS, cap_fuer, baustein_chat, baustein_diskussion, baustein_element_anlegen, pruefung_bewertung, pruefung_bewertung_schnell, pruefung_frage, pruefung_frage_variante, quiz_generieren, lueckwahl_generieren, lueckentext_generieren, lueckentext_pruefen, score_berechnen, floor_aus_score, progressiver_malus, stufe_aus_score
|
from lernen import NIVEAUS, cap_fuer, baustein_chat, baustein_diskussion, baustein_element_anlegen, pruefung_bewertung, pruefung_bewertung_schnell, pruefung_frage, pruefung_frage_variante, quiz_generieren, lueckwahl_generieren, lueckentext_generieren, lueckentext_pruefen, score_berechnen, floor_aus_score, progressiver_malus, stufe_aus_score
|
||||||
@@ -222,17 +221,22 @@ async def get_frage_muster(topic: str, baustein: str):
|
|||||||
|
|
||||||
@router.get("/bausteine/lernstand", response_model=BausteinLernstandResponse)
|
@router.get("/bausteine/lernstand", response_model=BausteinLernstandResponse)
|
||||||
async def baustein_lernstand(topic: str):
|
async def baustein_lernstand(topic: str):
|
||||||
"""Prüfungs-Stand pro Baustein (roher Titel als Key). cap = 2×relevante Subs [10,50]."""
|
"""Prüfungs-Stand pro Baustein (roher Titel als Key). cap = 2×relevante Subs [10,50]
|
||||||
progress = await list_baustein_progress(topic)
|
— für ALLE Bausteine (auch noch nicht geprüfte), damit der cap sofort stimmt."""
|
||||||
caps = await subs_count_alle()
|
progress = {p["baustein"]: p for p in await list_baustein_progress(topic)}
|
||||||
|
caps = await subs_count_roh(topic)
|
||||||
bausteine = {
|
bausteine = {
|
||||||
p["baustein"]: {
|
b: {
|
||||||
"gute_antworten": p["gute_antworten"],
|
"gute_antworten": progress[b]["gute_antworten"] if b in progress else 0,
|
||||||
"streak": p["streak"],
|
"streak": progress[b]["streak"] if b in progress else 0,
|
||||||
"cap": cap_fuer(caps.get((topic, _norm_titel(p["baustein"])), 0)),
|
"cap": cap_fuer(n),
|
||||||
}
|
}
|
||||||
for p in progress
|
for b, n in caps.items()
|
||||||
}
|
}
|
||||||
|
# Altbestand-Bausteine mit Prüfung, aber ohne (relevante) Subs → Default-cap.
|
||||||
|
for b, p in progress.items():
|
||||||
|
if b not in bausteine:
|
||||||
|
bausteine[b] = {"gute_antworten": p["gute_antworten"], "streak": p["streak"], "cap": 10}
|
||||||
return {"bausteine": bausteine}
|
return {"bausteine": bausteine}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user