# Plan: RAG-basierte Dokumentenpruefung (Phase 2) ## Problem Die Dokumenten-Pruefung verwendet aktuell statische Regex-Checklists (Art. 13 DSGVO, §305ff BGB, §5 TMG, §25 TDDDG). Das reicht fuer Standard-Dokumente, aber nicht fuer: 1. **DSFA** — Datenschutz-Folgenabschaetzung hat eigene Anforderungen (Art. 35 DSGVO, Landes-DSFA-Listen, z.B. BaWue) 2. **Social Media Konzepte** — Gemeinsame Verantwortlichkeit (Art. 26 DSGVO) 3. **Auftragsverarbeitungsvertraege** — Art. 28 DSGVO Mindestinhalte 4. **Loeschkonzepte** — DIN 66398, BfDI-Loeschkonzept ## Loesung: RAG-basierter Check ### Schritt 1: Dokumenttyp → Regulations Mapping ```python DOC_TYPE_REGULATIONS = { "dse": ["DSGVO Art. 13", "DSGVO Art. 14"], "dsfa": ["DSGVO Art. 35", "DSK DSFA-Liste", "BaWue DSFA-Muss-Liste"], "avv": ["DSGVO Art. 28"], "agb": ["BGB §305", "BGB §307", "BGB §309"], "impressum": ["TMG §5", "MStV §18"], "widerruf": ["BGB §355", "BGB §312g"], "cookie": ["TDDDG §25", "ePrivacy Art. 5(3)"], "social_media_konzept": ["DSGVO Art. 26", "DSK OH Telemedien"], "loeschkonzept": ["DIN 66398", "DSGVO Art. 5(1)(e)", "BfDI Loeschkonzept"], } ``` ### Schritt 2: Controls aus RAG laden Fuer jede Regulation: ```python controls = rag_client.search( query=f"Pflichtinhalte fuer {doc_type}", collection="bp_compliance_controls", regulations=[regulation], top_k=10, ) ``` ### Schritt 3: Control-basierter Check Fuer jeden Control pruefen ob der Dokumenttext die Anforderung erfuellt: ```python for control in controls: # Semantic check: Ist die Control-Anforderung im Text adressiert? # Option A: Regex-Keywords aus Control extrahieren # Option B: LLM fragen "Erfuellt dieser Text die Anforderung X?" # Option C: Embedding-Similarity zwischen Control und Textabschnitten ``` ### Schritt 4: Referenzierung erkennen Wenn ein Sub-Dokument auf das Haupt-Dokument verweist: - "Verantwortlicher: siehe Haupt-DSI" - "Die unter Ziffer 1 genannten Angaben gelten entsprechend" - Gleiche Domain-URL mit Anker → Referenz auf Eltern-Dokument → Fehlende Pflichtangaben nicht als Finding werten wenn Referenz erkannt ## Dateien | Datei | Aenderung | |-------|-----------| | `backend-compliance/compliance/services/rag_document_checker.py` | NEU: RAG-basierter Check | | `backend-compliance/compliance/api/agent_doc_check_routes.py` | Integration RAG-Check | | `backend-compliance/compliance/services/dsi_document_checker.py` | DSFA/AVV/Loeschkonzept Checklists | ## Voraussetzungen - RAG-Service muss laufen (bp-core-rag-service:8097) - Qdrant muss die Control-Collections haben - Embedding-Pipeline muss durchgelaufen sein (Controls embedded) ## Reihenfolge 1. Dokumenttyp-Erkennung erweitern (DSFA, AVV, Loeschkonzept) 2. RAG-Query fuer Controls pro Dokumenttyp 3. Control → Textabschnitt Matching 4. Referenzierungs-Erkennung 5. Frontend: Dokumenttyp-spezifische Checklisten anzeigen