""" AI Processing - Print Version Generator: Multiple Choice. Generates printable HTML for multiple-choice worksheets. """ from pathlib import Path import json import logging logger = logging.getLogger(__name__) def generate_print_version_mc(mc_path: Path, include_answers: bool = False) -> str: """ Generiert eine druckbare HTML-Version der Multiple-Choice-Fragen. Args: mc_path: Pfad zur *_mc.json Datei include_answers: True fuer Loesungsblatt mit markierten richtigen Antworten Returns: HTML-String (zum direkten Ausliefern) """ if not mc_path.exists(): raise FileNotFoundError(f"MC-Datei nicht gefunden: {mc_path}") mc_data = json.loads(mc_path.read_text(encoding="utf-8")) questions = mc_data.get("questions", []) metadata = mc_data.get("metadata", {}) title = metadata.get("source_title", "Arbeitsblatt") subject = metadata.get("subject", "") grade = metadata.get("grade_level", "") html_parts = [] html_parts.append(""" """ + title + """ - Multiple Choice """) # Header version_text = "Loesungsblatt" if include_answers else "Multiple Choice Test" html_parts.append(f"

{title}

") html_parts.append(f"
{version_text}") if subject: html_parts.append(f" | Fach: {subject}") if grade: html_parts.append(f" | Klasse: {grade}") html_parts.append(f" | Anzahl Fragen: {len(questions)}
") if not include_answers: html_parts.append("
") html_parts.append("Anleitung: Kreuze bei jeder Frage die richtige Antwort an. ") html_parts.append("Es ist immer nur eine Antwort richtig.") html_parts.append("
") # Fragen for idx, q in enumerate(questions, 1): html_parts.append("
") html_parts.append(f"
Frage {idx}
") html_parts.append(f"
{q.get('question', '')}
") html_parts.append("
") correct_answer = q.get("correct_answer", "") for opt in q.get("options", []): opt_id = opt.get("id", "") is_correct = opt_id == correct_answer opt_class = "option" checkbox_class = "option-checkbox" if include_answers and is_correct: opt_class += " option-correct" checkbox_class += " checked" html_parts.append(f"
") html_parts.append(f"
") html_parts.append(f"{opt_id})") html_parts.append(f"{opt.get('text', '')}") html_parts.append("
") html_parts.append("
") # Erklaerung nur bei Loesungsblatt if include_answers and q.get("explanation"): html_parts.append(f"
Erklaerung: {q.get('explanation')}
") html_parts.append("
") # Loesungsschluessel (kompakt) - nur bei Loesungsblatt if include_answers: html_parts.append("
") html_parts.append("
Loesungsschluessel
") html_parts.append("
") for idx, q in enumerate(questions, 1): html_parts.append("
") html_parts.append(f"{idx}. ") html_parts.append(f"{q.get('correct_answer', '')}") html_parts.append("
") html_parts.append("
") html_parts.append("
") html_parts.append("") return "\n".join(html_parts)