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) <noreply@anthropic.com>
This commit is contained in:
Benjamin Admin
2026-04-28 15:26:29 +02:00
parent 24fb1e14e0
commit d0dc284cd5

View File

@@ -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