package ucca

// loadHardcodedObligations populates the DSGVO module with built-in fallback data.
func (m *DSGVOModule) loadHardcodedObligations() {
	m.obligations = []Obligation{
		{
			ID:          "DSGVO-OBL-001",
			RegulationID: "dsgvo",
			Title:       "Verarbeitungsverzeichnis führen",
			Description: "Führung eines Verzeichnisses aller Verarbeitungstätigkeiten mit Angabe der Zwecke, Kategorien betroffener Personen, Empfänger, Übermittlungen in Drittländer und Löschfristen.",
			LegalBasis:  []LegalReference{{Norm: "Art. 30 DSGVO", Article: "Verzeichnis von Verarbeitungstätigkeiten"}},
			Category:    CategoryGovernance,
			Responsible: RoleDSB,
			Sanctions:   &SanctionInfo{MaxFine: "10 Mio. EUR oder 2% Jahresumsatz"},
			Evidence:    []EvidenceItem{{Name: "Verarbeitungsverzeichnis", Required: true}, {Name: "Regelmäßige Aktualisierung", Required: true}},
			Priority:    PriorityHigh,
			AppliesWhen: "always",
			ISO27001Mapping: []string{"A.5.1.1"},
		},
		{
			ID:          "DSGVO-OBL-002",
			RegulationID: "dsgvo",
			Title:       "Technische und organisatorische Maßnahmen (TOMs)",
			Description: "Implementierung geeigneter technischer und organisatorischer Maßnahmen zum Schutz personenbezogener Daten unter Berücksichtigung des Stands der Technik und der Implementierungskosten.",
			LegalBasis:  []LegalReference{{Norm: "Art. 32 DSGVO", Article: "Sicherheit der Verarbeitung"}},
			Category:    CategoryTechnical,
			Responsible: RoleITLeitung,
			Sanctions:   &SanctionInfo{MaxFine: "10 Mio. EUR oder 2% Jahresumsatz"},
			Evidence:    []EvidenceItem{{Name: "TOM-Dokumentation", Required: true}, {Name: "Risikoanalyse", Required: true}, {Name: "Verschlüsselungskonzept", Required: true}},
			Priority:    PriorityHigh,
			AppliesWhen: "always",
			ISO27001Mapping: []string{"A.8", "A.10", "A.12", "A.13"},
		},
		{
			ID:          "DSGVO-OBL-003",
			RegulationID: "dsgvo",
			Title:       "Datenschutz-Folgenabschätzung (DSFA)",
			Description: "Durchführung einer Datenschutz-Folgenabschätzung bei Verarbeitungsvorgängen, die voraussichtlich ein hohes Risiko für die Rechte und Freiheiten natürlicher Personen zur Folge haben.",
			LegalBasis:  []LegalReference{{Norm: "Art. 35 DSGVO", Article: "Datenschutz-Folgenabschätzung"}},
			Category:    CategoryGovernance,
			Responsible: RoleDSB,
			Sanctions:   &SanctionInfo{MaxFine: "10 Mio. EUR oder 2% Jahresumsatz"},
			Evidence:    []EvidenceItem{{Name: "DSFA-Dokumentation", Required: true}, {Name: "Risikobewertung", Required: true}, {Name: "Abhilfemaßnahmen", Required: true}},
			Priority:    PriorityCritical,
			AppliesWhen: "high_risk",
			ISO27001Mapping: []string{"A.5.1.1", "A.18.1"},
		},
		{
			ID:          "DSGVO-OBL-004",
			RegulationID: "dsgvo",
			Title:       "Datenschutzbeauftragten benennen",
			Description: "Benennung eines Datenschutzbeauftragten bei öffentlichen Stellen, systematischer Überwachung im großen Umfang oder Verarbeitung besonderer Kategorien im großen Umfang.",
			LegalBasis:  []LegalReference{{Norm: "Art. 37 DSGVO", Article: "Benennung eines Datenschutzbeauftragten"}, {Norm: "§ 38 BDSG"}},
			Category:    CategoryGovernance,
			Responsible: RoleManagement,
			Sanctions:   &SanctionInfo{MaxFine: "10 Mio. EUR oder 2% Jahresumsatz"},
			Evidence:    []EvidenceItem{{Name: "DSB-Bestellung", Required: true}, {Name: "Meldung an Aufsichtsbehörde", Required: true}, {Name: "Veröffentlichung Kontaktdaten", Required: true}},
			Priority:    PriorityHigh,
			AppliesWhen: "needs_dpo",
		},
		{
			ID:          "DSGVO-OBL-005",
			RegulationID: "dsgvo",
			Title:       "Auftragsverarbeitungsvertrag (AVV)",
			Description: "Abschluss eines Auftragsverarbeitungsvertrags mit allen Auftragsverarbeitern, der die Pflichten gemäß Art. 28 Abs. 3 DSGVO enthält.",
			LegalBasis:  []LegalReference{{Norm: "Art. 28 DSGVO", Article: "Auftragsverarbeiter"}},
			Category:    CategoryOrganizational,
			Responsible: RoleDSB,
			Sanctions:   &SanctionInfo{MaxFine: "10 Mio. EUR oder 2% Jahresumsatz"},
			Evidence:    []EvidenceItem{{Name: "AVV-Vertrag", Required: true}, {Name: "TOM-Nachweis des Auftragsverarbeiters", Required: true}, {Name: "Verzeichnis der Auftragsverarbeiter", Required: true}},
			Priority:    PriorityHigh,
			AppliesWhen: "uses_processors",
		},
		{
			ID:          "DSGVO-OBL-006",
			RegulationID: "dsgvo",
			Title:       "Informationspflichten erfüllen",
			Description: "Information der betroffenen Personen über die Verarbeitung ihrer Daten bei Erhebung (Art. 13) oder nachträglich (Art. 14).",
			LegalBasis:  []LegalReference{{Norm: "Art. 13 DSGVO", Article: "Informationspflicht bei Erhebung"}, {Norm: "Art. 14 DSGVO", Article: "Informationspflicht bei Dritterhebung"}},
			Category:    CategoryOrganizational,
			Responsible: RoleDSB,
			Sanctions:   &SanctionInfo{MaxFine: "20 Mio. EUR oder 4% Jahresumsatz"},
			Evidence:    []EvidenceItem{{Name: "Datenschutzerklärung", Required: true}, {Name: "Cookie-Banner", Required: true}, {Name: "Informationsblätter", Required: true}},
			Priority:    PriorityHigh,
			AppliesWhen: "controller",
		},
		{
			ID:          "DSGVO-OBL-007",
			RegulationID: "dsgvo",
			Title:       "Betroffenenrechte umsetzen",
			Description: "Einrichtung von Prozessen zur Bearbeitung von Betroffenenanfragen: Auskunft (Art. 15), Berichtigung (Art. 16), Löschung (Art. 17), Einschränkung (Art. 18), Datenübertragbarkeit (Art. 20), Widerspruch (Art. 21).",
			LegalBasis:  []LegalReference{{Norm: "Art. 15-21 DSGVO", Article: "Betroffenenrechte"}},
			Category:    CategoryOrganizational,
			Responsible: RoleDSB,
			Deadline:    &Deadline{Type: DeadlineRelative, Duration: "1 Monat nach Anfrage"},
			Sanctions:   &SanctionInfo{MaxFine: "20 Mio. EUR oder 4% Jahresumsatz"},
			Evidence:    []EvidenceItem{{Name: "DSR-Prozess dokumentiert", Required: true}, {Name: "Anfrageformulare", Required: true}, {Name: "Bearbeitungsprotokolle", Required: true}},
			Priority:    PriorityCritical,
			AppliesWhen: "controller",
		},
		{
			ID:          "DSGVO-OBL-008",
			RegulationID: "dsgvo",
			Title:       "Einwilligungen dokumentieren",
			Description: "Nachweis gültiger Einwilligungen: freiwillig, informiert, spezifisch, unmissverständlich, widerrufbar. Bei besonderen Kategorien: ausdrücklich.",
			LegalBasis:  []LegalReference{{Norm: "Art. 7 DSGVO", Article: "Bedingungen für die Einwilligung"}, {Norm: "Art. 9 Abs. 2 lit. a DSGVO"}},
			Category:    CategoryGovernance,
			Responsible: RoleDSB,
			Sanctions:   &SanctionInfo{MaxFine: "20 Mio. EUR oder 4% Jahresumsatz"},
			Evidence:    []EvidenceItem{{Name: "Consent-Management-System", Required: true}, {Name: "Einwilligungsprotokolle", Required: true}, {Name: "Widerrufsprozess", Required: true}},
			Priority:    PriorityHigh,
			AppliesWhen: "controller",
		},
		{
			ID:          "DSGVO-OBL-009",
			RegulationID: "dsgvo",
			Title:       "Datenschutz durch Technikgestaltung",
			Description: "Umsetzung von Datenschutz durch Technikgestaltung (Privacy by Design) und datenschutzfreundliche Voreinstellungen (Privacy by Default).",
			LegalBasis:  []LegalReference{{Norm: "Art. 25 DSGVO", Article: "Datenschutz durch Technikgestaltung"}},
			Category:    CategoryTechnical,
			Responsible: RoleITLeitung,
			Sanctions:   &SanctionInfo{MaxFine: "10 Mio. EUR oder 2% Jahresumsatz"},
			Evidence:    []EvidenceItem{{Name: "Privacy-by-Design-Konzept", Required: true}, {Name: "Default-Einstellungen dokumentiert", Required: true}},
			Priority:    PriorityMedium,
			AppliesWhen: "controller",
			ISO27001Mapping: []string{"A.14.1.1"},
		},
		{
			ID:          "DSGVO-OBL-010",
			RegulationID: "dsgvo",
			Title:       "Löschkonzept umsetzen",
			Description: "Implementierung eines Löschkonzepts mit definierten Aufbewahrungsfristen und automatisierten Löschroutinen.",
			LegalBasis:  []LegalReference{{Norm: "Art. 17 DSGVO", Article: "Recht auf Löschung"}, {Norm: "Art. 5 Abs. 1 lit. e DSGVO", Article: "Speicherbegrenzung"}},
			Category:    CategoryTechnical,
			Responsible: RoleITLeitung,
			Sanctions:   &SanctionInfo{MaxFine: "20 Mio. EUR oder 4% Jahresumsatz"},
			Evidence:    []EvidenceItem{{Name: "Löschkonzept", Required: true}, {Name: "Aufbewahrungsfristen", Required: true}, {Name: "Löschprotokolle", Required: true}},
			Priority:    PriorityHigh,
			AppliesWhen: "always",
		},
		{
			ID:          "DSGVO-OBL-011",
			RegulationID: "dsgvo",
			Title:       "Drittlandtransfer absichern",
			Description: "Bei Übermittlung in Drittländer: Angemessenheitsbeschluss, Standardvertragsklauseln (SCCs), BCRs oder andere Garantien nach Kapitel V DSGVO.",
			LegalBasis:  []LegalReference{{Norm: "Art. 44-49 DSGVO", Article: "Übermittlung in Drittländer"}},
			Category:    CategoryOrganizational,
			Responsible: RoleDSB,
			Sanctions:   &SanctionInfo{MaxFine: "20 Mio. EUR oder 4% Jahresumsatz"},
			Evidence:    []EvidenceItem{{Name: "SCCs abgeschlossen", Required: true}, {Name: "Transfer Impact Assessment", Required: true}, {Name: "Dokumentation der Garantien", Required: true}},
			Priority:    PriorityCritical,
			AppliesWhen: "cross_border",
		},
		{
			ID:          "DSGVO-OBL-012",
			RegulationID: "dsgvo",
			Title:       "Meldeprozess für Datenschutzverletzungen",
			Description: "Etablierung eines Prozesses zur Erkennung, Bewertung und Meldung von Datenschutzverletzungen an die Aufsichtsbehörde und ggf. an betroffene Personen.",
			LegalBasis:  []LegalReference{{Norm: "Art. 33 DSGVO", Article: "Meldung an Aufsichtsbehörde"}, {Norm: "Art. 34 DSGVO", Article: "Benachrichtigung Betroffener"}},
			Category:    CategoryMeldepflicht,
			Responsible: RoleDSB,
			Sanctions:   &SanctionInfo{MaxFine: "10 Mio. EUR oder 2% Jahresumsatz"},
			Evidence:    []EvidenceItem{{Name: "Breach-Notification-Prozess", Required: true}, {Name: "Meldevorlage", Required: true}, {Name: "Vorfallprotokoll", Required: true}},
			Priority:    PriorityCritical,
			AppliesWhen: "always",
		},
	}

	m.controls = []ObligationControl{
		{
			ID:              "DSGVO-CTRL-001",
			RegulationID:    "dsgvo",
			Name:            "Consent-Management-System",
			Description:     "Implementierung eines Systems zur Verwaltung von Einwilligungen",
			Category:        "Technisch",
			WhatToDo:        "Implementierung einer Consent-Management-Plattform mit Protokollierung, Widerrufsmöglichkeit und Nachweis",
			ISO27001Mapping: []string{"A.18.1"},
			Priority:        PriorityHigh,
		},
		{
			ID:              "DSGVO-CTRL-002",
			RegulationID:    "dsgvo",
			Name:            "Verschlüsselung personenbezogener Daten",
			Description:     "Verschlüsselung ruhender und übertragener Daten",
			Category:        "Technisch",
			WhatToDo:        "Implementierung von TLS 1.3 für Übertragung, AES-256 für Speicherung, Key-Management",
			ISO27001Mapping: []string{"A.10.1"},
			Priority:        PriorityHigh,
		},
		{
			ID:              "DSGVO-CTRL-003",
			RegulationID:    "dsgvo",
			Name:            "Zugriffskontrolle",
			Description:     "Need-to-know-Prinzip für Zugriff auf personenbezogene Daten",
			Category:        "Organisatorisch",
			WhatToDo:        "Rollenbasierte Zugriffssteuerung (RBAC), regelmäßige Überprüfung der Berechtigungen, Protokollierung",
			ISO27001Mapping: []string{"A.9.1", "A.9.2", "A.9.4"},
			Priority:        PriorityHigh,
		},
		{
			ID:              "DSGVO-CTRL-004",
			RegulationID:    "dsgvo",
			Name:            "Pseudonymisierung/Anonymisierung",
			Description:     "Anwendung von Pseudonymisierung wo möglich, Anonymisierung für Analysen",
			Category:        "Technisch",
			WhatToDo:        "Implementierung von Pseudonymisierungsverfahren, getrennte Speicherung von Zuordnungstabellen",
			ISO27001Mapping: []string{"A.8.2"},
			Priority:        PriorityMedium,
		},
		{
			ID:              "DSGVO-CTRL-005",
			RegulationID:    "dsgvo",
			Name:            "Datenschutz-Schulungen",
			Description:     "Regelmäßige Schulung aller Mitarbeiter zu Datenschutzthemen",
			Category:        "Organisatorisch",
			WhatToDo:        "Jährliche Pflichtschulungen, Awareness-Kampagnen, dokumentierte Nachweise",
			ISO27001Mapping: []string{"A.7.2.2"},
			Priority:        PriorityMedium,
		},
	}

	m.incidentDeadlines = []IncidentDeadline{
		{
			RegulationID: "dsgvo",
			Phase:        "Meldung an Aufsichtsbehörde",
			Deadline:     "72 Stunden",
			Content:      "Meldung bei Verletzung des Schutzes personenbezogener Daten, es sei denn, die Verletzung führt voraussichtlich nicht zu einem Risiko für die Rechte und Freiheiten natürlicher Personen.",
			Recipient:    "Zuständige Datenschutz-Aufsichtsbehörde",
			LegalBasis:   []LegalReference{{Norm: "Art. 33 DSGVO"}},
		},
		{
			RegulationID: "dsgvo",
			Phase:        "Benachrichtigung Betroffener",
			Deadline:     "unverzüglich",
			Content:      "Wenn die Verletzung voraussichtlich ein hohes Risiko für die Rechte und Freiheiten natürlicher Personen zur Folge hat, müssen die betroffenen Personen unverzüglich benachrichtigt werden.",
			Recipient:    "Betroffene Personen",
			LegalBasis:   []LegalReference{{Norm: "Art. 34 DSGVO"}},
		},
	}
}
