/** * EU/EWR Rechtsgrundlagen pro Land * * Strukturierter Katalog der datenschutzrechtlichen Grundlagen fuer EU/EWR/DACH. * 3-Schicht-Architektur: EU-Basis → Nationale Ergaenzungen → Dokumentspezifische Bausteine. * * Quellen: Amtliche Rechtstexte (gemeinfrei gemaess §5 UrhG / Art. 1 EU-Beschluss 2011/833/EU), * EDPB-Leitlinien (CC-BY-4.0), nationale Aufsichtsbehoerden. */ // ============================================================================= // Types // ============================================================================= export type CountryCode = | 'EU' // EU-weite Basis | 'DE' // Deutschland | 'AT' // Oesterreich | 'CH' // Schweiz (nicht EU, eigenes DSG) | 'FR' // Frankreich | 'ES' // Spanien | 'IT' // Italien | 'NL' // Niederlande | 'GB' // Grossbritannien (post-Brexit) | 'NO' // Norwegen (EWR) | 'IS' // Island (EWR) export type LegalDocumentType = | 'regulation' // EU-Verordnung (unmittelbar geltendes Recht) | 'directive' // EU-Richtlinie (nationale Umsetzung noetig) | 'national_law' // Nationales Gesetz | 'guideline' // Behoerdliche Leitlinie | 'supervisory' // Aufsichtsbehoerden-Praxis export type LicenseType = | 'PUBLIC_DOMAIN' // Amtliche Werke, gemeinfrei | 'CC-BY-4.0' // Creative Commons Attribution | 'OGL-3.0' // UK Open Government Licence | 'DL-DE-BY-2.0' // Datenlizenz Deutschland /** Welche SDK-Dokumenttypen sind EU-weit einheitlich vs. laenderspezifisch? */ export type DocumentUniformity = 'eu_uniform' | 'needs_national_supplement' | 'country_specific' // ============================================================================= // Interfaces // ============================================================================= export interface LegalFramework { id: string countryCode: CountryCode name: string fullName: string abbreviation: string type: LegalDocumentType description: string sourceUrl: string | null license: LicenseType licenseNote: string /** Welche DSGVO-Oeffnungsklauseln bedient dieses Gesetz? */ gdprOpeningClauses?: string[] /** Spezialregelungen, die ueber die DSGVO hinausgehen */ specialProvisions?: string[] /** Zustaendige Aufsichtsbehoerde(n) */ supervisoryAuthorities?: SupervisoryAuthority[] /** Relevanz-Phase: wann sollte diese Quelle ins RAG? */ ragPhase: 1 | 2 | 3 } export interface SupervisoryAuthority { name: string abbreviation: string url: string country: CountryCode } export interface DocumentTypeMatrix { documentType: string label: string uniformity: DocumentUniformity description: string /** Welche Laender brauchen spezifische Logik? */ countrySpecificNotes?: Record } // ============================================================================= // EU-Basis (Phase 1 — gilt fuer gesamte EU/EWR) // ============================================================================= export const EU_BASE_FRAMEWORKS: LegalFramework[] = [ { id: 'EU-GDPR', countryCode: 'EU', name: 'DSGVO / GDPR', fullName: 'Verordnung (EU) 2016/679 — Datenschutz-Grundverordnung', abbreviation: 'DSGVO', type: 'regulation', description: 'Die EU-Datenschutz-Grundverordnung gilt unmittelbar in allen EU-Mitgliedstaaten. ' + 'GDPR und DSGVO sind identisch — nur unterschiedliche Sprachfassungen derselben Verordnung. ' + 'Kern des europaeischen Datenschutzrechts.', sourceUrl: 'https://eur-lex.europa.eu/eli/reg/2016/679/oj/deu', license: 'CC-BY-4.0', licenseNote: 'EU-Recht, EUR-Lex, Wiederverwendung gemaess Beschluss 2011/833/EU', ragPhase: 1, }, { id: 'EU-EPRIVACY', countryCode: 'EU', name: 'ePrivacy-Richtlinie', fullName: 'Richtlinie 2002/58/EG — Datenschutz in der elektronischen Kommunikation', abbreviation: 'ePrivacy-RL', type: 'directive', description: 'Ergaenzt die DSGVO fuer elektronische Kommunikation (Cookies, Tracking, Direktmarketing). ' + 'Als Richtlinie national umgesetzt (DE: TTDSG, FR: Loi Informatique et Libertés, etc.).', sourceUrl: 'https://eur-lex.europa.eu/eli/dir/2002/58/oj', license: 'CC-BY-4.0', licenseNote: 'EU-Recht, EUR-Lex, Wiederverwendung gemaess Beschluss 2011/833/EU', ragPhase: 1, }, { id: 'EU-AI-ACT', countryCode: 'EU', name: 'AI Act', fullName: 'Verordnung (EU) 2024/1689 — KI-Verordnung', abbreviation: 'AI Act', type: 'regulation', description: 'EU-weite Regulierung kuenstlicher Intelligenz. Risikobasierter Ansatz mit Verboten (Art. 5), ' + 'Hochrisiko-Anforderungen und Transparenzpflichten. Gilt unmittelbar in allen Mitgliedstaaten.', sourceUrl: 'https://eur-lex.europa.eu/eli/reg/2024/1689/oj/deu', license: 'CC-BY-4.0', licenseNote: 'EU-Recht, EUR-Lex, Wiederverwendung gemaess Beschluss 2011/833/EU', ragPhase: 1, }, { id: 'EU-EDPB', countryCode: 'EU', name: 'EDPB-Leitlinien', fullName: 'Leitlinien des Europaeischen Datenschutzausschusses', abbreviation: 'EDPB', type: 'guideline', description: 'Verbindliche Auslegungshilfen zur DSGVO (z.B. DSFA, Art. 25, Art. 28, Drittlandtransfer, ' + 'Pseudonymisierung). Gelten als autoritaetive Rechtsquelle in der gesamten EU.', sourceUrl: 'https://edpb.europa.eu/our-work-tools/general-guidance/guidelines-recommendations-best-practices_en', license: 'CC-BY-4.0', licenseNote: 'EDPB-Publikationen, CC BY 4.0', ragPhase: 1, }, ] // ============================================================================= // Nationale Ergaenzungsgesetze (Phase 2 — modular pro Land) // ============================================================================= export const NATIONAL_FRAMEWORKS: LegalFramework[] = [ // --- Deutschland --- { id: 'DE-BDSG', countryCode: 'DE', name: 'BDSG', fullName: 'Bundesdatenschutzgesetz (2018)', abbreviation: 'BDSG', type: 'national_law', description: 'Nationales Begleitgesetz zur DSGVO. Ergaenzt u.a. Beschaeftigtendatenschutz (§26), ' + 'Videoueberwachung (§4), Forschung/Statistik, Bussgeldpraxis.', sourceUrl: 'https://www.gesetze-im-internet.de/bdsg_2018/', license: 'PUBLIC_DOMAIN', licenseNote: 'Amtliches Werk, gemeinfrei (§5 UrhG)', gdprOpeningClauses: ['Art. 6 Abs. 2', 'Art. 9 Abs. 4', 'Art. 23', 'Art. 85', 'Art. 88'], specialProvisions: [ '§26 BDSG — Beschaeftigtendatenschutz', '§4 BDSG — Videoueberwachung oeffentlich zugaenglicher Raeume', '§22 BDSG — Verarbeitung besonderer Kategorien', '§41-43 BDSG — Straf- und Bussgeldvorschriften', ], supervisoryAuthorities: [ { name: 'Bundesbeauftragter fuer den Datenschutz', abbreviation: 'BfDI', url: 'https://www.bfdi.bund.de', country: 'DE' }, ], ragPhase: 2, }, { id: 'DE-TTDSG', countryCode: 'DE', name: 'TTDSG', fullName: 'Telekommunikation-Telemedien-Datenschutz-Gesetz', abbreviation: 'TTDSG', type: 'national_law', description: 'Deutsche Umsetzung der ePrivacy-Richtlinie. Regelt insbesondere Cookie-Consent (§25 TTDSG), ' + 'Endgeraetezugriff und Telekommunikations-Datenschutz.', sourceUrl: 'https://www.gesetze-im-internet.de/ttdsg/', license: 'PUBLIC_DOMAIN', licenseNote: 'Amtliches Werk, gemeinfrei (§5 UrhG)', specialProvisions: [ '§25 TTDSG — Einwilligung fuer Cookies/Tracking', '§26 TTDSG — Anerkannte Dienste zur Einwilligungsverwaltung', ], ragPhase: 2, }, { id: 'DE-TMG', countryCode: 'DE', name: 'TMG / DDG', fullName: 'Telemediengesetz / Digitale-Dienste-Gesetz', abbreviation: 'TMG', type: 'national_law', description: 'Impressumspflicht (§5 TMG/DDG) und Anbieterkennzeichnung fuer Online-Dienste in Deutschland.', sourceUrl: 'https://www.gesetze-im-internet.de/tmg/', license: 'PUBLIC_DOMAIN', licenseNote: 'Amtliches Werk, gemeinfrei (§5 UrhG)', specialProvisions: [ '§5 TMG — Impressumspflicht (Anbieterkennzeichnung)', '§7-10 TMG — Verantwortlichkeit von Diensteanbietern', ], ragPhase: 3, }, // --- Oesterreich --- { id: 'AT-DSG', countryCode: 'AT', name: 'DSG (AT)', fullName: 'Datenschutzgesetz (Oesterreich, 2018)', abbreviation: 'DSG', type: 'national_law', description: 'Oesterreichisches Begleitgesetz zur DSGVO. Enthält Besonderheiten fuer Behoerden, ' + 'Strafverfolgung und teilweise andere Auslegungspraxis als Deutschland.', sourceUrl: 'https://www.ris.bka.gv.at/GeltendeFassung.wxe?Abfrage=Bundesnormen&Gesetzesnummer=10001597', license: 'PUBLIC_DOMAIN', licenseNote: 'Amtliches Werk, Rechtsinformationssystem des Bundes (RIS)', supervisoryAuthorities: [ { name: 'Oesterreichische Datenschutzbehoerde', abbreviation: 'DSB', url: 'https://www.dsb.gv.at', country: 'AT' }, ], ragPhase: 2, }, // --- Schweiz (NICHT EU — eigenes Recht) --- { id: 'CH-DSG', countryCode: 'CH', name: 'revDSG (CH)', fullName: 'Bundesgesetz ueber den Datenschutz (revidiertes DSG, seit 01.09.2023)', abbreviation: 'revDSG', type: 'national_law', description: 'Die Schweiz ist nicht EU-Mitglied. Das revidierte DSG (2023) ist inhaltlich aehnlich der DSGVO, ' + 'aber nicht identisch. Unterschiede: andere Sanktionslogik (Busse bis 250.000 CHF gegen ' + 'natuerliche Personen), teils andere Begriffe, kein One-Stop-Shop.', sourceUrl: 'https://www.fedlex.admin.ch/eli/cc/2022/491/de', license: 'PUBLIC_DOMAIN', licenseNote: 'Amtliches Bundesrecht, Fedlex (Schweiz)', specialProvisions: [ 'Art. 60-66 revDSG — Strafbestimmungen (gegen natuerliche Personen)', 'Art. 16-18 revDSG — Drittlandtransfer (eigene Laenderliste)', 'Art. 22 revDSG — Datenschutz-Folgenabschaetzung', 'Art. 12 revDSG — Verzeichnis der Bearbeitungstaetigkeiten', ], supervisoryAuthorities: [ { name: 'Eidgenoessischer Datenschutzbeauftragter', abbreviation: 'EDOEB', url: 'https://www.edoeb.admin.ch', country: 'CH' }, ], ragPhase: 2, }, // --- Frankreich --- { id: 'FR-LIL', countryCode: 'FR', name: 'Loi Informatique et Libertés', fullName: 'Loi n° 78-17 du 6 janvier 1978 relative à l\'informatique, aux fichiers et aux libertés', abbreviation: 'LIL', type: 'national_law', description: 'Franzoesisches Begleitgesetz zur DSGVO (aktualisiert 2018). Spezialregelungen u.a. ' + 'zur Einwilligung Minderjaehriger (ab 15 Jahren), Forschungsdaten und Gesundheitsdaten.', sourceUrl: 'https://www.legifrance.gouv.fr/loda/id/JORFTEXT000000886460', license: 'PUBLIC_DOMAIN', licenseNote: 'Amtliches Gesetz, Légifrance (gemeinfrei)', supervisoryAuthorities: [ { name: 'Commission Nationale de l\'Informatique et des Libertés', abbreviation: 'CNIL', url: 'https://www.cnil.fr', country: 'FR' }, ], ragPhase: 2, }, // --- Spanien --- { id: 'ES-LOPDGDD', countryCode: 'ES', name: 'LOPDGDD', fullName: 'Ley Orgánica 3/2018 de Protección de Datos Personales y garantía de los derechos digitales', abbreviation: 'LOPDGDD', type: 'national_law', description: 'Spanisches Datenschutzgesetz. Ergaenzt DSGVO u.a. mit Regelungen zu ' + 'Kindereinwilligung, digitalem Testament und Rechten Verstorbener.', sourceUrl: 'https://www.boe.es/diario_boe/txt.php?id=BOE-A-2018-16673', license: 'PUBLIC_DOMAIN', licenseNote: 'Amtliches Gesetz, Boletín Oficial del Estado (gemeinfrei)', supervisoryAuthorities: [ { name: 'Agencia Española de Protección de Datos', abbreviation: 'AEPD', url: 'https://www.aepd.es', country: 'ES' }, ], ragPhase: 2, }, // --- Italien --- { id: 'IT-CODICE', countryCode: 'IT', name: 'Codice Privacy', fullName: 'Decreto Legislativo 30 giugno 2003, n. 196 (Codice in materia di protezione dei dati personali)', abbreviation: 'Codice Privacy', type: 'national_law', description: 'Italienischer Datenschutzkodex, angepasst an die DSGVO (D.Lgs. 101/2018). ' + 'Enthaelt Spezialregelungen fuer Gesundheitsdaten, Forschung und Journalismus.', sourceUrl: 'https://www.normattiva.it/uri-res/N2Ls?urn:nir:stato:decreto.legislativo:2003-06-30;196!vig=', license: 'PUBLIC_DOMAIN', licenseNote: 'Amtliches Gesetz, Normattiva (gemeinfrei)', supervisoryAuthorities: [ { name: 'Garante per la protezione dei dati personali', abbreviation: 'Garante', url: 'https://www.garanteprivacy.it', country: 'IT' }, ], ragPhase: 2, }, // --- Niederlande --- { id: 'NL-AVG', countryCode: 'NL', name: 'AVG / UAVG', fullName: 'Uitvoeringswet Algemene verordening gegevensbescherming (UAVG)', abbreviation: 'UAVG', type: 'national_law', description: 'Niederlaendisches Ausfuehrungsgesetz zur DSGVO.', sourceUrl: 'https://wetten.overheid.nl/BWBR0040948/', license: 'PUBLIC_DOMAIN', licenseNote: 'Amtliches Gesetz, wetten.overheid.nl (gemeinfrei)', supervisoryAuthorities: [ { name: 'Autoriteit Persoonsgegevens', abbreviation: 'AP', url: 'https://www.autoriteitpersoonsgegevens.nl', country: 'NL' }, ], ragPhase: 2, }, // --- Grossbritannien (post-Brexit) --- { id: 'GB-DPA', countryCode: 'GB', name: 'UK DPA 2018 / UK GDPR', fullName: 'Data Protection Act 2018 + UK GDPR (retained EU law)', abbreviation: 'DPA 2018', type: 'national_law', description: 'Nach Brexit: UK GDPR (inhaltlich weitgehend identisch mit EU-DSGVO) plus Data Protection Act 2018 ' + 'als nationales Begleitgesetz. ICO als Aufsichtsbehoerde.', sourceUrl: 'https://www.legislation.gov.uk/ukpga/2018/12/contents', license: 'OGL-3.0', licenseNote: 'UK legislation, Open Government Licence v3.0', supervisoryAuthorities: [ { name: 'Information Commissioner\'s Office', abbreviation: 'ICO', url: 'https://ico.org.uk', country: 'GB' }, ], ragPhase: 2, }, // --- Norwegen (EWR) --- { id: 'NO-PERSONOPPL', countryCode: 'NO', name: 'Personopplysningsloven', fullName: 'Lov om behandling av personopplysninger (personopplysningsloven)', abbreviation: 'POL', type: 'national_law', description: 'Norwegisches DSGVO-Ausfuehrungsgesetz (EWR-Mitglied, DSGVO gilt ueber EWR-Abkommen).', sourceUrl: 'https://lovdata.no/dokument/NL/lov/2018-06-15-38', license: 'PUBLIC_DOMAIN', licenseNote: 'Amtliches Gesetz, Lovdata (gemeinfrei)', supervisoryAuthorities: [ { name: 'Datatilsynet', abbreviation: 'DT', url: 'https://www.datatilsynet.no', country: 'NO' }, ], ragPhase: 2, }, ] // ============================================================================= // Dokumenttyp-Matrix: EU-einheitlich vs. laenderspezifisch // ============================================================================= export const DOCUMENT_TYPE_MATRIX: DocumentTypeMatrix[] = [ { documentType: 'privacy_policy', label: 'Datenschutzerklaerung', uniformity: 'needs_national_supplement', description: 'DSGVO-Kern EU-weit gleich. Nationale Ergaenzungen fuer ePrivacy-Umsetzung, Behoerden-Praxis.', }, { documentType: 'ropa', label: 'Verarbeitungsverzeichnis (VVT)', uniformity: 'eu_uniform', description: 'Art. 30 DSGVO — EU-weit identische Anforderungen.', }, { documentType: 'tom', label: 'Technisch-Organisatorische Massnahmen', uniformity: 'eu_uniform', description: 'Art. 32 DSGVO — EU-weit identische Anforderungen.', }, { documentType: 'dpia', label: 'Datenschutz-Folgenabschaetzung (DSFA)', uniformity: 'eu_uniform', description: 'Art. 35 DSGVO — EU-weit identisch. Muss-Listen variieren je Aufsichtsbehoerde.', }, { documentType: 'dpa', label: 'Auftragsverarbeitungsvertrag (AVV)', uniformity: 'eu_uniform', description: 'Art. 28 DSGVO — EU-weit identische Anforderungen.', }, { documentType: 'deletion_concept', label: 'Loeschkonzept', uniformity: 'eu_uniform', description: 'Art. 5(1)(e), Art. 17 DSGVO — EU-weit einheitlich.', }, { documentType: 'breach_process', label: 'Data Breach / Incident Response', uniformity: 'eu_uniform', description: 'Art. 33-34 DSGVO — EU-weit identische 72-Stunden-Frist.', }, { documentType: 'dsar_process', label: 'Betroffenenrechte-Prozess (DSAR)', uniformity: 'eu_uniform', description: 'Art. 12-22 DSGVO — EU-weit identische Rechte und Fristen.', }, { documentType: 'imprint', label: 'Impressum', uniformity: 'country_specific', description: 'Kein DSGVO-Thema. Nationale Mediengesetze (DE: §5 TMG, AT: §5 ECG, CH: eigene Regeln).', countrySpecificNotes: { 'EU': 'Keine EU-weite Regelung', 'DE': '§5 TMG / DDG — strenge Impressumspflicht', 'AT': '§5 ECG — aehnlich wie DE, nicht identisch', 'CH': 'Obligationenrecht + kantonale Regeln', 'FR': 'Loi pour la Confiance dans l\'Économie Numérique (LCEN)', 'ES': 'LSSI-CE Art. 10', 'IT': 'D.Lgs. 70/2003', 'NL': 'Handelsregisterpflicht + BW', 'GB': 'Companies Act 2006', 'NO': 'E-handelsloven', 'IS': 'Rafraeðislög', }, }, { documentType: 'terms_of_service', label: 'AGB / Nutzungsbedingungen', uniformity: 'country_specific', description: 'Nationales Vertragsrecht (BGB, ABGB, OR). Verbraucherrecht teils EU-harmonisiert, aber national umgesetzt.', }, { documentType: 'withdrawal_notice', label: 'Widerrufsbelehrung', uniformity: 'country_specific', description: 'EU-Verbraucherrechterichtlinie national umgesetzt. DE/AT: Muster-Widerrufsbelehrung. CH: eigene Logik.', }, { documentType: 'cookie_banner', label: 'Cookie-Banner / Consent', uniformity: 'needs_national_supplement', description: 'ePrivacy + DSGVO EU-weit aehnlich, aber Aufsichtspraxis variiert (CNIL vs. DSK vs. DPC etc.).', }, ] // ============================================================================= // RAG-Schichtmodell // ============================================================================= export interface RAGLayer { phase: 1 | 2 | 3 name: string description: string scope: string sources: string[] } export const RAG_LAYERS: RAGLayer[] = [ { phase: 1, name: 'EU-Basis', description: 'Einmal laden — gilt fuer gesamte EU/EWR (ausser CH)', scope: 'EU/EWR', sources: [ 'DSGVO Volltext (EU 2016/679)', 'ePrivacy-Richtlinie (2002/58/EG)', 'AI Act (EU 2024/1689)', 'EDPB-Leitlinien (DSFA, Art. 25, Art. 28, Art. 32, Drittlandtransfer etc.)', ], }, { phase: 2, name: 'Nationale Ergaenzungen', description: 'Modular pro Land — nationale Begleitgesetze zur DSGVO', scope: 'Je Land', sources: [ 'DE: BDSG, TTDSG, DSK-Kurzpapiere', 'AT: DSG (AT), DSB-Entscheidungen', 'CH: revDSG, EDOEB-Leitlinien (separater Stack!)', 'FR: Loi Informatique et Libertés, CNIL-Leitfaeden', 'ES: LOPDGDD, AEPD-Leitfaeden', 'IT: Codice Privacy, Garante-Leitfaeden', 'NL: UAVG, AP-Leitlinien', 'GB: UK DPA 2018, ICO Guidance', ], }, { phase: 3, name: 'Dokumentspezifische Bausteine', description: 'Templates und Mustertexte fuer laenderspezifische Dokumenttypen', scope: 'Je Land + Dokumenttyp', sources: [ 'Impressum-Templates (DE §5 TMG, AT §5 ECG, CH)', 'AGB-Bausteine (SaaS/Webshop, B2B/B2C)', 'Widerrufsbelehrung (DE/AT Muster)', 'Cookie-Banner-Texte (EU-weit + Feinjustierung)', ], }, ] // ============================================================================= // Helper Functions // ============================================================================= /** Alle Rechtsgrundlagen zusammen (EU-Basis + National) */ export function getAllFrameworks(): LegalFramework[] { return [...EU_BASE_FRAMEWORKS, ...NATIONAL_FRAMEWORKS] } /** Rechtsgrundlagen fuer ein bestimmtes Land (inkl. EU-Basis) */ export function getFrameworksForCountry(country: CountryCode): LegalFramework[] { return getAllFrameworks().filter( f => f.countryCode === country || f.countryCode === 'EU' ) } /** Nur nationale Ergaenzungsgesetze (ohne EU-Basis) */ export function getNationalFrameworks(country: CountryCode): LegalFramework[] { return NATIONAL_FRAMEWORKS.filter(f => f.countryCode === country) } /** Alle Aufsichtsbehoerden */ export function getAllSupervisoryAuthorities(): SupervisoryAuthority[] { const authorities: SupervisoryAuthority[] = [] for (const fw of getAllFrameworks()) { if (fw.supervisoryAuthorities) { for (const sa of fw.supervisoryAuthorities) { if (!authorities.some(a => a.abbreviation === sa.abbreviation)) { authorities.push(sa) } } } } return authorities } /** Aufsichtsbehoerde(n) fuer ein Land */ export function getSupervisoryAuthority(country: CountryCode): SupervisoryAuthority[] { return getAllSupervisoryAuthorities().filter(sa => sa.country === country) } /** Dokumenttypen, die fuer ein Land spezifische Logik brauchen */ export function getCountrySpecificDocTypes(country: CountryCode): DocumentTypeMatrix[] { return DOCUMENT_TYPE_MATRIX.filter( d => d.uniformity === 'country_specific' || (d.uniformity === 'needs_national_supplement' && country !== 'EU') ) } /** Dokumenttypen, die EU-weit einheitlich generiert werden koennen */ export function getEUUniformDocTypes(): DocumentTypeMatrix[] { return DOCUMENT_TYPE_MATRIX.filter(d => d.uniformity === 'eu_uniform') } /** Pruefen ob ein Land EU/EWR-Mitglied ist (DSGVO direkt anwendbar) */ export function isGDPRCountry(country: CountryCode): boolean { const gdprCountries: CountryCode[] = ['EU', 'DE', 'AT', 'FR', 'ES', 'IT', 'NL', 'NO', 'IS'] return gdprCountries.includes(country) } /** Pruefen ob ein Land einen separaten Rechtsrahmen hat (nicht DSGVO) */ export function hasSeparateLegalFramework(country: CountryCode): boolean { return country === 'CH' || country === 'GB' } /** RAG-Quellen fuer eine bestimmte Phase */ export function getRAGSourcesForPhase(phase: 1 | 2 | 3): LegalFramework[] { return getAllFrameworks().filter(f => f.ragPhase === phase) } /** Zusammenfassung: Was braucht ein Unternehmen in Land X? */ export function getRequiredFrameworkSummary(country: CountryCode): { baseLaw: string nationalLaw: string | null supervisoryAuthority: string | null separateFramework: boolean } { const isGDPR = isGDPRCountry(country) const national = getNationalFrameworks(country) const authorities = getSupervisoryAuthority(country) return { baseLaw: isGDPR ? 'DSGVO (EU 2016/679)' : (country === 'CH' ? 'revDSG (CH)' : 'UK GDPR'), nationalLaw: national.length > 0 ? national.map(n => n.abbreviation).join(', ') : null, supervisoryAuthority: authorities.length > 0 ? authorities.map(a => a.abbreviation).join(', ') : null, separateFramework: hasSeparateLegalFramework(country), } }