From 58234ac18b314ca0c1550ab94d9b0a470ce1f225 Mon Sep 17 00:00:00 2001 From: Benjamin Admin Date: Thu, 7 May 2026 11:35:10 +0200 Subject: [PATCH] fix: DSFA must be matched before social_media in SECTION_TYPE_MAP MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 'Datenschutzfolgeabschätzung...Social Media' was matching as social_media (Art. 26) instead of dsfa (Art. 35) because the social_media pattern 'datenschutz.*social media' matched first. Fixed: DSFA patterns checked before social_media patterns. Co-Authored-By: Claude Opus 4.6 (1M context) --- .../compliance/api/agent_doc_check_routes.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/backend-compliance/compliance/api/agent_doc_check_routes.py b/backend-compliance/compliance/api/agent_doc_check_routes.py index 47cccee..4a06aeb 100644 --- a/backend-compliance/compliance/api/agent_doc_check_routes.py +++ b/backend-compliance/compliance/api/agent_doc_check_routes.py @@ -259,12 +259,13 @@ def _run_checklist(text: str, doc_type: str, label: str, url: str, word_count: i # Everything else (Social Media, Betroffenenrechte, Dienste von Drittanbietern) # is part of the parent DSI and inherits its checks. SECTION_TYPE_MAP = [ - (r"^cookie", "cookie"), # Cookie-Richtlinie → §25 TDDDG - (r"widerrufsrecht|widerrufsbelehrung", "widerruf"), # Widerruf → §355 BGB - (r"^impressum$", "impressum"), # Impressum → §5 TMG + (r"^cookie", "cookie"), + (r"widerrufsrecht|widerrufsbelehrung", "widerruf"), + (r"^impressum$", "impressum"), (r"^(?:agb|allgemeine geschäftsbedingungen|nutzungsbedingungen)$", "agb"), - (r"datenschutzerkl.*social|datenschutz.*social\s*media", "social_media"), - (r"datenschutzfolge|dsfa|risikoanalyse.*social", "dsfa"), + # DSFA MUST be checked BEFORE social_media (both can contain "Social Media") + (r"datenschutzfolge|dsfa|risikoanalyse|risikobew(?:ae|ä)gung", "dsfa"), + (r"datenschutzerkl(?:ae|ä)rung.*social|datenschutz\s+f(?:ue|ü)r\s+social", "social_media"), ]