FÖRDERBERICHT-PIPELINE
=======================

End-to-End Berichtserstellung: Vom Aktenordner zum fertigen Förderbericht.
Name und Geburtsdatum werden automatisch aus dem Ordnernamen erkannt.

ORDNERSTRUKTUR
--------------
  data_roh/          User legt Aktenordner ein (AI liest NICHT direkt)
  data_ano/          Anonymisierte Einzeldateien (AI darf lesen)
  data_bundled/      Gebuendelter Text + Prompt für LLM
  output_berichte/   Fertiger Bericht (de-anonymisiert, Endprodukt)

ROLLENTRENNUNG (WICHTIG)
-------------------------
  Der USER stellt die Klienten-Akte in data_roh/ ein.
  Die AI startet NUR das Pipeline-Script -- sie stellt KEINE Akten ein,
  kopiert KEINE Akten, und prüft NICHT ob eine Akte vorhanden ist.
  Das Script meldet selbst: "Akte gefunden, Prozess gestartet" oder
  "Fehler: Keine Akte in data_roh/ eingestellt".

VERWENDUNG (4 Standardwege)
----------------------------
  1. Chat:    "Erstelle Förderbericht" (empfohlen, Auto-Detect)
  2. .bat:    Förderbericht_Pipeline.bat (3x ENTER für Auto-Detect)
  3. Chain:   bach chain start förderbericht
  4. CLI:     bach bericht pipeline (Auto-Detect)

OPTIONEN
--------
  --zeitraum "01.01.2025 - 31.12.2025"   Berichtszeitraum
  --backend claude_code|llmauto           LLM-Backend (default: claude_code)
  --model claude-sonnet-4-6              LLM-Modell
  --eltern "Mutter Name" "Vater Name"   Elternnamen (für Anonymisierung)
  --no-cleanup                           Zwischenordner nicht leeren

ABLAUF (3-Phasen-Flow)
----------------------

  Phase 1 -- prepare_prompt() [Python, ohne AI]:
    1. Validierung: data_roh/ darf nicht leer sein, Ein-Klient-Regel prüfen
    2. Auto-Detect: Name + Geburtsdatum aus Ordnername erkennen
    3. Profil: Temporaeres Anonymisierungsprofil (Tarnname, Fake-Daten)
    4. Anonymisierung: Dateien anonymisieren -> data_ano/
    5. Buendelung: Text extrahieren -> data_bundled/ (priorisiert: neueste zuerst)
    6. Prompt: LLM-Prompt mit ICF-Schema -> data_bundled/prompt.txt

  Phase 2 -- AI liest prompt.txt, generiert JSON-Response:
    7. AI liest anonymisierten prompt.txt (Chat/Subagent-Weg)
    8. JSON-Response -> data_bundled/llm_response.txt

  Phase 3 -- finish_report() [Python, ohne AI]:
    9. JSON de-anonymisieren (via session_info.json mit allen Mappings)
   10. Word generieren -> output_berichte/
   11. Cleanup: ALLE Zwischendaten + Legacy-Ordner löschen

  Vollautomatisch (.bat/llmauto/CLI):
    run_full_pipeline() ruft intern prepare_prompt() + _call_llm() + finish_report() auf

  HINWEIS: NUR EIN KLIENT PRO DURCHLAUF in data_roh/!

DOKUMENTEN-PRIORISIERUNG
-------------------------
  HOCH:    Aktuelle Protokolle, Aktendeckblatt, Hilfeplan, Bewilligung
  MITTEL:  proAutismus-Berichte, Arztberichte (<10J), Schulberichte, Mails
  NIEDRIG: Arztberichte älter als 10 Jahre

HILFEPLAN-ZIELE (WICHTIG)
--------------------------
  Wenn ein Hilfeplan vorliegt, werden dessen Rahmenziele/Ergebnisziele
  als primaere Förderziele übernommen. Nur Themen außerhalb der
  Hilfeplan-Ziele kommen in die neue_ziele Tabelle.
  Umlaut-Postprocessing (ue->ue, ae->ae, oe->oe) wird automatisch
  wort-basiert angewendet (keine Falsch-Positiven bei "aktuell" etc.).

SICHERHEIT
----------
  - data_roh/ wird NIEMALS direkt von AI gelesen
  - LLM sieht NUR anonymisierte Daten (Tarnnamen)
  - De-Anonymisierung über session_info.json mit allen Mappings
  - Kein persistentes Profil (Session-basiert)
  - .pipeline_lock verhindert parallele Durchlaeufe
  - OneDrive-Sync wird automatisch pausiert/fortgesetzt
  - Cleanup löscht ALLE Zwischendaten + Legacy-Ordner

LLM-BACKENDS
-------------
  claude_code (DEFAULT)   Claude Code CLI als Subprocess
  llmauto                 llmauto Chain-System
  anthropic_sdk           Optional (braucht ANTHROPIC_API_KEY, nicht eingerichtet)

TROUBLESHOOTING
---------------
  "data_roh/ ist leer"    -> Aktenordner in data_roh/ einlegen
  "ClaudeRunner Fehler"   -> claude CLI nicht im PATH, llmauto nutzen
  "Import-Fehler"         -> pip install python-docx openpyxl
  OneDrive-Lock           -> Dateien schließen, kurz warten, neu starten

DATEIEN
-------
  Orchestrator:    hub/_services/document/foerderbericht_pipeline.py
  CLI-Runner:      hub/_services/document/pipeline_runner.py
  CLI-Handler:     hub/bericht.py (Operation: pipeline)
  Chain:           tools/llmauto/chains/foerderbericht.json
  Template:        skills/_templates/bericht_template_geiger_universal.docx
