feat: All 138 hints rewritten as expert-level legal guidance
CI / loc-budget (push) Failing after 18s
CI / secret-scan (push) Has been skipped
CI / go-lint (push) Has been skipped
Build + Deploy / build-admin-compliance (push) Successful in 9s
Build + Deploy / build-backend-compliance (push) Successful in 10s
Build + Deploy / build-ai-sdk (push) Successful in 9s
Build + Deploy / build-developer-portal (push) Successful in 8s
Build + Deploy / build-tts (push) Successful in 8s
Build + Deploy / build-document-crawler (push) Successful in 8s
Build + Deploy / build-dsms-gateway (push) Successful in 8s
Build + Deploy / build-dsms-node (push) Successful in 8s
CI / branch-name (push) Has been skipped
CI / guardrail-integrity (push) Has been skipped
CI / nodejs-build (push) Successful in 3m22s
CI / dep-audit (push) Has been skipped
CI / python-lint (push) Has been skipped
CI / nodejs-lint (push) Has been skipped
CI / sbom-scan (push) Has been skipped
CI / test-go (push) Failing after 49s
CI / test-python-backend (push) Successful in 43s
CI / test-python-document-crawler (push) Successful in 32s
CI / test-python-dsms-gateway (push) Successful in 26s
CI / validate-canonical-controls (push) Successful in 18s
Build + Deploy / trigger-orca (push) Successful in 2m10s
CI / loc-budget (push) Failing after 18s
CI / secret-scan (push) Has been skipped
CI / go-lint (push) Has been skipped
Build + Deploy / build-admin-compliance (push) Successful in 9s
Build + Deploy / build-backend-compliance (push) Successful in 10s
Build + Deploy / build-ai-sdk (push) Successful in 9s
Build + Deploy / build-developer-portal (push) Successful in 8s
Build + Deploy / build-tts (push) Successful in 8s
Build + Deploy / build-document-crawler (push) Successful in 8s
Build + Deploy / build-dsms-gateway (push) Successful in 8s
Build + Deploy / build-dsms-node (push) Successful in 8s
CI / branch-name (push) Has been skipped
CI / guardrail-integrity (push) Has been skipped
CI / nodejs-build (push) Successful in 3m22s
CI / dep-audit (push) Has been skipped
CI / python-lint (push) Has been skipped
CI / nodejs-lint (push) Has been skipped
CI / sbom-scan (push) Has been skipped
CI / test-go (push) Failing after 49s
CI / test-python-backend (push) Successful in 43s
CI / test-python-document-crawler (push) Successful in 32s
CI / test-python-dsms-gateway (push) Successful in 26s
CI / validate-canonical-controls (push) Successful in 18s
Build + Deploy / trigger-orca (push) Successful in 2m10s
Every hint now reads like a mini-consultation from a data protection lawyer — with specific legal references, court rulings, and common mistakes. Examples: - EuGH C-210/16 (Fanpage), C-298/17 (Kontaktpflicht), C-311/18 (Schrems II) - BGH I ZR 228/03 (ladungsfaehige Anschrift), XI ZR 388/10 (AGB) - EDSA Guidelines 2/2019 (lit. b misuse), WP 248 Rev.01 (DSFA) - DSK-Orientierungshilfe, CNIL-Leitlinien, SDM, BSI-IT-Grundschutz - §25 TDDDG, §38 BDSG, §309 BGB, §312k BGB, Art. 246a EGBGB This is the core value proposition: no lawyer can deliver this level of specific, actionable compliance feedback in 60 seconds. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -19,7 +19,7 @@ ART13_CHECKLIST = [
|
||||
r"responsible\s+(?:party|for)",
|
||||
],
|
||||
"severity": "HIGH",
|
||||
"hint": "Der Name und die Kontaktdaten des Verantwortlichen muessen gemaess Art. 13(1)(a) DSGVO angegeben werden. Ergaenzen Sie: Firmenname, Rechtsform, Anschrift, E-Mail und Telefon.",
|
||||
"hint": "Art. 13(1)(a) DSGVO verlangt vollstaendige Identifizierung: Firmenname mit Rechtsform (z.B. 'Muster GmbH'), ladungsfaehige Anschrift, E-Mail und Telefon. Haeufiger Fehler: Nur Markenname ohne Rechtsform — das genuegt nicht zur Zustellung.",
|
||||
},
|
||||
{
|
||||
"id": "controller_address",
|
||||
@@ -30,7 +30,7 @@ ART13_CHECKLIST = [
|
||||
r"[a-z\u00c0-\u017e]\w+(?:str|stra(?:ss|ß)e|weg|platz|allee|gasse|ring|damm)\s*\.?\s*\d",
|
||||
],
|
||||
"severity": "MEDIUM",
|
||||
"hint": "Die ladungsfaehige Anschrift des Verantwortlichen fehlt oder ist unvollstaendig. Erforderlich: Strasse, Hausnummer, PLZ und Ort. Ein Postfach allein genuegt nicht.",
|
||||
"hint": "Erforderlich ist eine ladungsfaehige Anschrift (Strasse, Hausnummer, PLZ, Ort). Haeufiger Fehler: Postfach oder c/o-Adresse — beides genuegt laut BGH (I ZR 228/03) nicht fuer die Zustellung.",
|
||||
},
|
||||
{
|
||||
"id": "controller_email",
|
||||
@@ -40,7 +40,7 @@ ART13_CHECKLIST = [
|
||||
r"[a-z0-9._%+\-]+@[a-z0-9.\-]+\.[a-z]{2,}",
|
||||
],
|
||||
"severity": "MEDIUM",
|
||||
"hint": "Eine E-Mail-Adresse des Verantwortlichen muss angegeben werden, damit Betroffene ihre Rechte ausueben koennen.",
|
||||
"hint": "Ohne E-Mail-Adresse koennen Betroffene ihre Rechte (Art. 15-21 DSGVO) nicht niedrigschwellig ausueben. Haeufiger Fehler: Nur Kontaktformular statt E-Mail — ein Formular allein genuegt nicht als unmittelbarer Kommunikationskanal.",
|
||||
},
|
||||
{
|
||||
"id": "controller_phone",
|
||||
@@ -51,7 +51,7 @@ ART13_CHECKLIST = [
|
||||
r"\+49\s*[\d\s/\-]{8,}",
|
||||
],
|
||||
"severity": "MEDIUM",
|
||||
"hint": "Eine Telefonnummer sollte angegeben werden, um eine niedrigschwellige Kontaktaufnahme zu ermoeglichen.",
|
||||
"hint": "EuGH (C-298/17, 'Verein fuer Konsumenteninformation') verlangt effektive Kontaktmoeglichkeit. Telefon ist nicht zwingend, aber empfohlen — fehlt sie, muss ein gleichwertiger Kanal (z.B. Chat, Rueckruf) angeboten werden.",
|
||||
},
|
||||
|
||||
# ── L1: Datenschutzbeauftragter ───────────────────────────────────
|
||||
@@ -65,7 +65,7 @@ ART13_CHECKLIST = [
|
||||
r"dsb", r"dpo",
|
||||
],
|
||||
"severity": "MEDIUM",
|
||||
"hint": "Falls ein Datenschutzbeauftragter bestellt ist (Pflicht ab 20 Personen regelmaessig mit Datenverarbeitung), muessen dessen Kontaktdaten angegeben werden (Art. 13(1)(b) DSGVO).",
|
||||
"hint": "DSB-Benennungspflicht besteht ab 20 Personen regelmaessig mit automatisierter Datenverarbeitung (§38 BDSG) oder bei Kerntaetigkeit in Ueberwachung/sensiblen Daten (Art. 37 DSGVO). Haeufiger Fehler: DSB bestellt, aber nicht in der DSE erwaehnt.",
|
||||
},
|
||||
{
|
||||
"id": "dpo_contact",
|
||||
@@ -77,7 +77,7 @@ ART13_CHECKLIST = [
|
||||
r"datenschutz@",
|
||||
],
|
||||
"severity": "MEDIUM",
|
||||
"hint": "Fuer den DSB muss mindestens eine direkte Kontaktmoeglichkeit angegeben sein (E-Mail-Adresse oder Telefon). Empfehlung: datenschutz@ihredomain.de",
|
||||
"hint": "Art. 37(7) DSGVO verlangt Veroeffentlichung der Kontaktdaten des DSB. Mindestens eine E-Mail ist noetig — den Namen muessen Sie nicht nennen. Haeufiger Fehler: DSB wird erwaehnt, aber ohne jede Kontaktmoeglichkeit.",
|
||||
},
|
||||
|
||||
# ── L1: Zwecke der Verarbeitung ───────────────────────────────────
|
||||
@@ -93,7 +93,7 @@ ART13_CHECKLIST = [
|
||||
r"daten\s+werden\s+(?:zu|fuer|für)\s+(?:folgende|diese)",
|
||||
],
|
||||
"severity": "HIGH",
|
||||
"hint": "Art. 13(1)(c) verlangt eine Angabe der Zwecke, fuer die personenbezogene Daten verarbeitet werden. Listen Sie alle Verarbeitungszwecke konkret auf (z.B. Vertragserfuellung, Newsletter, Webanalyse).",
|
||||
"hint": "Art. 13(1)(c) verlangt konkrete Zweckangaben — nicht nur 'Wir verarbeiten Ihre Daten'. Jeder Dienst braucht einen eigenen Zweck: z.B. 'Webanalyse via Matomo', 'Newsletter-Versand', 'Kontaktanfragen'. Pauschalformulierungen verstiessen laut DSK gegen den Transparenzgrundsatz (Art. 5(1)(a)).",
|
||||
},
|
||||
{
|
||||
"id": "purposes_specific",
|
||||
@@ -104,7 +104,7 @@ ART13_CHECKLIST = [
|
||||
r"(?:bereitstellung|betrieb|sicherheit|optimierung)\s+(?:der|des|unserer|unseres)",
|
||||
],
|
||||
"severity": "LOW",
|
||||
"hint": "Allgemeine Formulierungen wie 'Wir verarbeiten Daten' genuegen nicht. Nennen Sie konkrete Zwecke: z.B. Vertragsabwicklung, Kontaktanfragen, Website-Analyse, Newsletter-Versand.",
|
||||
"hint": "Mindestens 2 konkrete Zwecke benennen, jeweils mit zugehoeriger Rechtsgrundlage. Beispiel: 'Vertragsabwicklung (Art. 6(1)(b))', 'Website-Analyse (Art. 6(1)(f))'. Einzelne Pauschalangabe genuegt nicht dem Bestimmtheitsgrundsatz.",
|
||||
},
|
||||
|
||||
# ── L1: Rechtsgrundlage ───────────────────────────────────────────
|
||||
@@ -122,7 +122,7 @@ ART13_CHECKLIST = [
|
||||
r"einwilligung\s+gem",
|
||||
],
|
||||
"severity": "HIGH",
|
||||
"hint": "Fuer jeden Verarbeitungszweck muss die Rechtsgrundlage nach Art. 6(1) DSGVO genannt werden: Einwilligung (a), Vertrag (b), rechtliche Pflicht (c), lebenswichtige Interessen (d), oeffentliches Interesse (e) oder berechtigtes Interesse (f).",
|
||||
"hint": "Jeder Verarbeitungszweck braucht eine eigene Rechtsgrundlage aus Art. 6(1) DSGVO (lit. a-f). Haeufiger Fehler: 'berechtigtes Interesse' als Auffangtatbestand fuer alles — das ist unzulaessig. Cookies/Tracking erfordern i.d.R. Einwilligung (lit. a), nicht lit. f.",
|
||||
},
|
||||
{
|
||||
"id": "legal_basis_consent_6a",
|
||||
@@ -133,7 +133,7 @@ ART13_CHECKLIST = [
|
||||
r"einwilligung\s+(?:gem|nach|i\.?\s*s\.?\s*d\.?)",
|
||||
],
|
||||
"severity": "LOW",
|
||||
"hint": "Wenn Daten auf Basis einer Einwilligung verarbeitet werden (z.B. Newsletter, Cookies), sollte Art. 6(1)(a) DSGVO als Rechtsgrundlage genannt und auf das Widerrufsrecht hingewiesen werden.",
|
||||
"hint": "Bei Einwilligung (Art. 6(1)(a)) muss zwingend auf das jederzeitige Widerrufsrecht hingewiesen werden (Art. 7(3) DSGVO). Haeufiger Fehler: Widerruf wird erwaehnt, aber ohne konkreten Weg (z.B. Link, E-Mail-Adresse, Abmeldelink).",
|
||||
},
|
||||
{
|
||||
"id": "legal_basis_contract_6b",
|
||||
@@ -145,7 +145,7 @@ ART13_CHECKLIST = [
|
||||
r"durchf(?:ue|ü)hrung\s+(?:eines|des|vorvertragliche)",
|
||||
],
|
||||
"severity": "LOW",
|
||||
"hint": "Daten, die zur Vertragserfuellung oder vorvertraglichen Massnahmen verarbeitet werden, sollten auf Art. 6(1)(b) DSGVO gestuetzt werden.",
|
||||
"hint": "Art. 6(1)(b) gilt nur fuer Daten, die zur Vertragsdurchfuehrung objektiv erforderlich sind. Haeufiger Fehler: Tracking/Werbung auf lit. b stuetzen — laut EDSA (Guidelines 2/2019) ist das unzulaessig. Solche Zwecke erfordern lit. a oder lit. f.",
|
||||
},
|
||||
{
|
||||
"id": "legal_basis_interest_6f",
|
||||
@@ -156,7 +156,7 @@ ART13_CHECKLIST = [
|
||||
r"berechtigte[sn]?\s+interesse",
|
||||
],
|
||||
"severity": "LOW",
|
||||
"hint": "Wenn Sie sich auf ein berechtigtes Interesse (Art. 6(1)(f)) stuetzen, muss dieses Interesse konkret benannt werden (z.B. Betrugspraevention, IT-Sicherheit, Direktwerbung).",
|
||||
"hint": "Bei Art. 6(1)(f) muss das konkrete Interesse benannt werden — 'berechtigtes Interesse' allein genuegt nicht. Beispiele: 'IT-Sicherheit', 'Betrugspraevention', 'Direktwerbung (ErwGr. 47)'. Ohne Benennung ist die Angabe intransparent.",
|
||||
},
|
||||
{
|
||||
"id": "legal_basis_balancing",
|
||||
@@ -168,7 +168,7 @@ ART13_CHECKLIST = [
|
||||
r"abw(?:ae|ä)gung.*(?:recht|interesse|freiheit)",
|
||||
],
|
||||
"severity": "LOW",
|
||||
"hint": "Bei Verarbeitung auf Basis von Art. 6(1)(f) muss dokumentiert werden, warum Ihr berechtigtes Interesse die Rechte der Betroffenen ueberwiegt. Ergaenzen Sie eine Interessenabwaegung oder verweisen Sie auf eine solche.",
|
||||
"hint": "Art. 6(1)(f) erfordert eine dokumentierte Interessenabwaegung. Beschreiben Sie: (1) das konkrete Interesse, (2) warum es die Grundrechte der Betroffenen ueberwiegt, (3) welche Schutzmassnahmen bestehen. Fehlende Abwaegung ist ein haeufiger Bussgeldgrund.",
|
||||
},
|
||||
|
||||
# ── L1: Empfaenger ────────────────────────────────────────────────
|
||||
@@ -183,7 +183,7 @@ ART13_CHECKLIST = [
|
||||
r"auftragsverarbeit",
|
||||
],
|
||||
"severity": "MEDIUM",
|
||||
"hint": "Empfaenger oder Kategorien von Empfaengern der Daten muessen benannt werden (Art. 13(1)(e) DSGVO). Beispiele: Hosting-Anbieter, Zahlungsdienstleister, Steuerberater.",
|
||||
"hint": "Art. 13(1)(e) verlangt Benennung der Empfaenger oder Empfaenger-Kategorien. Haeufiger Fehler: Google Analytics, Meta Pixel o.ae. werden eingebunden, aber nicht als Empfaenger genannt. Jeder Drittdienst mit Datenzugang muss erwaehnt werden.",
|
||||
},
|
||||
{
|
||||
"id": "recipients_categories",
|
||||
@@ -194,7 +194,7 @@ ART13_CHECKLIST = [
|
||||
r"(?:dienstleister|auftragnehmer|subunternehmer).*(?:fuer|für|im bereich)",
|
||||
],
|
||||
"severity": "LOW",
|
||||
"hint": "Listen Sie konkrete Empfaenger-Kategorien auf: z.B. IT-Dienstleister, Hosting-Anbieter, Zahlungsabwickler, Versandunternehmen, Steuerberater. 'Dritte' allein genuegt nicht.",
|
||||
"hint": "'An Dritte' oder 'an Dienstleister' ist zu unbestimmt. Nennen Sie Kategorien: z.B. 'Hosting (Hetzner)', 'Zahlungsabwicklung (Stripe)', 'E-Mail-Versand (Mailchimp)'. EuGH (C-154/21, 'RW') fordert moeglichst konkrete Benennung.",
|
||||
},
|
||||
{
|
||||
"id": "recipients_processor",
|
||||
@@ -206,7 +206,7 @@ ART13_CHECKLIST = [
|
||||
r"avv|av-vertrag|auftragsverarbeitungsvertrag",
|
||||
],
|
||||
"severity": "LOW",
|
||||
"hint": "Falls Auftragsverarbeiter eingesetzt werden (z.B. Cloud-Hosting, E-Mail-Service), sollte dies erwaehnt und auf bestehende AVVs nach Art. 28 DSGVO hingewiesen werden.",
|
||||
"hint": "Jeder Auftragsverarbeiter (Cloud-Hosting, Newsletter-Tool, CRM) erfordert einen AVV nach Art. 28 DSGVO. Erwaehnen Sie, dass AVVs abgeschlossen sind. Haeufiger Fehler: SaaS-Dienste (Mailchimp, HubSpot) ohne AVV einsetzen — das ist ein eigener DSGVO-Verstoss.",
|
||||
},
|
||||
|
||||
# ── L1: Drittlandtransfer ─────────────────────────────────────────
|
||||
@@ -223,7 +223,7 @@ ART13_CHECKLIST = [
|
||||
r"privacy\s+shield", r"data\s+privacy\s+framework",
|
||||
],
|
||||
"severity": "MEDIUM",
|
||||
"hint": "Falls Daten ausserhalb des EWR uebermittelt werden (z.B. USA-basierte Dienste wie Google, Microsoft, AWS), muss dies angegeben werden — inkl. des Empfaengerlandes und der Schutzgarantien.",
|
||||
"hint": "Art. 13(1)(f) DSGVO: Bei jedem Drittlandtransfer muessen Empfaengerland und Schutzgarantien genannt werden. Pruefen Sie: Google Fonts, reCAPTCHA, YouTube-Embeds, CDNs — all das sind USA-Transfers. Fehlende Angabe war Grundlage zahlreicher DSGVO-Bussgelder.",
|
||||
},
|
||||
{
|
||||
"id": "third_country_mechanism",
|
||||
@@ -255,7 +255,7 @@ ART13_CHECKLIST = [
|
||||
r"gesetzliche.*aufbewahrung",
|
||||
],
|
||||
"severity": "HIGH",
|
||||
"hint": "Die Speicherdauer oder die Kriterien zur Festlegung der Dauer muessen angegeben werden (Art. 13(2)(a) DSGVO). Nennen Sie konkrete Fristen (z.B. '10 Jahre steuerrechtliche Aufbewahrung') oder Loeschkriterien.",
|
||||
"hint": "Art. 13(2)(a) verlangt Speicherdauer ODER Kriterien zur Festlegung. 'So lange wie noetig' genuegt nicht. Nennen Sie gesetzliche Fristen: 6 Jahre Handelsrecht (§257 HGB), 10 Jahre Steuerrecht (§147 AO), oder eigene Fristen pro Zweck.",
|
||||
},
|
||||
{
|
||||
"id": "retention_periods",
|
||||
@@ -267,7 +267,7 @@ ART13_CHECKLIST = [
|
||||
r"(?:nach|innerhalb)\s+(?:von\s+)?\d+\s+(?:tag|monat|jahr)",
|
||||
],
|
||||
"severity": "MEDIUM",
|
||||
"hint": "Statt allgemeiner Aussagen ('so lange wie noetig') sollten konkrete Fristen stehen: z.B. 'Logfiles: 7 Tage', 'Vertragsdaten: 10 Jahre (§257 HGB)', 'Bewerbungen: 6 Monate nach Absage'.",
|
||||
"hint": "Konkrete Fristen pro Datenkategorie nennen: Logfiles 7-30 Tage, Rechnungen 10 Jahre (§147 AO), Bewerbungen 6 Monate (AGG-Frist), Newsletter-Daten bis Widerruf. Haeufiger Fehler: Nur eine pauschale Frist fuer alle Datenarten.",
|
||||
},
|
||||
{
|
||||
"id": "retention_deletion",
|
||||
@@ -279,7 +279,7 @@ ART13_CHECKLIST = [
|
||||
r"nach\s+(?:ablauf|wegfall).*(?:gel(?:oe|ö)scht|l(?:oe|ö)sch)",
|
||||
],
|
||||
"severity": "LOW",
|
||||
"hint": "Beschreiben Sie, wie und wann Daten geloescht werden: z.B. 'Nach Ablauf der Aufbewahrungsfrist werden die Daten routinemaessig geloescht.' oder Verweis auf ein internes Loeschkonzept.",
|
||||
"hint": "Art. 5(1)(e) DSGVO (Speicherbegrenzung) erfordert ein Loeschkonzept. Beschreiben Sie den Prozess: automatische Loeschung nach Fristablauf, regelmaessige Pruefzyklen, oder Verweis auf DIN 66398 (Loeschkonzept). Reine Archivierung ohne Loeschfrist genuegt nicht.",
|
||||
},
|
||||
|
||||
# ── L1: Betroffenenrechte ─────────────────────────────────────────
|
||||
@@ -296,7 +296,7 @@ ART13_CHECKLIST = [
|
||||
r"ihnen\s+(?:stehen|steht)\s+(?:ein|folgende)\s+recht",
|
||||
],
|
||||
"severity": "HIGH",
|
||||
"hint": "Die Betroffenenrechte (Art. 15-22 DSGVO) muessen vollstaendig aufgezaehlt werden: Auskunft, Berichtigung, Loeschung, Einschraenkung, Datenportabilitaet, Widerspruch und ggf. automatisierte Entscheidungen.",
|
||||
"hint": "Art. 13(2)(b)-(d) verlangt Nennung ALLER Betroffenenrechte: Auskunft (Art. 15), Berichtigung (16), Loeschung (17), Einschraenkung (18), Portabilitaet (20), Widerspruch (21). Haeufiger Fehler: Art. 18 (Einschraenkung) oder Art. 20 (Portabilitaet) fehlen.",
|
||||
},
|
||||
{
|
||||
"id": "rights_art15",
|
||||
@@ -304,7 +304,7 @@ ART13_CHECKLIST = [
|
||||
"level": 2, "parent": "rights",
|
||||
"patterns": [r"art\.\s*15", r"recht\s+auf\s+auskunft", r"right\s+(?:of|to)\s+access"],
|
||||
"severity": "LOW",
|
||||
"hint": "Ergaenzen Sie den Hinweis auf das Auskunftsrecht nach Art. 15 DSGVO: Betroffene koennen eine Kopie aller ueber sie gespeicherten Daten anfordern.",
|
||||
"hint": "Art. 15 DSGVO: Betroffene koennen kostenlos Auskunft und eine Kopie aller Daten verlangen. Antwortfrist: 1 Monat (Art. 12(3)). Haeufiger Fehler: Kein Hinweis auf Kostenfreiheit oder den konkreten Anfrageweg (E-Mail-Adresse).",
|
||||
},
|
||||
{
|
||||
"id": "rights_art16",
|
||||
@@ -312,7 +312,7 @@ ART13_CHECKLIST = [
|
||||
"level": 2, "parent": "rights",
|
||||
"patterns": [r"art\.\s*16", r"recht\s+auf\s+berichtigung", r"right\s+to\s+rectification"],
|
||||
"severity": "LOW",
|
||||
"hint": "Ergaenzen Sie das Recht auf Berichtigung nach Art. 16 DSGVO: Betroffene koennen die Korrektur unrichtiger Daten verlangen.",
|
||||
"hint": "Art. 16 DSGVO: Betroffene koennen Berichtigung unrichtiger Daten und Vervollstaendigung unvollstaendiger Daten verlangen. Nennen Sie den konkreten Weg zur Geltendmachung (z.B. E-Mail an datenschutz@...).",
|
||||
},
|
||||
{
|
||||
"id": "rights_art17",
|
||||
@@ -320,7 +320,7 @@ ART13_CHECKLIST = [
|
||||
"level": 2, "parent": "rights",
|
||||
"patterns": [r"art\.\s*17", r"recht\s+auf\s+l(?:oe|ö)schung", r"right\s+to\s+erasure"],
|
||||
"severity": "LOW",
|
||||
"hint": "Ergaenzen Sie das Recht auf Loeschung ('Recht auf Vergessenwerden') nach Art. 17 DSGVO.",
|
||||
"hint": "Art. 17 DSGVO ('Recht auf Vergessenwerden'): Loeschung ist Pflicht, wenn Zweck entfaellt, Einwilligung widerrufen wird oder Daten unrechtmaessig verarbeitet wurden. Erwaehnen Sie auch die Ausnahmen (z.B. gesetzliche Aufbewahrungspflichten §257 HGB, §147 AO).",
|
||||
},
|
||||
{
|
||||
"id": "rights_art18",
|
||||
@@ -328,7 +328,7 @@ ART13_CHECKLIST = [
|
||||
"level": 2, "parent": "rights",
|
||||
"patterns": [r"art\.\s*18", r"einschr(?:ae|ä)nkung\s+der\s+verarbeitung", r"right\s+to\s+restriction"],
|
||||
"severity": "LOW",
|
||||
"hint": "Ergaenzen Sie das Recht auf Einschraenkung der Verarbeitung nach Art. 18 DSGVO.",
|
||||
"hint": "Art. 18 DSGVO wird am haeufigsten vergessen. Einschraenkung greift z.B. bei bestrittener Richtigkeit oder laufendem Widerspruch. Konkret nennen: 'Statt Loeschung koennen Sie Einschraenkung der Verarbeitung verlangen (Art. 18 DSGVO).'",
|
||||
},
|
||||
{
|
||||
"id": "rights_art20",
|
||||
@@ -336,7 +336,7 @@ ART13_CHECKLIST = [
|
||||
"level": 2, "parent": "rights",
|
||||
"patterns": [r"art\.\s*20", r"daten(?:ue|ü)bertragbarkeit|datenportabilit", r"right\s+to\s+data\s+portability"],
|
||||
"severity": "LOW",
|
||||
"hint": "Ergaenzen Sie das Recht auf Datenuebertragbarkeit nach Art. 20 DSGVO: Betroffene koennen ihre Daten in einem maschinenlesbaren Format erhalten.",
|
||||
"hint": "Art. 20 DSGVO: Gilt nur bei Verarbeitung auf Basis von Einwilligung (Art. 6(1)(a)) oder Vertrag (Art. 6(1)(b)) UND automatisierter Verarbeitung. Format: strukturiert, gaengig, maschinenlesbar (z.B. JSON, CSV). Nicht anwendbar bei Art. 6(1)(f).",
|
||||
},
|
||||
{
|
||||
"id": "rights_art21",
|
||||
@@ -344,7 +344,7 @@ ART13_CHECKLIST = [
|
||||
"level": 2, "parent": "rights",
|
||||
"patterns": [r"art\.\s*21", r"widerspruchsrecht", r"right\s+to\s+object"],
|
||||
"severity": "LOW",
|
||||
"hint": "Ergaenzen Sie das Widerspruchsrecht nach Art. 21 DSGVO, insbesondere bei Verarbeitung auf Basis von Art. 6(1)(e) oder (f). Der Hinweis muss gesondert und in klarer Sprache erfolgen.",
|
||||
"hint": "Art. 21(4) DSGVO: Der Widerspruchshinweis muss spaetestens zum Zeitpunkt der ersten Kommunikation GESONDERT und in klarer Sprache erfolgen. Haeufiger Fehler: Widerspruchsrecht nur im Fliesstext versteckt — eigener Abschnitt/Hervorhebung noetig.",
|
||||
},
|
||||
{
|
||||
"id": "rights_art22_profiling",
|
||||
@@ -355,7 +355,7 @@ ART13_CHECKLIST = [
|
||||
r"profiling", r"automated\s+(?:decision|individual)",
|
||||
],
|
||||
"severity": "LOW",
|
||||
"hint": "Falls automatisierte Entscheidungen oder Profiling stattfinden, muss dies offengelegt werden (Art. 22 DSGVO). Falls nicht: Ergaenzen Sie 'Es findet keine automatisierte Entscheidungsfindung einschliesslich Profiling statt.'",
|
||||
"hint": "Art. 13(2)(f): Bei automatisierten Einzelentscheidungen muessen Logik, Tragweite und Auswirkungen erklaert werden. Falls kein Profiling stattfindet, explizit verneinen: 'Es findet keine automatisierte Entscheidungsfindung i.S.d. Art. 22 DSGVO statt.'",
|
||||
},
|
||||
|
||||
# ── L1: Beschwerderecht ───────────────────────────────────────────
|
||||
@@ -372,7 +372,7 @@ ART13_CHECKLIST = [
|
||||
r"(?:zust(?:ae|ä)ndige|competent)\s+(?:beh(?:oe|ö)rde|authority)",
|
||||
],
|
||||
"severity": "MEDIUM",
|
||||
"hint": "Betroffene muessen auf ihr Recht hingewiesen werden, sich bei einer Aufsichtsbehoerde zu beschweren (Art. 77 DSGVO). Nennen Sie idealerweise die zustaendige Landesbehoerde.",
|
||||
"hint": "Art. 13(2)(d) verlangt einen Hinweis auf das Beschwerderecht bei der Aufsichtsbehoerde (Art. 77 DSGVO). Zustaendig ist die Behoerde am Sitz des Verantwortlichen — z.B. LfDI Baden-Wuerttemberg, BayLDA, oder LfD Niedersachsen. Name und Website angeben.",
|
||||
},
|
||||
{
|
||||
"id": "complaint_authority_named",
|
||||
@@ -385,6 +385,6 @@ ART13_CHECKLIST = [
|
||||
r"(?:bayerische|hessische|s(?:ae|ä)chsische|berliner)\s+(?:datenschutz|aufsicht)",
|
||||
],
|
||||
"severity": "LOW",
|
||||
"hint": "Nennen Sie die zustaendige Aufsichtsbehoerde mit Name und Kontakt. Z.B.: 'Der Landesbeauftragte fuer den Datenschutz und die Informationsfreiheit Baden-Wuerttemberg' mit Adresse und Website.",
|
||||
"hint": "Vollstaendigen Namen, Adresse und Website der Aufsichtsbehoerde angeben. Haeufiger Fehler: 'die zustaendige Aufsichtsbehoerde' ohne Konkretisierung. Korrekt z.B.: 'LfDI BW, Koenigstrasse 10a, 70173 Stuttgart, www.baden-wuerttemberg.datenschutz.de'.",
|
||||
},
|
||||
]
|
||||
|
||||
Reference in New Issue
Block a user