"""
Seed data for Requirements.

Key requirements from:
- GDPR: Art. 5, 25, 28, 30, 32, 35 (Core Articles)
- AI Act: Art. 6, 9, 13, 14, 15 (High-Risk Requirements)
- CRA: Art. 10-15 (Vulnerability Handling)
- BSI-TR-03161: Security Requirements
"""

REQUIREMENTS_SEED = [
    # =========================================================================
    # GDPR - Datenschutz-Grundverordnung
    # =========================================================================
    {
        "regulation_code": "GDPR",
        "article": "Art. 5",
        "paragraph": "(1)(a)",
        "title": "Rechtmäßigkeit, Verarbeitung nach Treu und Glauben, Transparenz",
        "description": "Personenbezogene Daten müssen rechtmäßig, nach Treu und Glauben und transparent verarbeitet werden.",
        "requirement_text": "Personenbezogene Daten müssen auf rechtmäßige Weise, nach Treu und Glauben und in einer für die betroffene Person nachvollziehbaren Weise verarbeitet werden.",
        "breakpilot_interpretation": "Breakpilot verarbeitet Daten nur mit gültiger Rechtsgrundlage (Einwilligung, Vertrag). Transparente Datenschutzerklärung und Consent-Management.",
        "is_applicable": True,
        "priority": 1,
    },
    {
        "regulation_code": "GDPR",
        "article": "Art. 5",
        "paragraph": "(1)(b)",
        "title": "Zweckbindung",
        "description": "Daten dürfen nur für festgelegte, eindeutige und legitime Zwecke erhoben werden.",
        "requirement_text": "Personenbezogene Daten müssen für festgelegte, eindeutige und legitime Zwecke erhoben werden und dürfen nicht in einer mit diesen Zwecken nicht zu vereinbarenden Weise weiterverarbeitet werden.",
        "breakpilot_interpretation": "Jeder Verarbeitungszweck ist im Consent-System klar definiert. Keine Zweckänderung ohne neue Einwilligung.",
        "is_applicable": True,
        "priority": 1,
    },
    {
        "regulation_code": "GDPR",
        "article": "Art. 5",
        "paragraph": "(1)(c)",
        "title": "Datenminimierung",
        "description": "Datenerhebung muss auf das notwendige Maß beschränkt sein.",
        "requirement_text": "Personenbezogene Daten müssen dem Zweck angemessen und erheblich sowie auf das für die Zwecke der Verarbeitung notwendige Maß beschränkt sein.",
        "breakpilot_interpretation": "Privacy by Design: Nur erforderliche Daten werden erhoben. Keine überschüssigen Profilfelder.",
        "is_applicable": True,
        "priority": 1,
    },
    {
        "regulation_code": "GDPR",
        "article": "Art. 5",
        "paragraph": "(1)(f)",
        "title": "Integrität und Vertraulichkeit",
        "description": "Daten müssen vor unbefugter Verarbeitung und Verlust geschützt sein.",
        "requirement_text": "Personenbezogene Daten müssen in einer Weise verarbeitet werden, die eine angemessene Sicherheit gewährleistet, einschließlich Schutz vor unbefugter oder unrechtmäßiger Verarbeitung und vor unbeabsichtigtem Verlust, Zerstörung oder Schädigung.",
        "breakpilot_interpretation": "Verschlüsselung at Rest und in Transit, RBAC, Audit Logging, regelmäßige Backups.",
        "is_applicable": True,
        "priority": 1,
    },
    {
        "regulation_code": "GDPR",
        "article": "Art. 25",
        "paragraph": "(1)",
        "title": "Datenschutz durch Technikgestaltung",
        "description": "Privacy by Design - Datenschutz muss in die Entwicklung eingebaut werden.",
        "requirement_text": "Der Verantwortliche trifft sowohl zum Zeitpunkt der Festlegung der Mittel als auch zum Zeitpunkt der Verarbeitung geeignete technische und organisatorische Maßnahmen.",
        "breakpilot_interpretation": "PbD-Checkliste für neue Features, Datenschutz-Review im Development-Prozess, Standard-Datenschutzeinstellungen.",
        "is_applicable": True,
        "priority": 1,
    },
    {
        "regulation_code": "GDPR",
        "article": "Art. 25",
        "paragraph": "(2)",
        "title": "Datenschutzfreundliche Voreinstellungen",
        "description": "Privacy by Default - Standardeinstellungen müssen datenschutzfreundlich sein.",
        "requirement_text": "Der Verantwortliche trifft geeignete Maßnahmen, die sicherstellen, dass durch Voreinstellung nur personenbezogene Daten verarbeitet werden, deren Verarbeitung für den jeweiligen bestimmten Verarbeitungszweck erforderlich ist.",
        "breakpilot_interpretation": "Opt-In statt Opt-Out, minimale Default-Datenerhebung, Consent granular einholbar.",
        "is_applicable": True,
        "priority": 1,
    },
    {
        "regulation_code": "GDPR",
        "article": "Art. 28",
        "paragraph": "(1)",
        "title": "Auftragsverarbeiter",
        "description": "Nur Auftragsverarbeiter mit hinreichenden Garantien dürfen beauftragt werden.",
        "requirement_text": "Erfolgt eine Verarbeitung im Auftrag eines Verantwortlichen, so arbeitet dieser nur mit Auftragsverarbeitern, die hinreichend Garantien dafür bieten.",
        "breakpilot_interpretation": "AVV mit allen Sub-Processors, regelmäßige Überprüfung der Garantien, Sub-Processor-Liste gepflegt.",
        "is_applicable": True,
        "priority": 2,
    },
    {
        "regulation_code": "GDPR",
        "article": "Art. 28",
        "paragraph": "(3)",
        "title": "AVV-Pflichtinhalte",
        "description": "Auftragsverarbeitungsverträge müssen bestimmte Mindestinhalte haben.",
        "requirement_text": "Die Verarbeitung durch einen Auftragsverarbeiter erfolgt auf der Grundlage eines Vertrags, der Gegenstand, Dauer, Art und Zweck der Verarbeitung, Art der Daten und Kategorien betroffener Personen festlegt.",
        "breakpilot_interpretation": "AVV-Template nach Art. 28 Abs. 3, alle Pflichtklauseln enthalten, rechtliche Prüfung.",
        "is_applicable": True,
        "priority": 2,
    },
    {
        "regulation_code": "GDPR",
        "article": "Art. 30",
        "paragraph": "(1)",
        "title": "Verarbeitungsverzeichnis",
        "description": "Führung eines Verzeichnisses aller Verarbeitungstätigkeiten.",
        "requirement_text": "Jeder Verantwortliche führt ein Verzeichnis aller Verarbeitungstätigkeiten, die seiner Zuständigkeit unterliegen.",
        "breakpilot_interpretation": "VVT gepflegt mit allen Verarbeitungen, regelmäßige Aktualisierung, alle Pflichtangaben enthalten.",
        "is_applicable": True,
        "priority": 1,
    },
    {
        "regulation_code": "GDPR",
        "article": "Art. 32",
        "paragraph": "(1)(a)",
        "title": "Pseudonymisierung und Verschlüsselung",
        "description": "Technische Maßnahmen zur Pseudonymisierung und Verschlüsselung.",
        "requirement_text": "Die Pseudonymisierung und Verschlüsselung personenbezogener Daten.",
        "breakpilot_interpretation": "AES-256 Encryption at Rest, TLS 1.3 in Transit, Pseudonymisierung wo möglich.",
        "is_applicable": True,
        "priority": 1,
    },
    {
        "regulation_code": "GDPR",
        "article": "Art. 32",
        "paragraph": "(1)(b)",
        "title": "Vertraulichkeit und Integrität der Systeme",
        "description": "Fähigkeit, Vertraulichkeit, Integrität und Verfügbarkeit sicherzustellen.",
        "requirement_text": "Die Fähigkeit, die Vertraulichkeit, Integrität, Verfügbarkeit und Belastbarkeit der Systeme und Dienste im Zusammenhang mit der Verarbeitung auf Dauer sicherzustellen.",
        "breakpilot_interpretation": "RBAC, Audit Logging, DDoS-Schutz, Monitoring & Alerting, redundante Infrastruktur.",
        "is_applicable": True,
        "priority": 1,
    },
    {
        "regulation_code": "GDPR",
        "article": "Art. 32",
        "paragraph": "(1)(c)",
        "title": "Wiederherstellbarkeit",
        "description": "Fähigkeit zur raschen Wiederherstellung nach Zwischenfällen.",
        "requirement_text": "Die Fähigkeit, die Verfügbarkeit der personenbezogenen Daten und den Zugang zu ihnen bei einem physischen oder technischen Zwischenfall rasch wiederherzustellen.",
        "breakpilot_interpretation": "Tägliche Backups, dokumentierter Recovery-Plan, RTO < 4h, getestete Wiederherstellung.",
        "is_applicable": True,
        "priority": 1,
    },
    {
        "regulation_code": "GDPR",
        "article": "Art. 32",
        "paragraph": "(1)(d)",
        "title": "Regelmäßige Überprüfung",
        "description": "Regelmäßige Überprüfung und Bewertung der Wirksamkeit der TOMs.",
        "requirement_text": "Ein Verfahren zur regelmäßigen Überprüfung, Bewertung und Evaluierung der Wirksamkeit der technischen und organisatorischen Maßnahmen.",
        "breakpilot_interpretation": "Jährliche Sicherheitsaudits, Penetration Tests, Control Reviews, Compliance Dashboard.",
        "is_applicable": True,
        "priority": 2,
    },
    {
        "regulation_code": "GDPR",
        "article": "Art. 35",
        "paragraph": "(1)",
        "title": "Datenschutz-Folgenabschätzung",
        "description": "DPIA bei voraussichtlich hohem Risiko für Betroffene.",
        "requirement_text": "Hat eine Form der Verarbeitung voraussichtlich ein hohes Risiko für die Rechte und Freiheiten natürlicher Personen zur Folge, so führt der Verantwortliche vorab eine Abschätzung der Folgen durch.",
        "breakpilot_interpretation": "DPIA für KI-Verarbeitung und Schülerdaten durchgeführt, Risiken bewertet, Maßnahmen dokumentiert.",
        "is_applicable": True,
        "priority": 1,
    },

    # =========================================================================
    # AI Act - KI-Verordnung
    # =========================================================================
    {
        "regulation_code": "AIACT",
        "article": "Art. 6",
        "paragraph": "(1)",
        "title": "Klassifizierungsregeln für Hochrisiko-KI-Systeme",
        "description": "KI-Systeme müssen nach Risiko klassifiziert werden.",
        "requirement_text": "Ein KI-System wird als Hochrisiko-KI-System eingestuft, wenn es als Sicherheitskomponente eines Produkts verwendet wird oder selbst ein Produkt ist, das unter bestimmte Harmonisierungsrechtsvorschriften fällt.",
        "breakpilot_interpretation": "Breakpilot KI-Systeme klassifiziert als Limited Risk (Bildungsunterstützung). Keine High-Risk-Klassifizierung, da keine Bewertung/Prüfung mit rechtlicher Wirkung.",
        "is_applicable": True,
        "priority": 2,
    },
    {
        "regulation_code": "AIACT",
        "article": "Art. 9",
        "paragraph": "(1)",
        "title": "Risikomanagement für High-Risk-KI",
        "description": "Risikomanagement-System für Hochrisiko-KI etablieren.",
        "requirement_text": "Für Hochrisiko-KI-Systeme wird ein Risikomanagementsystem eingerichtet, umgesetzt, dokumentiert und aufrechterhalten.",
        "breakpilot_interpretation": "Obwohl nicht High-Risk: Risikobewertung für KI-Use-Cases durchgeführt, Mitigationsmaßnahmen dokumentiert.",
        "is_applicable": True,
        "applicability_reason": "Best Practice auch für Limited Risk KI",
        "priority": 2,
    },
    {
        "regulation_code": "AIACT",
        "article": "Art. 13",
        "paragraph": "(1)",
        "title": "Transparenz",
        "description": "KI-Systeme müssen so konzipiert sein, dass Nutzer sie verstehen können.",
        "requirement_text": "Hochrisiko-KI-Systeme werden so konzipiert und entwickelt, dass ihr Betrieb hinreichend transparent ist, damit die Nutzer die Ausgaben des Systems interpretieren und angemessen nutzen können.",
        "breakpilot_interpretation": "KI-generierte Inhalte sind als solche gekennzeichnet. Erklärbare KI-Outputs wo möglich.",
        "is_applicable": True,
        "priority": 2,
    },
    {
        "regulation_code": "AIACT",
        "article": "Art. 14",
        "paragraph": "(1)",
        "title": "Menschliche Aufsicht",
        "description": "Hochrisiko-KI-Systeme müssen menschliche Aufsicht ermöglichen.",
        "requirement_text": "Hochrisiko-KI-Systeme werden so konzipiert und entwickelt, dass sie während der Zeit ihrer Nutzung wirksam von natürlichen Personen beaufsichtigt werden können.",
        "breakpilot_interpretation": "Human-in-the-Loop für KI-generierte Arbeitsblätter. Lehrer können KI-Vorschläge prüfen und anpassen.",
        "is_applicable": True,
        "priority": 2,
    },
    {
        "regulation_code": "AIACT",
        "article": "Art. 15",
        "paragraph": "(1)",
        "title": "Genauigkeit, Robustheit und Cybersicherheit",
        "description": "KI-Systeme müssen ein angemessenes Maß an Genauigkeit erreichen.",
        "requirement_text": "Hochrisiko-KI-Systeme werden so konzipiert und entwickelt, dass sie in Bezug auf ihre Zweckbestimmung ein angemessenes Maß an Genauigkeit, Robustheit und Cybersicherheit erreichen.",
        "breakpilot_interpretation": "LLM-Outputs werden auf Qualität geprüft. Feedback-Loop für kontinuierliche Verbesserung.",
        "is_applicable": True,
        "priority": 2,
    },
    {
        "regulation_code": "AIACT",
        "article": "Art. 50",
        "paragraph": "(1)",
        "title": "Kennzeichnungspflicht für KI-generierte Inhalte",
        "description": "Nutzer müssen informiert werden, dass sie mit KI interagieren.",
        "requirement_text": "Anbieter stellen sicher, dass KI-Systeme, die für die Interaktion mit natürlichen Personen bestimmt sind, so konzipiert werden, dass natürliche Personen darüber informiert werden, dass sie mit einem KI-System interagieren.",
        "breakpilot_interpretation": "KI-Features sind klar als solche gekennzeichnet. KI-Icon und Hinweistexte implementiert.",
        "is_applicable": True,
        "priority": 1,
    },

    # =========================================================================
    # CRA - Cyber Resilience Act
    # =========================================================================
    {
        "regulation_code": "CRA",
        "article": "Art. 10",
        "paragraph": "(1)",
        "title": "Wesentliche Cybersicherheitsanforderungen",
        "description": "Produkte müssen ohne bekannte ausnutzbare Schwachstellen ausgeliefert werden.",
        "requirement_text": "Produkte mit digitalen Elementen werden so konzipiert, entwickelt und hergestellt, dass sie ein angemessenes Cybersicherheitsniveau gewährleisten.",
        "breakpilot_interpretation": "Secure-by-Design Entwicklung, SAST/DAST in CI, keine bekannten Critical/High CVEs bei Release.",
        "is_applicable": True,
        "priority": 1,
    },
    {
        "regulation_code": "CRA",
        "article": "Art. 11",
        "paragraph": "(1)",
        "title": "Meldung ausgenutzter Schwachstellen",
        "description": "Aktiv ausgenutzte Schwachstellen müssen innerhalb von 24h gemeldet werden.",
        "requirement_text": "Der Hersteller meldet dem CSIRT und der ENISA jede aktiv ausgenutzte Schwachstelle innerhalb von 24 Stunden nach Kenntnisnahme.",
        "breakpilot_interpretation": "Incident Response Plan enthält 24h-Meldepflicht. Kontakt zu BSI/CERT-Bund etabliert.",
        "is_applicable": True,
        "priority": 1,
    },
    {
        "regulation_code": "CRA",
        "article": "Art. 13",
        "paragraph": "(1)",
        "title": "Software Bill of Materials",
        "description": "SBOM muss für alle Produkte erstellt werden.",
        "requirement_text": "Hersteller ermitteln und dokumentieren Komponenten, die in dem Produkt enthalten sind, unter anderem durch Erstellung einer Software-Stückliste.",
        "breakpilot_interpretation": "CycloneDX SBOM wird automatisch bei jedem Release generiert und veröffentlicht.",
        "is_applicable": True,
        "priority": 1,
    },
    {
        "regulation_code": "CRA",
        "article": "Art. 14",
        "paragraph": "(1)",
        "title": "Sicherheitsupdates",
        "description": "Sicherheitsupdates müssen kostenlos und zeitnah bereitgestellt werden.",
        "requirement_text": "Hersteller stellen sicher, dass Schwachstellen durch kostenlose Sicherheitsupdates behoben werden können, die unverzüglich bereitgestellt werden.",
        "breakpilot_interpretation": "Patch-SLA: Critical < 7 Tage, High < 30 Tage. Updates automatisch verteilt.",
        "is_applicable": True,
        "priority": 1,
    },
    {
        "regulation_code": "CRA",
        "article": "Art. 15",
        "paragraph": "(1)",
        "title": "Support-Zeitraum",
        "description": "Mindest-Support-Zeitraum für Sicherheitsupdates.",
        "requirement_text": "Der Support-Zeitraum beträgt mindestens fünf Jahre, es sei denn, die Lebensdauer des Produkts ist kürzer.",
        "breakpilot_interpretation": "Breakpilot garantiert 5 Jahre Sicherheitsupdates ab Produktversion. EOL-Policy kommuniziert.",
        "is_applicable": True,
        "priority": 2,
    },

    # =========================================================================
    # BSI-TR-03161 - Mobile Application Security
    # =========================================================================
    {
        "regulation_code": "BSI-TR-03161-1",
        "article": "O.Arch_1",
        "paragraph": None,
        "title": "Sichere Architektur",
        "description": "Anwendung muss nach Prinzipien sicherer Architektur entwickelt werden.",
        "requirement_text": "Die Architektur der Anwendung MUSS nach anerkannten Prinzipien sicherer Software-Architektur entwickelt werden.",
        "breakpilot_interpretation": "Defense in Depth, Least Privilege, Fail Secure implementiert in Backend und Mobile App.",
        "is_applicable": True,
        "priority": 1,
    },
    {
        "regulation_code": "BSI-TR-03161-1",
        "article": "O.Auth_1",
        "paragraph": None,
        "title": "Starke Authentisierung",
        "description": "Sichere Authentisierungsmechanismen müssen implementiert sein.",
        "requirement_text": "Die Anwendung MUSS sichere Authentisierungsmechanismen implementieren.",
        "breakpilot_interpretation": "JWT-basierte Authentifizierung, MFA für Admin-Accounts, sichere Session-Verwaltung.",
        "is_applicable": True,
        "priority": 1,
    },
    {
        "regulation_code": "BSI-TR-03161-1",
        "article": "O.Cryp_1",
        "paragraph": None,
        "title": "Sichere Kryptographie",
        "description": "Nur sichere kryptographische Verfahren dürfen verwendet werden.",
        "requirement_text": "Die Anwendung MUSS ausschließlich als sicher anerkannte kryptographische Verfahren verwenden.",
        "breakpilot_interpretation": "TLS 1.3, AES-256, bcrypt für Passwörter. Keine schwachen Algorithmen (MD5, SHA1, DES).",
        "is_applicable": True,
        "priority": 1,
    },
    {
        "regulation_code": "BSI-TR-03161-1",
        "article": "O.Data_1",
        "paragraph": None,
        "title": "Datensicherheit",
        "description": "Sensible Daten müssen angemessen geschützt werden.",
        "requirement_text": "Die Anwendung MUSS sensible Daten sowohl bei der Übertragung als auch bei der Speicherung angemessen schützen.",
        "breakpilot_interpretation": "Encryption at Rest und in Transit, keine PII in Logs, sichere Key-Speicherung in Vault.",
        "is_applicable": True,
        "priority": 1,
    },
    {
        "regulation_code": "BSI-TR-03161-2",
        "article": "O.Auth_2",
        "paragraph": None,
        "title": "Session Management",
        "description": "Sichere Session-Verwaltung für Web-Anwendungen.",
        "requirement_text": "Web-Anwendungen MÜSSEN ein sicheres Session-Management implementieren.",
        "breakpilot_interpretation": "JWT mit kurzer Expiry, Refresh-Token-Rotation, CSRF-Schutz, Secure/HttpOnly Cookies.",
        "is_applicable": True,
        "priority": 1,
    },
    {
        "regulation_code": "BSI-TR-03161-2",
        "article": "O.Source_1",
        "paragraph": None,
        "title": "Input-Validierung",
        "description": "Alle Eingaben müssen validiert werden.",
        "requirement_text": "Alle Eingaben MÜSSEN vor der Verarbeitung auf Gültigkeit geprüft werden.",
        "breakpilot_interpretation": "Server-side Validation für alle Inputs, Sanitization, Protection gegen Injection-Angriffe.",
        "is_applicable": True,
        "priority": 1,
    },
    {
        "regulation_code": "BSI-TR-03161-3",
        "article": "O.Back_1",
        "paragraph": None,
        "title": "Sichere Backend-Kommunikation",
        "description": "Kommunikation zwischen Komponenten muss abgesichert sein.",
        "requirement_text": "Die Kommunikation zwischen Frontend und Backend MUSS über sichere Kanäle erfolgen.",
        "breakpilot_interpretation": "TLS 1.3 für alle internen Verbindungen, mTLS für Service-to-Service wo möglich.",
        "is_applicable": True,
        "priority": 1,
    },
    {
        "regulation_code": "BSI-TR-03161-3",
        "article": "O.Ops_1",
        "paragraph": None,
        "title": "Sichere Konfiguration",
        "description": "Backend-Systeme müssen sicher konfiguriert sein.",
        "requirement_text": "Backend-Systeme MÜSSEN nach Security-Best-Practices konfiguriert werden.",
        "breakpilot_interpretation": "Hardened Container Images, keine Default-Credentials, Secrets in Vault, minimale Ports.",
        "is_applicable": True,
        "priority": 1,
    },
]
