fix(mc-audit): TOM/AVV case-mismatch + Ausnahmen-Pattern Wortabstand

- _PROCESS_INTERNAL_PATTERNS: Patterns wurden gegen lowercased Blob
  geprueft, aber Case-sensitive geschrieben (TOM/AVV/SCC). Matchen
  nie. Auf lowercase normalisiert.
- "Ausnahmen ... dokumentieren": Pattern war zu eng, verlangte direkte
  Adjazenz. Jetzt bis zu 60 Zeichen Wortabstand.
- Test-Suite mit 22 kuratierten DSGVO/AI-Act/eCall-MC-Labels. Alle
  gruen (vorher 2/22 FAIL — beide vom User explizit als Beispiele
  genannt: TOM, Ausnahmen).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Benjamin Admin
2026-05-22 10:22:51 +02:00
parent e2be51b0aa
commit 6baf44ac84
2 changed files with 111 additions and 5 deletions
@@ -38,13 +38,15 @@ _PROCESS_INTERNAL_PATTERNS = [
r"\bsensibilisier",
# Vertraege intern
r"\bauftragsverarbeitungsvertrag\b",
r"\bAVV\b\s+abgeschlossen",
r"\bavv\b\s+abgeschlossen",
r"\bvertrag.*abgeschlossen",
r"\bdpa\s+(geschlossen|abgeschlossen|vorhanden)",
r"\bSCC\s+(geschlossen|abgeschlossen|implementiert)",
# Technisch-organisatorische Massnahmen (intern)
r"\bscc\s+(geschlossen|abgeschlossen|implementiert)",
# Technisch-organisatorische Massnahmen (intern). Lowercase: blob
# ist bereits .lower(); Case-sensitive Patterns (TOM/AVV/SCC) matchen
# nie. Daher hier explizit klein.
r"\btechnisch[-\s]*organisatorische\s+ma(ß|ss)nahmen?\b",
r"\bTOM\s+(umgesetzt|dokumentiert|implementiert)",
r"\btom\s+(umgesetzt|dokumentiert|implementiert)",
r"\bverschluesselung\s+(implementiert|aktiv)",
r"\bpseudonymisierung\s+(implementiert|aktiv)",
r"\bbackup[s]?\s+(eingerichtet|vorhanden)",
@@ -68,7 +70,11 @@ _PROCESS_INTERNAL_PATTERNS = [
r"\bbitte\s+(intern\s+)?dokumentieren",
r"\bin\s+der\s+verfahrens",
r"\bnach\s+innen\s+geh",
r"\bausnahmen\s+(dokumentieren|protokollieren)",
# "Ausnahmen ... dokumentieren" — Wortabstand bis 60 Zeichen erlauben,
# damit "ausnahmen bei bereits vorhandenen informationen dokumentieren"
# matcht. Sonst Pattern zu eng → process-internal-MC bleibt FAIL.
r"\bausnahmen\b[^\n]{0,60}\b(dokumentieren|protokollieren)\b",
r"\bdokumentations[\s-]?pflicht",
r"\bkostenfrei\s+(zur\s+verfuegung|gewaehren|ermoegli)",
r"\bunentgeltlich\s+(zur\s+verfuegung)",
# Vertragsleistung / Service-Level (intern)