Stand: 2026-07-16
Der aktuelle Checkout enthält genau eine direkte Integration:
anonymizer/anonymizer_modul/core.py
│
▼ Reexport
foerderplaner/scripts/services/anonymizer_service.py
│
▼ Nutzung
foerderplaner/scripts/services/document_pipeline.py
foerderplaner ist ein separater, nicht veröffentlichter Konsument; die Pfade
oben sind relativ zu dessen Projektwurzel angegeben.
Der Shim stellt die Modul-API für den Skill bereit. document_pipeline.py
verwendet unter anderem Mapping-, Extraktions-, Scan- und
Anonymisierungsabläufe. In diesem Checkout existieren weder eine verdrahtete
FoerderDB noch die früher genannten Dateien report_workflow_service.py oder
foerderbericht_pipeline.py. Solche Komponenten dürfen nicht als Ist-Zustand
dokumentiert oder importiert werden.
- Der Konsument übergibt ausschließlich explizit ausgewählte lokale Quelldateien bzw. einen Quellordner.
anonymizerscannt den Inhalt. Ohne spaCy/NER bricht der Standardmodus ab; ein reduzierter Modus braucht eine bewusste Entscheidung des Konsumenten.- Alle erkannten E-Mails, Institutionen, Tabellen- und NER-Personennamen
fließen in
AnonymProfile.mappingsein. anonymize_folder()veröffentlicht erst nach erfolgreicher Verarbeitung aller sichtbaren Dateien. Bei Fehlern darf der Konsument keinen Zielbaum erwarten oder weiterreichen.- Die verschlüsselte Mapping-Datei verbleibt im lokalen
ANONYMIZER_KEYS_DIR; sie wird nicht an den foerderplaner-Skill übergeben.
result.errorsmuss als harter Stop behandelt werden.- Nicht unterstützte Dateien und Medieninhalte müssen vorab getrennt oder über einen separat geprüften OCR-Pfad behandelt werden.
- Der Zielordner muss neu oder leer und außerhalb des Quellbaums sein.
- Der Konsument darf Quellnamen nicht selbst in Logs, Fehlertexte oder Telemetrie schreiben; das Modul liefert absichtlich opake Dateiindizes.
- Eine De-anonymisierung erzeugt Klartext und darf nur in einen lokalen, nicht cloud-synchronisierten Zielpfad erfolgen.
from anonymizer_modul import DocumentAnonymizer
anonymizer = DocumentAnonymizer()
scan = anonymizer.scan_files_for_sensitive_data(selected_paths)
profile = anonymizer.create_profile(
real_name=fictional_or_secure_input_name,
geburtsdatum=secure_input_birth_date,
scanned_data=scan,
)
result = anonymizer.anonymize_folder(
folder=source_folder,
profile=profile,
password=secret_from_prompt,
output_folder=fresh_output_folder,
)
if result.errors:
raise RuntimeError("Anonymisierung nicht veröffentlicht")Das Beispiel zeigt den Vertrag, nicht die interne Implementierung des foerderplaner-Skills. Änderungen am Konsumenten gehören in einen eigenen Lauf mit dessen Lock, Tests und Dokumentations-Writeback.