/** * DSGVO-Bussgeldentscheidungen und Durchsetzungsfaelle * * Strukturierter Katalog relevanter Bussgelder und Gerichtsentscheidungen * als Referenz fuer DSFA-Risikobewertung und Compliance-Beratung. * * Quellen: Amtliche Entscheidungen/Bescheide (§5 UrhG), EDPB-Mitteilungen (CC-BY-4.0) */ // ============================================================================= // Types // ============================================================================= export type GDPRViolationType = | 'data_minimization' // Art. 5 — Datenminimierung/Zweckbindung | 'security' // Art. 32 — Technische/Org. Massnahmen | 'special_categories' // Art. 9 — Besondere Kategorien | 'transparency' // Art. 12-14 — Informationspflichten | 'lawfulness' // Art. 6 — Rechtsmaessigkeit | 'data_subject_rights' // Art. 15-22 — Betroffenenrechte | 'dpo_conflict' // Art. 38 — DSB-Interessenkonflikt | 'accountability' // Art. 5 Abs. 2 — Rechenschaftspflicht | 'international_transfer' // Art. 44-49 — Drittlandtransfer export type EnforcementOutcome = 'final' | 'reduced_on_appeal' | 'pending' | 'overturned' export interface GDPREnforcementCase { id: string company: string country: string authority: string year: number fineOriginal: number // Urspruengliches Bussgeld in Euro fineAfterAppeal?: number // Nach Berufung (falls reduziert) outcome: EnforcementOutcome violationTypes: GDPRViolationType[] gdprArticles: string[] // Verletzte Artikel description: string keyFacts: string[] // Wesentliche Tatbestandsmerkmale lessons: string[] // Lehren fuer Unternehmen /** Nur amtliche Quellen (Bescheide, Urteile, EDPB) */ officialSources: OfficialSource[] } export interface OfficialSource { type: 'court_decision' | 'dsb_decision' | 'edpb_news' | 'bfdi_press' title: string reference?: string // Aktenzeichen date?: string url?: string licenseNote: string // Lizenzhinweis } export interface GDPRLesson { id: string gdprArticles: string[] title: string description: string relatedCaseIds: string[] severity: 'critical' | 'high' | 'medium' } // ============================================================================= // Enforcement Cases // ============================================================================= export const GDPR_ENFORCEMENT_CASES: GDPREnforcementCase[] = [ { id: 'CASE-HM-2020', company: 'H&M (Nuernberg)', country: 'DE', authority: 'Hamburger Datenschutzbehoerde (HmbBfDI)', year: 2020, fineOriginal: 35_300_000, outcome: 'final', violationTypes: ['special_categories', 'lawfulness'], gdprArticles: ['Art. 6 DSGVO', 'Art. 9 DSGVO'], description: 'Systematische Ausspaeung von Beschaeftigtendaten. In sog. "Welcome-Back-Talks" nach ' + 'Krankheit wurden private Informationen zu Gesundheit, Familie und Religion erfasst und ' + 'in einer Datenbank gespeichert. Die Daten waren fuer Fuehrungskraefte zugaenglich.', keyFacts: [ 'Erfassung und Auswertung privater Gesundheitsinformationen', 'Systematische Dokumentation in Datenbank', 'Zugang fuer breiten Kreis von Fuehrungskraeften', 'Verarbeitung besonderer Kategorien (Art. 9) ohne Rechtsgrundlage', ], lessons: [ 'Gesundheitsdaten duerfen nur mit strenger Rechtsgrundlage verarbeitet werden', 'Mitarbeiter-Gespraeche duerfen nicht zur verdeckten Datenerhebung missbraucht werden', 'Besondere Kategorien (Art. 9) erfordern besondere Schutzmassnahmen', ], officialSources: [ { type: 'dsb_decision', title: 'HmbBfDI Bussgeld gegen H&M Servicecenter', date: '2020-10-01', licenseNote: 'Amtlicher Bescheid gem. §5 UrhG', }, ], }, { id: 'CASE-DW-2019', company: 'Deutsche Wohnen SE (Berlin)', country: 'DE', authority: 'Berliner Beauftragte fuer Datenschutz (BlnBDI)', year: 2019, fineOriginal: 14_500_000, outcome: 'final', violationTypes: ['data_minimization', 'accountability'], gdprArticles: ['Art. 5 DSGVO', 'Art. 25 DSGVO'], description: 'Langjaehrige Speicherung von Mieterdaten ohne Rechtsgrundlage. Das Archivsystem erlaubte ' + 'keine Loeschung veralteter Daten (Gehaltsabrechnungen, Kontodaten, Mietvertraege). ' + 'Trotz vorheriger Beanstandung keine technischen Massnahmen zur Loeschung umgesetzt.', keyFacts: [ 'Archivsystem ohne Loeschmoeglichkeit fuer veraltete Daten', 'Vorherige Beanstandung durch Aufsichtsbehoerde ohne Abhilfe', 'Verstoss gegen Datenminimierung und Speicherbegrenzung', 'Keine Privacy-by-Design-Massnahmen (Art. 25)', ], lessons: [ 'Loeschkonzepte muessen technisch umsetzbar sein', 'Vorherige Beanstandungen erhoehen das Bussgeld erheblich', 'Art. 25 (Privacy by Design) betrifft auch bestehende Systeme', ], officialSources: [ { type: 'edpb_news', title: 'Berlin Commissioner for Data Protection Imposes Fine on Real Estate Company', url: 'https://www.edpb.europa.eu/news/national-news/2019/berlin-commissioner-data-protection-imposes-fine-real-estate-company_en', licenseNote: 'EDPB Nachricht, CC-BY-4.0', }, ], }, { id: 'CASE-1U1-2019', company: '1&1 Telecom GmbH', country: 'DE', authority: 'BfDI (Bundesbeauftragter)', year: 2019, fineOriginal: 9_550_000, fineAfterAppeal: 900_000, outcome: 'reduced_on_appeal', violationTypes: ['security'], gdprArticles: ['Art. 32 DSGVO'], description: 'Unzureichende Kunden-Authentifizierung: Allein Name und Geburtsdatum genuegten fuer ' + 'telefonische Auskuenfte. Das LG Bonn bestaetigte den Verstoss, reduzierte das Bussgeld ' + 'jedoch auf 900.000 Euro, da kein massiver Datenskandal vorlag und das Unternehmen kooperativ war.', keyFacts: [ 'Nur Name und Geburtsdatum als Authentifizierung', 'Verstoesse gegen Art. 32 (technisch-organisatorische Massnahmen)', 'LG Bonn reduzierte Bussgeld von 9,55 Mio. auf 0,9 Mio. Euro', 'Kooperatives Verhalten als mildernder Umstand', ], lessons: [ 'Starke Authentifizierung ist Pflicht bei Kundenkontakt', 'Art. 32 verlangt dem Risiko angemessene Sicherheit', 'Kooperation mit der Aufsichtsbehoerde kann Bussgelder deutlich reduzieren', ], officialSources: [ { type: 'bfdi_press', title: 'BfDI verhaengt Geldbusse gegen Telekommunikationsdienstleister', date: '2019-12-09', url: 'https://www.bfdi.bund.de/SharedDocs/Pressemitteilungen/DE/2019/30_BfDIverh%C3%A4ngtGeldbu%C3%9Fe1u1.html', licenseNote: 'Amtliche Pressemitteilung gem. §5 UrhG', }, { type: 'court_decision', title: 'LG Bonn, Urteil v. 11.11.2020 — Reduzierung auf 900.000 Euro', reference: 'LG Bonn, 2020', date: '2020-11-11', licenseNote: 'Amtliches Werk gem. §5 UrhG', }, ], }, { id: 'CASE-WA-2021', company: 'WhatsApp Ireland Ltd.', country: 'IE', authority: 'Irish Data Protection Commission (DPC)', year: 2021, fineOriginal: 225_000_000, outcome: 'final', violationTypes: ['transparency'], gdprArticles: ['Art. 5 DSGVO', 'Art. 12 DSGVO', 'Art. 13 DSGVO', 'Art. 14 DSGVO'], description: 'Verletzung der Transparenzpflichten: Unvollstaendige Information ueber Datenweitergabe ' + 'innerhalb der Meta/Facebook-Unternehmensgruppe. Betroffene wurden nicht ausreichend darueber ' + 'informiert, welche Daten zu welchen Zwecken mit welchen Empfaengern geteilt wurden.', keyFacts: [ 'Mangelnde Transparenz bei konzerninterner Datenweitergabe', 'Unzureichende Datenschutzhinweise (Art. 12-14)', 'EDPB-Streitbeilegung erhoehte das Bussgeld erheblich', 'Hoechstes Bussgeld gegen ein Unternehmen in der EU zum damaligen Zeitpunkt', ], lessons: [ 'Datenschutzhinweise muessen vollstaendig und verstaendlich sein', 'Konzerninterne Datenweitergabe muss transparent dokumentiert werden', 'Art. 12 verlangt klare, einfache Sprache', ], officialSources: [ { type: 'dsb_decision', title: 'DPC Decision re WhatsApp Ireland Limited', date: '2021-09-02', licenseNote: 'Amtliche Entscheidung der irischen Aufsichtsbehoerde', }, ], }, { id: 'CASE-GOOGLE-2019', company: 'Google LLC', country: 'FR', authority: 'CNIL (Franzoesische Datenschutzbehoerde)', year: 2019, fineOriginal: 50_000_000, outcome: 'final', violationTypes: ['transparency', 'lawfulness'], gdprArticles: ['Art. 6 DSGVO', 'Art. 12 DSGVO', 'Art. 13 DSGVO'], description: 'Maengel bei Einwilligung und Transparenz: Informationen zur Datenverarbeitung waren ueber ' + 'mehrere Seiten verstreut und schwer verstaendlich. Einwilligung fuer personalisierte Werbung ' + 'war vorausgewaehlt und nicht hinreichend spezifisch.', keyFacts: [ 'Informationen ueber 5-6 Klicks verstreut', 'Vorausgewaehlte Einwilligung (kein aktives Opt-in)', 'Einwilligung nicht granular genug', 'Erstes grosses DSGVO-Bussgeld gegen US-Tech-Konzern', ], lessons: [ 'Einwilligung muss aktiv, informiert und spezifisch sein', 'Datenschutzinformationen muessen leicht zugaenglich sein', 'Vorausgewaehlte Checkboxen sind keine gueltige Einwilligung', ], officialSources: [ { type: 'dsb_decision', title: 'CNIL Deliberation No. SAN-2019-001 v. 21.01.2019', date: '2019-01-21', licenseNote: 'Amtliche Entscheidung der CNIL', }, ], }, { id: 'CASE-OLG-DD-2021', company: 'GmbH-Geschaeftsfuehrer (Detektiveinsatz)', country: 'DE', authority: 'OLG Dresden', year: 2021, fineOriginal: 5_000, // Schadensersatz, kein Bussgeld outcome: 'final', violationTypes: ['lawfulness'], gdprArticles: ['Art. 6 DSGVO', 'Art. 10 DSGVO', 'Art. 82 DSGVO'], description: 'Persoenliche Haftung des Geschaeftsfuehrers: Ein GmbH-GF liess eine Privatperson durch ' + 'einen Detektiv ausspionieren. Das OLG Dresden sprach dem Betroffenen 5.000 Euro Schadensersatz ' + 'zu — gegen GmbH und Geschaeftsfuehrer als Gesamtschuldner. Begruendung: Der GF entscheide ' + 'selbst ueber die Datenverarbeitung und sei daher Verantwortlicher i.S.d. Art. 4 Nr. 7 DSGVO.', keyFacts: [ 'Geschaeftsfuehrer als Verantwortlicher (Art. 4 Nr. 7)', 'Persoenliche Haftung neben der GmbH (Gesamtschuldner)', 'Schadensersatz nach Art. 82 DSGVO', 'Ausspionierung durch Detektiv = Verstoss gegen Art. 6, 10', ], lessons: [ 'Geschaeftsfuehrer koennen persoenlich fuer DSGVO-Verstoesse haften', 'Art. 82 DSGVO ermoeglicht Schadensersatz gegen natuerliche Personen', 'Verantwortlichkeit i.S.d. Art. 4 Nr. 7 kann auch den GF persoenlich treffen', ], officialSources: [ { type: 'court_decision', title: 'OLG Dresden, Urteil 2021 — Persoenliche GF-Haftung bei DSGVO-Verstoss', reference: 'OLG Dresden, 2021', date: '2021', licenseNote: 'Amtliches Werk gem. §5 UrhG', }, ], }, ] // ============================================================================= // Lessons Learned (aggregiert) // ============================================================================= export const GDPR_LESSONS: GDPRLesson[] = [ { id: 'LESSON-01', gdprArticles: ['Art. 5 DSGVO', 'Art. 25 DSGVO'], title: 'Datenminimierung und Loeschkonzepte sind Pflicht', description: 'Personenbezogene Daten duerfen nur so lange gespeichert werden, wie es fuer den Zweck ' + 'notwendig ist. Technische Loeschmechanismen muessen implementiert sein. Archivsysteme ' + 'ohne Loeschfunktion verstoessen gegen Art. 5 und Art. 25 DSGVO.', relatedCaseIds: ['CASE-DW-2019'], severity: 'critical', }, { id: 'LESSON-02', gdprArticles: ['Art. 32 DSGVO'], title: 'Angemessene IT-Sicherheit (Art. 32) ist unverzichtbar', description: 'Technisch-organisatorische Massnahmen muessen dem Risiko angemessen sein. ' + 'Schwache Authentifizierung (z.B. nur Name/Geburtsdatum) reicht nicht aus. ' + 'Verschluesselung, Zugriffskontrollen und starke Authentifizierung sind Pflicht.', relatedCaseIds: ['CASE-1U1-2019'], severity: 'critical', }, { id: 'LESSON-03', gdprArticles: ['Art. 9 DSGVO'], title: 'Besondere Kategorien erfordern besondere Vorsicht', description: 'Gesundheitsdaten, religioese Ueberzeugungen und andere besondere Kategorien (Art. 9) ' + 'duerfen nur mit expliziter Rechtsgrundlage verarbeitet werden. Informelle Gespraeche ' + 'duerfen nicht zur verdeckten Erhebung solcher Daten missbraucht werden.', relatedCaseIds: ['CASE-HM-2020'], severity: 'critical', }, { id: 'LESSON-04', gdprArticles: ['Art. 12 DSGVO', 'Art. 13 DSGVO', 'Art. 14 DSGVO'], title: 'Transparenz und vollstaendige Datenschutzhinweise', description: 'Betroffene muessen klar, verstaendlich und vollstaendig informiert werden. ' + 'Konzerninterne Datenweitergabe muss dokumentiert sein. Informationen duerfen ' + 'nicht ueber zahlreiche Unterseiten verstreut werden.', relatedCaseIds: ['CASE-WA-2021', 'CASE-GOOGLE-2019'], severity: 'high', }, { id: 'LESSON-05', gdprArticles: ['Art. 82 DSGVO', 'Art. 4 Nr. 7 DSGVO'], title: 'Persoenliche Haftung von Geschaeftsfuehrern moeglich', description: 'Geschaeftsfuehrer koennen neben dem Unternehmen persoenlich fuer DSGVO-Verstoesse ' + 'haften, wenn sie die Datenverarbeitung selbst veranlassen. Dies gilt insbesondere ' + 'bei vorsaetzlichen Verstoessen.', relatedCaseIds: ['CASE-OLG-DD-2021'], severity: 'high', }, { id: 'LESSON-06', gdprArticles: ['Art. 83 DSGVO'], title: 'Kooperation kann Bussgelder deutlich reduzieren', description: 'Kooperatives Verhalten und zeitnahe Massnahmen zur Abhilfe werden von Aufsichtsbehoerden ' + 'und Gerichten als mildernde Umstaende anerkannt. Im 1&1-Fall wurde das Bussgeld um ueber ' + '90% reduziert.', relatedCaseIds: ['CASE-1U1-2019'], severity: 'medium', }, ] // ============================================================================= // Violation Type Labels // ============================================================================= export const VIOLATION_TYPE_LABELS: Record = { data_minimization: 'Datenminimierung / Speicherbegrenzung', security: 'IT-Sicherheit (Art. 32)', special_categories: 'Besondere Kategorien (Art. 9)', transparency: 'Transparenz / Informationspflichten', lawfulness: 'Rechtsmaessigkeit (Art. 6)', data_subject_rights: 'Betroffenenrechte', dpo_conflict: 'DSB-Interessenkonflikt', accountability: 'Rechenschaftspflicht', international_transfer: 'Drittlandtransfer', } // ============================================================================= // Helper Functions // ============================================================================= /** * Gibt Enforcement Cases zurueck, die fuer bestimmte DSGVO-Artikel relevant sind. */ export function getEnforcementCasesForArticle(article: string): GDPREnforcementCase[] { return GDPR_ENFORCEMENT_CASES.filter(c => c.gdprArticles.some(a => a.toLowerCase().includes(article.toLowerCase())) ) } /** * Gibt Enforcement Cases zurueck, die fuer einen bestimmten Verstosstyp relevant sind. */ export function getEnforcementCasesForViolationType(type: GDPRViolationType): GDPREnforcementCase[] { return GDPR_ENFORCEMENT_CASES.filter(c => c.violationTypes.includes(type)) } /** * Gibt Lessons zurueck, die fuer bestimmte DSGVO-Artikel relevant sind. */ export function getLessonsForArticle(article: string): GDPRLesson[] { return GDPR_LESSONS.filter(l => l.gdprArticles.some(a => a.toLowerCase().includes(article.toLowerCase())) ) } /** * Gibt das hoechste bekannte Bussgeld fuer einen Verstosstyp zurueck. */ export function getMaxFineForViolationType(type: GDPRViolationType): { amount: number company: string year: number } | null { const cases = getEnforcementCasesForViolationType(type) if (cases.length === 0) return null const sorted = [...cases].sort((a, b) => b.fineOriginal - a.fineOriginal) return { amount: sorted[0].fineOriginal, company: sorted[0].company, year: sorted[0].year, } } /** * Formatiert einen Euro-Betrag fuer die Anzeige. */ export function formatFineAmount(amount: number): string { if (amount >= 1_000_000) { return `${(amount / 1_000_000).toFixed(1)} Mio. Euro` } if (amount >= 1_000) { return `${(amount / 1_000).toFixed(0)}.000 Euro` } return `${amount.toLocaleString('de-DE')} Euro` }