From d0dc284cd59ddf35233130d1b90657f6e934cdc8 Mon Sep 17 00:00:00 2001 From: Benjamin Admin Date: Tue, 28 Apr 2026 15:26:29 +0200 Subject: [PATCH] docs: add Phase 5 (Payment/Marketing checks) + Phase 6 (auto-corrections) - Payment: Stripe, PayPal, Klarna (Art. 22 Bonitaetspruefung!), Adyen, Mollie - Marketing: GA, Meta Pixel, TikTok, Hotjar, Clarity, Newsletter-Anbieter - Each service: DSE mention check, consent check, third-country check - Pre-launch mode: agent generates ready-to-insert DSE text blocks via Qwen - Correction types: missing service, wrong legal basis, outdated entry Co-Authored-By: Claude Opus 4.6 (1M context) --- zeroclaw/PLAN-control-relevance-filter.md | 292 ++++++++++++++++++++++ 1 file changed, 292 insertions(+) diff --git a/zeroclaw/PLAN-control-relevance-filter.md b/zeroclaw/PLAN-control-relevance-filter.md index 03458cd..c64e561 100644 --- a/zeroclaw/PLAN-control-relevance-filter.md +++ b/zeroclaw/PLAN-control-relevance-filter.md @@ -484,6 +484,291 @@ Tracking: Google Analytics (G-03F834EHLM), Didomi CMP → Impressum-Finding: 404 auf /impressum/ (§5 TMG Verstoss) ``` +## Phase 5: Branchenspezifische Pruefmodule + +### 5a: Zahlungsanbieter (PCI-DSS + DSGVO) + +Pruefung der korrekten Einbindung von Payment-Anbietern: + +``` +Erkennungsmuster → Pruefpunkte + +Stripe (js.stripe.com) + ✓ Wird Stripe.js korrekt ueber stripe.com geladen (nicht self-hosted)? + ✓ Ist "Payment" oder "Zahlung" in der DSE mit Stripe erwaehnt? + ✓ Rechtsgrundlage: Art. 6(1)(b) Vertragserfuellung angegeben? + ✓ SCCs oder DPF fuer USA-Transfer dokumentiert? + ✗ Werden Kreditkartendaten an eigenen Server gesendet (PCI-Verstoss)? + +PayPal (paypal.com/sdk) + ✓ PayPal in DSE erwaehnt? + ✓ Rechtsgrundlage angegeben? + ✓ Hinweis auf PayPal-eigene DSE verlinkt? + +Adyen (adyen.com) + ✓ EU-Anbieter (NL) — kein Drittlandtransfer + ✓ In DSE erwaehnt? + +Mollie (mollie.com) + ✓ EU-Anbieter (NL) — kein Drittlandtransfer + ✓ In DSE erwaehnt? + +Klarna (klarna.com) + ✓ EU-Anbieter (SE) — kein Drittlandtransfer + ✓ Bonitaetspruefung erwaehnt? (Art. 22 DSGVO — automatisierte Entscheidung!) + ✓ SCHUFA/Auskunftei-Hinweis vorhanden? +``` + +**Besonderer Check:** Wenn ein Payment-Anbieter Bonitaetspruefungen durchfuehrt +(Klarna, PayPal, Ratenzahlung), MUSS Art. 22 DSGVO in der DSE erwaehnt werden +(automatisierte Einzelentscheidung). Das ist ein haeufig uebersehener Verstoss. + +### 5b: Marketing & Tracking (ePrivacy + DSGVO) + +Systematische Pruefung aller Marketing-/Tracking-Einbindungen: + +``` +Kategorie: Webanalyse +────────────────────── +Google Analytics → Einwilligung PFLICHT, DSE-Eintrag, IP-Anonymisierung pruefen +Matomo (Cloud) → Einwilligung empfohlen, DSE-Eintrag +Matomo (Self-Host) → Keine Einwilligung noetig wenn cookieless, DSE-Eintrag +Plausible/Pirsch → Keine Einwilligung noetig (cookieless, EU), DSE-Eintrag + +Kategorie: Werbenetzwerke +───────────────────────── +Google Ads/AdSense → Einwilligung PFLICHT, DSE-Eintrag, Drittlandtransfer +Meta/Facebook Pixel → Einwilligung PFLICHT, DSE-Eintrag, Drittlandtransfer +TikTok Pixel → Einwilligung PFLICHT, DSE-Eintrag, Drittlandtransfer (China!) +Pinterest Tag → Einwilligung PFLICHT, DSE-Eintrag, Drittlandtransfer +LinkedIn Insight → Einwilligung PFLICHT, DSE-Eintrag, Drittlandtransfer +Twitter/X Pixel → Einwilligung PFLICHT, DSE-Eintrag, Drittlandtransfer +Criteo → Einwilligung PFLICHT, DSE-Eintrag (FR/EU aber Tracking) + +Kategorie: Remarketing / Retargeting +───────────────────────────────────── +Google Remarketing → Einwilligung PFLICHT, eigene DSE-Sektion empfohlen +Facebook Custom Audiences → Einwilligung PFLICHT, Hochladen von Kundenlisten pruefen + +Kategorie: Heatmaps & Session Recording +──────────────────────────────────────── +Hotjar → Einwilligung PFLICHT (zeichnet Nutzerverhalten auf!) +Microsoft Clarity → Einwilligung PFLICHT (Session Replay!) +FullStory → Einwilligung PFLICHT, DSE-Eintrag, Drittlandtransfer +Mouseflow → Einwilligung PFLICHT, DSE-Eintrag + +Kategorie: A/B Testing +─────────────────────── +Google Optimize → Eingestellt, aber Legacy-Code pruefen +Optimizely → Einwilligung je nach Implementierung +VWO → Einwilligung wenn Cookies gesetzt werden + +Kategorie: Newsletter / E-Mail Marketing +───────────────────────────────────────── +Mailchimp → Drittlandtransfer (USA), SCCs pruefen +Brevo (ehem. Sendinblue) → EU (FR) — OK +CleverReach → EU (DE) — OK +ActiveCampaign → USA, Drittlandtransfer +HubSpot → USA, Drittlandtransfer +Rapidmail → EU (DE) — OK +``` + +### Prueflogik pro Marketing-Dienst + +```python +def check_marketing_service(service: DetectedService, dse_text: str) -> list[Finding]: + findings = [] + registry = THIRD_PARTY_REGISTRY[service.id] + + # 1. In DSE erwaehnt? + if not service_mentioned_in_dse(service, dse_text): + findings.append(Finding( + severity="HIGH", + code=f"MARKETING-{service.id}-NOT-IN-DSE", + text=f"{service.name} ist auf der Website eingebunden aber nicht in der " + f"Datenschutzerklaerung erwaehnt (Art. 13 DSGVO Verstoss)." + )) + + # 2. Einwilligung vorhanden? + if registry["requires_consent"] and not consent_banner_detected: + findings.append(Finding( + severity="HIGH", + code=f"MARKETING-{service.id}-NO-CONSENT", + text=f"{service.name} erfordert eine Einwilligung vor Aktivierung " + f"(§25 TDDDG). Kein funktionierender Consent-Banner erkannt." + )) + + # 3. Drittlandtransfer? + if not registry["eu_adequate"]: + if not sccs_mentioned_in_dse(service, dse_text): + findings.append(Finding( + severity="MEDIUM", + code=f"TRANSFER-{service.id}-NO-SCCS", + text=f"{service.name} ({registry['country']}) — Drittlandtransfer " + f"ohne dokumentierte Schutzmaßnahme ({registry['legal_ref']})." + )) + + return findings +``` + +## Phase 6: Automatische Korrekturvorschlaege (Pre-Launch Modus) + +Im **internen Pruefmodus** (pre_launch) erstellt der Agent bei JEDER Abweichung +einen konkreten, einbaufertigen Korrekturvorschlag: + +### Korrekturtypen + +**Typ 1: DSE-Textbaustein (Dienstleister fehlt in DSE)** + +Wenn ein Dienstleister auf der Website erkannt wird aber nicht in der DSE steht, +generiert der Agent einen fertigen Textbaustein: + +``` +ABWEICHUNG: Google Analytics (G-03F834EHLM) eingebunden, nicht in DSE dokumentiert. + +KORREKTURVORSCHLAG (einbaufertig): +────────────────────────────────── +Webanalyse + +Wir nutzen Google Analytics, einen Webanalysedienst der Google Ireland Limited +(Gordon House, Barrow Street, Dublin 4, Irland). Google Analytics verwendet Cookies, +die eine Analyse der Benutzung der Website ermoeglichen. + +Rechtsgrundlage: Art. 6 Abs. 1 lit. a DSGVO (Einwilligung). + +Die durch Cookies erzeugten Informationen werden in der Regel an einen Server von +Google in den USA uebertragen. Wir haben mit Google einen Auftragsverarbeitungsvertrag +abgeschlossen. Die Uebermittlung in die USA wird auf Standardvertragsklauseln +der EU-Kommission gestuetzt. + +Sie koennen die Speicherung der Cookies durch eine entsprechende Einstellung Ihrer +Browser-Software verhindern. Sie koennen darueber hinaus die Erfassung der durch +das Cookie erzeugten und auf Ihre Nutzung der Website bezogenen Daten an Google +sowie die Verarbeitung dieser Daten durch Google verhindern, indem Sie das unter +dem folgenden Link verfuegbare Browser-Add-On herunterladen und installieren: +https://tools.google.com/dlpage/gaoptout + +Weitere Informationen: https://policies.google.com/privacy +────────────────────────────────── + +EINFUEGEN NACH: Abschnitt "Cookies" oder "Webanalyse" +PRIORITAET: Hoch — vor Veroeffentlichung korrigieren +``` + +**Typ 2: Rechtsgrundlage fehlt/falsch** + +``` +ABWEICHUNG: Klarna als Zahlungsanbieter genannt, aber kein Hinweis auf +automatisierte Bonitaetspruefung (Art. 22 DSGVO). + +KORREKTURVORSCHLAG: +────────────────── +Ergaenzen Sie im Abschnitt "Zahlungsabwicklung": + +"Bei Auswahl der Zahlungsart 'Rechnung' oder 'Ratenzahlung' ueber Klarna +wird eine automatisierte Bonitaetspruefung durchgefuehrt. Klarna uebermittelt +hierzu Ihre Angaben an Wirtschaftsauskunfteien (z.B. SCHUFA). Rechtsgrundlage +ist Art. 6 Abs. 1 lit. b DSGVO (Vertragserfuellung). Sie haben gemaess +Art. 22 Abs. 3 DSGVO das Recht, Ihren Standpunkt darzulegen und die +Entscheidung anzufechten." +────────────────── +``` + +**Typ 3: Dienst nicht mehr eingebunden (Aufraeumen)** + +``` +ABWEICHUNG: "Facebook Pixel" in DSE Abschnitt 4.2 erwaehnt, aber auf der +Website nicht mehr eingebunden. + +KORREKTURVORSCHLAG: +────────────────── +Entfernen Sie den Absatz zu Facebook Pixel in Abschnitt 4.2 oder +kennzeichnen Sie ihn als "nicht mehr aktiv". Veraltete Eintraege in der +DSE sind zwar kein Rechtsverstoß, koennen aber bei einer Pruefung durch +die Aufsichtsbehoerde Fragen aufwerfen. +────────────────── +PRIORITAET: Niedrig — bei naechster DSE-Aktualisierung bereinigen +``` + +### Implementierung der Korrekturvorschlaege + +```python +async def generate_correction( + service: DetectedService, + finding_type: str, # "missing_in_dse", "wrong_legal_basis", "outdated" + dse_text: str, + mode: str, +) -> str: + """Generiere einbaufertigen Korrekturvorschlag via Qwen.""" + if mode != "pre_launch": + return "" # Nur im internen Modus + + prompt = f""" + /no_think + Du bist ein Datenschutzexperte. Erstelle einen einbaufertigen Textbaustein + fuer eine deutsche Datenschutzerklaerung. + + Dienstleister: {service.name} + Anbieter: {service.provider} + Land: {service.country} + Zweck: {service.purpose} + Finding: {finding_type} + + Der Textbaustein muss enthalten: + 1. Ueberschrift (z.B. "Webanalyse" oder "Zahlungsabwicklung") + 2. Name und Sitz des Anbieters + 3. Zweck der Verarbeitung + 4. Rechtsgrundlage (korrekt nach DSGVO) + 5. Drittlandtransfer-Hinweis wenn nicht EU + 6. Widerspruchsmoeglichkeit + + Antworte NUR mit dem fertigen Textbaustein, ohne Erklaerung. + """ + # LLM-Call via SDK + response = await sdk_llm_chat(prompt) + return response +``` + +### Ergebnis-Format im Agent-Output + +```json +{ + "findings": [...], + "corrections": [ + { + "finding_code": "MARKETING-google_analytics-NOT-IN-DSE", + "type": "missing_in_dse", + "service": "Google Analytics", + "priority": "high", + "insert_after": "Abschnitt Cookies / Webanalyse", + "correction_text": "Webanalyse\n\nWir nutzen Google Analytics...", + "legal_refs": ["Art. 13 DSGVO", "Art. 44-49 DSGVO", "§25 TDDDG"] + } + ] +} +``` + +### Frontend: Korrekturvorschlaege anzeigen + +Im Pre-Launch-Modus zeigt das Frontend fuer jedes Finding einen aufklappbaren +Korrekturvorschlag mit Copy-Button: + +``` +[!] Google Analytics eingebunden, nicht in DSE + Prioritaet: Hoch | Art. 13 DSGVO + + ▼ Korrekturvorschlag anzeigen + ┌─────────────────────────────────────────┐ + │ Webanalyse │ + │ │ + │ Wir nutzen Google Analytics, einen │ + │ Webanalysedienst der Google Ireland │ + │ Limited... │ + │ [📋] │ + └─────────────────────────────────────────┘ + Einfuegen nach: Abschnitt "Cookies" +``` + ## Risiken | Risiko | Mitigation | @@ -492,6 +777,9 @@ Tracking: Google Analytics (G-03F834EHLM), Didomi CMP | LLM-Kosten bei vielen Controls | Caching + nur high-severity Controls | | Datenbank-Migration auf Production | `ADD COLUMN IF NOT EXISTS` ist non-blocking | | 166k Controls ohne relevance_conditions | Default `{}` = kein Filter = bisheriges Verhalten | +| Qwen-generierte Textbausteine rechtlich falsch | Review-Pflicht: "Vom KI-Assistenten erstellt, Pruefung durch DSB empfohlen" | +| Website-Scan zu langsam (10 Seiten fetchen) | Parallel fetchen, max 5s Timeout pro Seite, max 10 Seiten | +| Payment-Einbindung nicht im HTML sichtbar | Follow-Up: "Welche Zahlungsanbieter nutzen Sie?" | ## Testfaelle @@ -499,3 +787,7 @@ Tracking: Google Analytics (G-03F834EHLM), Didomi CMP 2. **Chatbot-Anbieter:** C_TRANSPARENCY SOLL empfohlen werden (KI explizit erwaehnt) 3. **Arztpraxis-Website:** C_DSFA_REQUIRED SOLL empfohlen werden (Gesundheitsdaten) 4. **Blog ohne Tracking:** Nur minimale Controls (Impressum, Datenschutzerklaerung) +5. **Shop mit Klarna:** Art. 22 DSGVO Finding wenn Bonitaetspruefung nicht in DSE +6. **Website mit Google Fonts:** LG Muenchen I Finding + Korrekturvorschlag "lokal einbinden" +7. **Pre-Launch DSE-Entwurf:** Korrekturvorschlaege fuer fehlende Dienstleister-Eintraege +8. **Opodo Soll-Ist:** jsdelivr CDN eingebunden aber nicht in DSE → Finding + Textbaustein