Files
breakpilot-compliance/backend-compliance/compliance/api/scope_disclaimer.py
T
Benjamin Admin 603381a67f
CI / nodejs-build (push) Has been skipped
CI / test-go (push) Has been skipped
CI / iace-gt-coverage (push) Has been skipped
CI / test-python-backend (push) Successful in 38s
CI / test-python-document-crawler (push) Has been skipped
CI / detect-changes (push) Successful in 12s
CI / branch-name (push) Has been skipped
CI / guardrail-integrity (push) Has been skipped
CI / secret-scan (push) Has been skipped
CI / dep-audit (push) Has been skipped
CI / sbom-scan (push) Has been skipped
CI / validate-canonical-controls (push) Successful in 14s
CI / loc-budget (push) Failing after 15s
CI / go-lint (push) Has been skipped
CI / python-lint (push) Has been skipped
CI / nodejs-lint (push) Has been skipped
CI / test-python-dsms-gateway (push) Has been skipped
feat(audit-mail): P58/P59c/P60b/P61/P62 — Mercedes-Cycle Phase 1 abgeschlossen
P58  Anti-Audit-Detection robuster (script-domain + settings-spezifisch —
     war bereits im Code, jetzt sauber als completed dokumentiert).

P59c DACH-Custom-Cookies in compliance.cookie_library: Borlabs,
     etracker, Matomo/Piwik, Userlike, Cookiebot/Cookieyes/Usercentrics,
     Akamai/Cloudflare/Datadome Bot-Manager + HubSpot. 21 neue Eintraege
     (3 von 24 schon via Open-Cookie-Database vorhanden).
     Script: backend-compliance/scripts/seed_dach_cookies.py.

P60b Vendor-Pattern-Dedupe mit Fuzzy-Match (Jaccard >= 0.7) statt exakter
     Tuple-Equality. Vendors mit teilweise befuellten Feldern (z.B.
     Sitzland eingetragen) fallen nicht mehr aus der globalen Notice —
     Bug: Amazon/Psyma/Qualtrics hatten zuvor wiederholte per-row Actions.

P61  "Untergeschobene Cookies"-Erkennung — wenn ein deklarierter Vendor
     (z.B. Google Tag Manager) automatisch weitere mitbringt (GA + GCL_AU
     + DoubleClick), werden diese als separater Mail-Block (gelb) mit
     COOKIE/VENDOR-Badges + Quellen-Doku ausgewiesen. Neuer Service:
     compliance.services.vendor_package_cookies (8 Primary-Vendors mit
     je 2-4 implicit Cookies/Vendors).

P62  Marketing-Manager-Disclaimer "Was wir sehen / nicht sehen" als
     blauer Box-Block direkt unter dem Critical-Findings-Block. Erklaert
     Grenzen unseres Audits (Server-Side-Tracking, Vendor-interne
     Datenweitergabe, Cross-Page-Banner) und Risiko des Falschvertrauens
     in einen 100%-Score. Neuer Renderer: compliance.api.scope_disclaimer.

Architektur: VVT-Tabellen-Renderer aus agent_doc_check_extras.py (552
LOC -> 242 LOC) in compliance.api.vvt_table_renderer ausgelagert, um den
500-LOC-Hardcap einzuhalten.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-21 08:01:27 +02:00

98 lines
4.3 KiB
Python

"""
P62 — Marketing-Manager-freundlicher Scope-Disclaimer ("Was wir sehen / nicht sehen").
Erklaert in 30 Sekunden was unser Audit tatsaechlich pruefen kann und wo
die Grenzen sind. Ziel: vermeidet falsches Vertrauen in einen 100%-Score
und macht klar, wo Marketing/IT zusaetzlich pruefen muss.
"""
from __future__ import annotations
def build_scope_disclaimer_html() -> str:
"""Render: was wir sehen + was wir NICHT sehen koennen."""
return (
'<div style="font-family:-apple-system,BlinkMacSystemFont,sans-serif;'
'max-width:700px;margin:8px auto 16px;padding:14px 18px;'
'background:#f0f9ff;border:1px solid #bfdbfe;border-radius:8px">'
'<h3 style="margin:0 0 8px;font-size:13px;color:#1e40af">'
'Was diese Pruefung leistet — und wo ihre Grenzen liegen</h3>'
'<div style="font-size:11px;color:#1e293b;margin-bottom:10px">'
'Wir sind ein <strong>technisches Audit-Tool</strong>, kein Anwalt. '
'Ein 100%-Score bedeutet nicht "rechtssicher" — er bedeutet "alle '
'Pruefkriterien automatisch erfuellt". Folgendes koennen wir vs. '
'koennen wir nicht:</div>'
'<table style="width:100%;border-collapse:collapse;font-size:11px;'
'margin-bottom:8px">'
'<thead><tr style="background:#dbeafe;color:#1e40af;text-align:left">'
'<th style="padding:5px 8px;width:50%">Was wir sehen</th>'
'<th style="padding:5px 8px;width:50%">Was wir NICHT sehen</th>'
'</tr></thead>'
'<tbody>'
'<tr style="border-top:1px solid #bfdbfe">'
'<td style="padding:5px 8px;color:#1e293b">'
'✓ Cookies/Storage im Browser nach Klick auf Akzeptieren/Ablehnen'
'</td>'
'<td style="padding:5px 8px;color:#475569">'
'✗ Server-seitiges Tracking (Meta Conversion API, GA4 Measurement '
'Protocol — der Browser sieht nichts davon)'
'</td></tr>'
'<tr style="border-top:1px solid #bfdbfe">'
'<td style="padding:5px 8px;color:#1e293b">'
'✓ Vendor-Listen aus dem Banner (TCF, CMP-Settings, Phase-G Klick-Tour)'
'</td>'
'<td style="padding:5px 8px;color:#475569">'
'✗ Wer die Daten beim Vendor tatsaechlich erhaelt / weiterleitet '
'(z.B. Google verteilt intern an Ads/Marketing-Plattform)'
'</td></tr>'
'<tr style="border-top:1px solid #bfdbfe">'
'<td style="padding:5px 8px;color:#1e293b">'
'✓ Texte und Pflichtangaben in DSE/Cookie-Richtlinie/Impressum'
'</td>'
'<td style="padding:5px 8px;color:#475569">'
'✗ Ob die internen Prozesse (Loeschkonzept, AVV-Pflege, '
'Mitarbeiter-Schulungen) tatsaechlich gelebt werden'
'</td></tr>'
'<tr style="border-top:1px solid #bfdbfe">'
'<td style="padding:5px 8px;color:#1e293b">'
'✓ Banner-UI-Verstoesse (Dark Patterns, ungleichgewichtige Buttons, '
'fehlender Reject-Mechanismus)'
'</td>'
'<td style="padding:5px 8px;color:#475569">'
'✗ Ob das Banner auf <em>jeder</em> Unterseite identisch ist '
'(wir messen die Einstiegsseite)'
'</td></tr>'
'<tr style="border-top:1px solid #bfdbfe">'
'<td style="padding:5px 8px;color:#1e293b">'
'✓ Untergeschobene Cookies (z.B. Google Tag Manager bringt automatisch '
'GA + Ads — siehe P61-Block unten)'
'</td>'
'<td style="padding:5px 8px;color:#475569">'
'✗ Drittland-Transfer auf Vertragsebene — ob ein SCC/DPF wirklich '
'vorliegt, koennen nur Sie selbst pruefen'
'</td></tr>'
'</tbody></table>'
'<div style="font-size:10px;color:#475569;margin-top:8px;'
'padding-top:6px;border-top:1px dashed #bfdbfe">'
'<strong>Hinweis fuer Marketing &amp; Geschaeftsfuehrung:</strong> '
'Selbst wenn dieser Bericht keinen Verstoss findet, kann ein '
'individueller Bescheid einer Aufsichtsbehoerde oder eine Klage '
'(NOYB, Verbraucherschutz, Sammelklage) zu einem anderen Ergebnis '
'kommen — etwa wenn beim Vendor selbst (Server-Side) personenbezogene '
'Daten verarbeitet werden, die wir browser-seitig nicht sehen. '
'Dieser Bericht ersetzt keine anwaltliche Pruefung, hilft aber, '
'<strong>technisch belegbare Verstoesse</strong> sofort zu schliessen.'
'</div>'
'</div>'
)