This repository has been archived on 2026-02-15. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
breakpilot-pwa/admin-v2/lib/sdk/dsfa/gdpr-enforcement-cases.ts
Benjamin Admin 34f3dbdfc3 fix: Restore missing DSFA catalog data files from stash
These 5 data files were untracked and only saved in git stash.
They are required by catalog-registry.ts for the Katalogverwaltung.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-10 13:19:03 +01:00

434 lines
17 KiB
TypeScript

/**
* 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<GDPRViolationType, string> = {
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`
}