diff --git a/app.py b/app.py index 114c6a9..abb1bc1 100644 --- a/app.py +++ b/app.py @@ -1044,14 +1044,28 @@ def generate_questions(obj_id: str): "questions_linked": 0, } + def _sanitize_word(raw: str) -> list[str]: + """Zerlegt kommagetrennte Einträge und gibt nur echte Einzelwörter zurück.""" + tokens = [] + for part in raw.replace(";", ",").split(","): + part = part.strip().strip("\"'") + if not part: + continue + words_in_part = part.split() + if len(words_in_part) == 1: + tokens.append(words_in_part[0]) + # Mehrwortige Einträge → überspringen (KI-Fehler) + return tokens + # Alle eindeutigen Wörter aus allen Leveln vorab sammeln und einmalig laden all_words_by_level: dict[str, int] = {} # title_de → first level seen for lvl in levels: level = int(lvl.get("level") or 1) - for w in lvl.get("words", []) + lvl.get("distractor_words", []) + [lvl.get("short_answer", "")]: - w = str(w).strip() - if w and w not in all_words_by_level: - all_words_by_level[w] = level + raw_words = lvl.get("words", []) + lvl.get("distractor_words", []) + [lvl.get("short_answer", "")] + for raw in raw_words: + for w in _sanitize_word(str(raw)): + if w and w not in all_words_by_level: + all_words_by_level[w] = level # Wörter einmalig anlegen / finden (globaler Cache über alle Level) global_word_map: dict[str, str] = {} # title_de → id @@ -1074,8 +1088,8 @@ def generate_questions(obj_id: str): q_de = (lvl.get("question") or "").strip() a_de = (lvl.get("answer") or "").strip() short_text = (lvl.get("short_answer") or "").strip() - words_list = [str(w).strip() for w in lvl.get("words", []) if str(w).strip()] - distractor_list = [str(w).strip() for w in lvl.get("distractor_words", []) if str(w).strip()] + words_list = [t for raw in lvl.get("words", []) for t in _sanitize_word(str(raw))] + distractor_list = [t for raw in lvl.get("distractor_words", []) for t in _sanitize_word(str(raw))] if not q_de: continue diff --git a/frontend/src/pages/GenerateIt.tsx b/frontend/src/pages/GenerateIt.tsx index b131809..7e5bc43 100644 --- a/frontend/src/pages/GenerateIt.tsx +++ b/frontend/src/pages/GenerateIt.tsx @@ -443,8 +443,10 @@ export default function GenerateIt() {