""" AI Processing - Print Version Generator: Q&A. Generates printable HTML for question-answer worksheets. """ from pathlib import Path import json import logging from .core import BEREINIGT_DIR logger = logging.getLogger(__name__) def generate_print_version_qa(qa_path: Path, include_answers: bool = False) -> Path: """ Generiert eine druckbare HTML-Version der Frage-Antwort-Paare. Args: qa_path: Pfad zur *_qa.json Datei include_answers: True fuer Loesungsblatt (fuer Eltern) Returns: Pfad zur generierten HTML-Datei """ if not qa_path.exists(): raise FileNotFoundError(f"Q&A-Datei nicht gefunden: {qa_path}") qa_data = json.loads(qa_path.read_text(encoding="utf-8")) items = qa_data.get("qa_items", []) metadata = qa_data.get("metadata", {}) title = metadata.get("source_title", "Arbeitsblatt") subject = metadata.get("subject", "") grade = metadata.get("grade_level", "") html_parts = [] html_parts.append(""" """ + title + """ - Fragen """) # Header version_text = "Loesungsblatt" if include_answers else "Fragenblatt" html_parts.append(f"

{title} - {version_text}

") meta_parts = [] if subject: meta_parts.append(f"Fach: {subject}") if grade: meta_parts.append(f"Klasse: {grade}") meta_parts.append(f"Anzahl Fragen: {len(items)}") html_parts.append(f"
{' | '.join(meta_parts)}
") # Fragen for idx, item in enumerate(items, 1): html_parts.append("
") html_parts.append(f"
Frage {idx}
") html_parts.append(f"
{item.get('question', '')}
") if include_answers: # Loesungsblatt: Antwort anzeigen html_parts.append(f"
Antwort: {item.get('answer', '')}
") # Schluesselbegriffe key_terms = item.get("key_terms", []) if key_terms: terms_html = " ".join([f"{term}" for term in key_terms]) html_parts.append(f"
Wichtige Begriffe: {terms_html}
") else: # Fragenblatt: Antwortlinien html_parts.append("
") for _ in range(3): html_parts.append("
") html_parts.append("
") html_parts.append("
") html_parts.append("") # Speichern suffix = "_qa_solutions.html" if include_answers else "_qa_print.html" out_name = qa_path.stem.replace("_qa", "") + suffix out_path = BEREINIGT_DIR / out_name out_path.write_text("\n".join(html_parts), encoding="utf-8") logger.info(f"Print-Version gespeichert: {out_path.name}") return out_path