This commit is contained in:
team3
2026-06-23 12:04:17 +02:00
parent 9a02e8dc76
commit cd1c926599
2 changed files with 15 additions and 11 deletions

View File

@@ -251,7 +251,9 @@ def _bausteine_files(topic: str) -> dict:
def _alle_slot_dateien(files: dict) -> list[Path]:
arbeit = files["arbeit"]
# Subbaustein-/Stufen-Slots sind pro Chunk dynamisch — per Glob einsammeln.
dyn = (list(arbeit.glob("subbaustein-*")) + list(arbeit.glob("stufe-*")) + list(arbeit.glob("relevanz-*")) + list(arbeit.glob("frage-muster-*"))) if arbeit.is_dir() else []
dyn = (list(arbeit.glob("subbaustein-*")) + list(arbeit.glob("stufe-*")) + list(arbeit.glob("relevanz-*"))
+ list(arbeit.glob("frage-muster-*")) + list(arbeit.glob("recherche-*")) + list(arbeit.glob("konsolidierung-*"))
+ list(arbeit.glob("klaerung*"))) if arbeit.is_dir() else []
return [
*files["recherche"], files["recherche_mapping"],
*(p for slots in files["auswahl"].values() for p in slots),
@@ -322,16 +324,18 @@ def active_bausteine() -> list[dict]:
def reset_bausteine(topic: str) -> None:
files = _bausteine_files(topic)
files["final"].unlink(missing_ok=True)
files["sidecar"].unlink(missing_ok=True) # liegt im Themen-Root, nicht in arbeit/
files["frage_muster"].unlink(missing_ok=True) # ebenfalls im Themen-Root
quelle_path(topic).unlink(missing_ok=True)
shutil.rmtree(quelle_crawl_dir(topic), ignore_errors=True) # gecrawlte Link-Quelle
shutil.rmtree(files["arbeit"], ignore_errors=True)
"""„Löschen": räumt nur die generierten Bausteine weg (Dateien ab Inventar). BEHÄLT
Quelle (quelle.json), Crawl-Ordner und Sichtung. Voller Wipe inkl. Quelle/Crawl nur
über „Thema löschen" (DELETE /topics → rmtree(topic_dir))."""
_reset_ab_phase(topic, "Inventar")
_bausteine_errors.pop(topic, None)
async def reset_bausteine_db(topic: str) -> None:
"""DB-Pendant zu reset_bausteine: Inventar…Fragen aus der DB; Coverage/Sichtung + Quelle bleiben."""
await _reset_db_ab_phase(topic, "Inventar")
def _phase_idx(label: str) -> int:
"""Index der groben Phase in der kanonischen Reihenfolge (Quelle=0 … Fragen=5)."""
order = [l for l, _ in PHASEN]

View File

@@ -17,7 +17,7 @@ from database import (
set_baustein_score, set_baustein_absolviert, set_baustein_verstanden, set_baustein_gemeistert, delete_baustein_daten,
delete_topic_pipeline, get_guide_content, delete_guide_content,
)
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, reset_bausteine_db, 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 lernen import NOETIG, MASTERY, MEISTERN, NIVEAUS, 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_meilensteinen, _zufall_malus
from guide import generate_guide, guide_slot_dateien, guide_fertig_step
@@ -172,8 +172,8 @@ async def cancel_bausteine_route(topic: str):
@router.delete("/bausteine")
async def remove_bausteine(topic: str):
reset_bausteine(topic)
await delete_topic_pipeline(topic)
reset_bausteine(topic) # Dateien ab Inventar — Quelle/Crawl bleiben
await reset_bausteine_db(topic) # DB ab Inventar — Coverage/Sichtung + Quelle bleiben
return {"ok": True}