fix: Expand Art. 13 patterns for generic matching across all websites

Complaint (Art. 13(2)(d)):
+ 'recht auf beschwerde', 'art. 77', 'beschwerde...wenden/einlegen',
  'zuständige behörde' — IHK uses 'Recht auf Beschwerde gem. Art. 77'

Legal basis (Art. 13(1)(c)):
+ 'gemäß Art.', '§ X IHKG/BDSG/LDSG/BBiG/TDDDG', 'einwilligung gem',
  'verarbeitung auf grundlage' — catches statutory references

Third country (Art. 13(1)(f)):
+ 'Übermittlung ausserhalb', 'EWR/EEA', 'Data Privacy Framework'

Retention (Art. 13(2)(a)):
+ 'Dauer der Speicherung', 'Aufbewahrungsdauer/-pflicht/-zeit',
  'gesetzliche Aufbewahrung' — common German DSE headings

All patterns are generic, not IHK-specific.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Benjamin Admin
2026-05-05 17:45:02 +02:00
parent 85e82d0dfa
commit 8d6959e8b2
@@ -60,7 +60,12 @@ ART13_CHECKLIST = [
r"rechtsgrundlage", r"art\.\s*6\s*(?:abs|absatz)?\s*\.?\s*1", r"rechtsgrundlage", r"art\.\s*6\s*(?:abs|absatz)?\s*\.?\s*1",
r"legal\s+basis", r"berechtigtes\s+interesse", r"legal\s+basis", r"berechtigtes\s+interesse",
r"auf\s+grundlage\s+(?:von|des|der)\s+(?:art|§)", r"auf\s+grundlage\s+(?:von|des|der)\s+(?:art|§)",
r"lit\.\s*[a-f]\)", r"lit\.\s*[a-f][\s\)]",
r"auf\s+(?:der\s+)?grundlage\s+(?:von\s+)?art",
r"gem(?:ae|ä)(?:ss|ß)\s+art", # gemäß Art.
r"(?:verarbeitung|erhebung).*(?:auf\s+grundlage|gem)",
r"§\s*\d+\s+(?:abs|ihkg|bdsg|ldsg|bbig|tdddg)",
r"einwilligung\s+gem",
], ],
"severity": "HIGH", "severity": "HIGH",
}, },
@@ -83,6 +88,9 @@ ART13_CHECKLIST = [
r"drittland", r"dritt\s*staat", r"drittl(?:ae|ä)nder", r"drittland", r"dritt\s*staat", r"drittl(?:ae|ä)nder",
r"third\s+countr", r"angemessenheitsbeschluss", r"third\s+countr", r"angemessenheitsbeschluss",
r"standard\s*vertragsklausel", r"scc", r"standard\s*vertragsklausel", r"scc",
r"(?:ueber|über)mittlung.*(?:ausserhalb|außerhalb)",
r"(?:europ(?:ae|ä)ischen\s+wirtschaftsraum|ewr|eea)",
r"privacy\s+shield", r"data\s+privacy\s+framework",
], ],
"severity": "MEDIUM", "severity": "MEDIUM",
}, },
@@ -91,11 +99,14 @@ ART13_CHECKLIST = [
"label": "Speicherdauer (Art. 13(2)(a))", "label": "Speicherdauer (Art. 13(2)(a))",
"patterns": [ "patterns": [
r"speicherdauer", r"aufbewahrungsfrist", r"speicherdauer", r"aufbewahrungsfrist",
r"(?:wie\s+lange|dauer)\s+(?:werden|gespeichert)", r"(?:wie\s+lange|dauer)\s+(?:der\s+)?(?:werden|gespeicher|speicherung)",
r"retention\s+period", r"l(?:oe|ö)sch(?:ung|frist|konzept)", r"retention\s+period", r"l(?:oe|ö)sch(?:ung|frist|konzept)",
r"wie\s+lange\s+werden\s+die\s+daten\s+aufbewahrt", r"wie\s+lange\s+werden\s+die\s+daten\s+aufbewahrt",
r"daten\s+werden\s+gel(?:oe|ö)scht", r"daten\s+werden\s+gel(?:oe|ö)scht",
r"(?:\d+\s+(?:tage|monate|jahre)|nach\s+\d+)", r"(?:\d+\s+(?:tage|monate|jahre)|nach\s+\d+\s+(?:tag|monat|jahr))",
r"dauer\s+der\s+speicherung",
r"aufbewahrung(?:sdauer|spflicht|szeit)",
r"gesetzliche.*aufbewahrung",
], ],
"severity": "HIGH", "severity": "HIGH",
}, },
@@ -120,6 +131,9 @@ ART13_CHECKLIST = [
r"beschwerderecht", r"aufsichtsbeh(?:oe|ö)rde", r"beschwerderecht", r"aufsichtsbeh(?:oe|ö)rde",
r"right\s+to\s+lodge\s+a\s+complaint", r"right\s+to\s+lodge\s+a\s+complaint",
r"supervisory\s+authority", r"datenschutzbeh(?:oe|ö)rde", r"supervisory\s+authority", r"datenschutzbeh(?:oe|ö)rde",
r"recht\s+auf\s+beschwerde", r"art\.\s*77",
r"beschwerde.*(?:wenden|einlegen|erheben)",
r"(?:zuständige|competent)\s+(?:behörde|beh(?:oe|ö)rde|authority)",
], ],
"severity": "MEDIUM", "severity": "MEDIUM",
}, },