/** * RAG & Legal Corpus Management - Static Data * * Core data constants: regulations, industries, thematic groups, etc. * Source URLs and licenses are in rag-sources.ts. */ import { REGULATIONS_IN_RAG } from './rag-constants' import ragData from './rag-documents.json' import type { Regulation, Industry, ThematicGroup, KeyIntersection, FutureOutlookItem, AdditionalRegulation, LegalBasisInfo, TabDef, } from './types' // Re-export source URLs, licenses and license labels from rag-sources.ts export { REGULATION_SOURCES, REGULATION_LICENSES, LICENSE_LABELS, } from './rag-sources' // API uses local proxy route to klausur-service export const API_PROXY = '/api/legal-corpus' export const DSFA_API_PROXY = '/api/dsfa-corpus' // Import documents and metadata from JSON export const RAG_DOCUMENTS = ragData.documents export const DOC_TYPES = ragData.doc_types export const INDUSTRIES_LIST = ragData.industries // Derive REGULATIONS from JSON (backwards compatible for regulations tab) export const REGULATIONS: Regulation[] = RAG_DOCUMENTS.filter((d: any) => d.description).map((d: any) => ({ code: d.code, name: d.name, fullName: d.full_name || d.name, type: d.doc_type, expected: 0, description: d.description || '', relevantFor: [] as string[], keyTopics: [] as string[], effectiveDate: d.effective_date || '' })) // Helper: Check if regulation is in RAG export const isInRag = (code: string): boolean => code in REGULATIONS_IN_RAG // Helper: Get known chunk count for a regulation export const getKnownChunks = (code: string): number => REGULATIONS_IN_RAG[code]?.chunks || 0 // Known collection totals (updated: 2026-03-12) export const COLLECTION_TOTALS = { bp_compliance_gesetze: 63567, bp_compliance_ce: 18183, bp_legal_templates: 7689, bp_compliance_datenschutz: 17459, bp_dsfa_corpus: 8666, bp_compliance_recht: 1425, bp_nibis_eh: 7996, total_legal: 81750, total_all: 124985, } export const TYPE_COLORS: Record = { eu_regulation: 'bg-blue-100 text-blue-700', eu_directive: 'bg-purple-100 text-purple-700', de_law: 'bg-yellow-100 text-yellow-700', at_law: 'bg-red-100 text-red-700', ch_law: 'bg-rose-100 text-rose-700', bsi_standard: 'bg-green-100 text-green-700', national_law: 'bg-orange-100 text-orange-700', eu_guideline: 'bg-teal-100 text-teal-700', } export const TYPE_LABELS: Record = { eu_regulation: 'EU-VO', eu_directive: 'EU-RL', de_law: 'DE-Gesetz', at_law: 'AT-Gesetz', ch_law: 'CH-Gesetz', bsi_standard: 'BSI', national_law: 'Nat. Gesetz', eu_guideline: 'EDPB-GL', } // Industries for backward compatibility export const INDUSTRIES: Industry[] = INDUSTRIES_LIST.map((ind: any) => ({ id: ind.id, name: ind.name, icon: ind.icon, description: '' })) // Derive industry map from document data export const INDUSTRY_REGULATION_MAP: Record = {} for (const ind of INDUSTRIES_LIST) { INDUSTRY_REGULATION_MAP[ind.id] = RAG_DOCUMENTS .filter((d: any) => d.industries.includes(ind.id) || d.industries.includes('all')) .map((d: any) => d.code) } // Thematic groupings showing overlaps export const THEMATIC_GROUPS: ThematicGroup[] = [ { id: 'datenschutz', name: 'Datenschutz & Privacy', color: 'bg-blue-500', regulations: ['GDPR', 'EPRIVACY', 'TDDDG', 'SCC', 'DPF'], description: 'Schutz personenbezogener Daten, Einwilligung, Betroffenenrechte' }, { id: 'cybersecurity', name: 'Cybersicherheit', color: 'bg-red-500', regulations: ['NIS2', 'EUCSA', 'CRA', 'BSI-TR-03161-1', 'BSI-TR-03161-2', 'BSI-TR-03161-3', 'DORA'], description: 'IT-Sicherheit, Risikomanagement, Incident Response' }, { id: 'ai', name: 'Kuenstliche Intelligenz', color: 'bg-purple-500', regulations: ['AIACT', 'PLD', 'GPSR'], description: 'KI-Regulierung, Hochrisiko-Systeme, Haftung' }, { id: 'digital-markets', name: 'Digitale Maerkte & Plattformen', color: 'bg-green-500', regulations: ['DSA', 'DGA', 'DATAACT', 'DSM'], description: 'Plattformregulierung, Datenzugang, Urheberrecht' }, { id: 'product-safety', name: 'Produktsicherheit & Haftung', color: 'bg-orange-500', regulations: ['CRA', 'PLD', 'GPSR', 'EAA', 'MACHINERY_REG', 'BLUE_GUIDE'], description: 'Sicherheitsanforderungen, CE-Kennzeichnung, Maschinenverordnung, Barrierefreiheit' }, { id: 'finance', name: 'Finanzmarktregulierung', color: 'bg-emerald-500', regulations: ['DORA', 'PSD2', 'AMLR', 'MiCA'], description: 'Zahlungsdienste, Krypto-Assets, Geldwaeschebekaempfung, digitale Resilienz' }, { id: 'health', name: 'Gesundheitsdaten', color: 'bg-pink-500', regulations: ['EHDS', 'BSI-TR-03161-1', 'BSI-TR-03161-2', 'BSI-TR-03161-3'], description: 'Gesundheitsdatenraum, DiGA-Sicherheit, Patientenrechte' }, { id: 'verbraucherschutz', name: 'Verbraucherschutz & E-Commerce', color: 'bg-amber-500', regulations: ['DE_PANGV', 'DE_VSBG', 'DE_PRODHAFTG', 'DE_UWG', 'DE_BFSG', 'WARENKAUF_RL', 'KLAUSEL_RL', 'UNLAUTERE_PRAKTIKEN_RL', 'PREISANGABEN_RL', 'OMNIBUS_RL', 'E_COMMERCE_RL', 'VERBRAUCHERRECHTE_RL', 'DIGITALE_INHALTE_RL'], description: 'Widerrufsrecht, Preisangaben, Fernabsatz, AGB-Recht, Barrierefreiheit' }, ] // Key overlaps and intersections export const KEY_INTERSECTIONS: KeyIntersection[] = [ { regulations: ['GDPR', 'AIACT'], topic: 'KI und personenbezogene Daten', description: 'Automatisierte Entscheidungen, Profiling, Erklaerbarkeit' }, { regulations: ['NIS2', 'CRA'], topic: 'Cybersicherheit von Produkten', description: 'Sicherheitsanforderungen ueber den gesamten Lebenszyklus' }, { regulations: ['AIACT', 'PLD'], topic: 'KI-Haftung', description: 'Wer haftet, wenn KI Schaeden verursacht?' }, { regulations: ['DSA', 'GDPR'], topic: 'Plattform-Transparenz', description: 'Inhaltsmoderation und Datenschutz' }, { regulations: ['DATAACT', 'GDPR'], topic: 'Datenzugang vs. Datenschutz', description: 'Balance zwischen Datenteilung und Privacy' }, { regulations: ['CRA', 'GPSR'], topic: 'Digitale Produktsicherheit', description: 'Hardware mit Software-Komponenten' }, ] // Future outlook - proposed and discussed regulations export const FUTURE_OUTLOOK: FutureOutlookItem[] = [ { id: 'digital-omnibus', name: 'EU Digital Omnibus', status: 'proposed', statusLabel: 'Vorgeschlagen Nov 2025', expectedDate: '2026/2027', description: 'Umfassendes Vereinfachungspaket fuer AI Act, DSGVO und Cybersicherheit. Ziel: 5 Mrd. EUR Einsparung bei Verwaltungskosten.', keyChanges: [ 'AI Act: Verschiebung Hochrisiko-Pflichten um bis zu 16 Monate (bis Dez 2027)', 'AI Act: Vereinfachte Dokumentation fuer KMU und Small Midcaps', 'AI Act: EU-weite regulatorische Sandbox fuer KI-Tests', 'DSGVO: Cookie-Banner-Reform - Berechtigtes Interesse statt nur Einwilligung', 'DSGVO: Automatische Privacy-Signale via Browser statt Pop-ups', 'Cybersecurity: Single Entry Point fuer Meldepflichten' ], affectedRegulations: ['AIACT', 'GDPR', 'NIS2', 'CRA', 'EUCSA'], source: 'https://digital-strategy.ec.europa.eu/en/library/digital-omnibus-ai-regulation-proposal' }, { id: 'sustainability-omnibus', name: 'EU Nachhaltigkeits-Omnibus', status: 'agreed', statusLabel: 'Einigung Dez 2025', expectedDate: 'Q1 2026', description: 'Drastische Reduzierung der Nachhaltigkeits-Berichtspflichten. Anwendungsbereich wird stark eingeschraenkt.', keyChanges: [ 'CSRD: Nur noch Unternehmen >1.000 MA und >450 Mio EUR Umsatz berichtspflichtig', 'CSRD: Betroffene Unternehmen sinken von 50.000 auf ca. 5.000 in der EU', 'CSRD: Verschiebung Welle 2+3 um 2 Jahre (auf Geschaeftsjahr 2027)', 'CSDDD: Nur noch Unternehmen >5.000 MA und >1,5 Mrd EUR Umsatz', 'CSDDD: Sorgfaltspflichten nur noch fuer Tier-1-Lieferanten', 'CSDDD: Pruefung nur noch alle 5 Jahre statt jaehrlich' ], affectedRegulations: ['CSRD', 'CSDDD', 'EU-Taxonomie'], source: 'https://kpmg-law.de/erste-omnibus-verordnung-soll-die-pflichten-der-csddd-csrd-und-eu-taxonomie-lockern/' }, { id: 'eprivacy-withdrawal', name: 'ePrivacy-Verordnung', status: 'withdrawn', statusLabel: 'Zurueckgezogen Feb 2025', expectedDate: 'Unbekannt', description: 'Nach 9 Jahren Verhandlung hat die EU-Kommission den Vorschlag zurueckgezogen. Die ePrivacy-Richtlinie bleibt in Kraft, Cookie-Reform kommt via DSGVO/Digital Omnibus.', keyChanges: [ 'Urspruenglicher Vorschlag: Einheitliche EU-Cookie-Regeln', 'Urspruenglicher Vorschlag: Strikte Tracking-Einwilligung', 'Status: ePrivacy-Richtlinie + TDDDG bleiben gueltig', 'Zukunft: Cookie-Reform wird Teil der DSGVO-Aenderungen' ], affectedRegulations: ['EPRIVACY', 'TDDDG', 'GDPR'], source: 'https://netzpolitik.org/2025/cookie-banner-und-online-tracking-eu-kommission-beerdigt-plaene-fuer-eprivacy-verordnung/' }, { id: 'ai-liability', name: 'KI-Haftungsrichtlinie', status: 'pending', statusLabel: 'In Verhandlung', expectedDate: '2026', description: 'Ergaenzt den AI Act um zivilrechtliche Haftungsregeln. Erleichtert Geschaedigten die Beweisfuehrung bei KI-Schaeden.', keyChanges: [ 'Beweislasterleichterung bei KI-verursachten Schaeden', 'Offenlegungspflichten fuer KI-Anbieter im Schadensfall', 'Verknuepfung mit Produkthaftungsrichtlinie' ], affectedRegulations: ['AIACT', 'PLD'], source: 'https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:52022PC0496' }, ] // Potential future regulations (not yet integrated) export const ADDITIONAL_REGULATIONS: AdditionalRegulation[] = [ { code: 'PSD3', name: 'Payment Services Directive 3', fullName: 'Richtlinie zur dritten Zahlungsdiensterichtlinie (Entwurf)', type: 'eu_directive', status: 'proposed', effectiveDate: 'Voraussichtlich 2026', description: 'Modernisierung der Zahlungsdienste-Regulierung. Staerkerer Verbraucherschutz, Open Banking 2.0, Betrugsbekaempfung. Ersetzt dann PSD2.', relevantFor: ['Banken', 'Zahlungsdienstleister', 'Fintechs', 'E-Commerce'], celex: '52023PC0366', priority: 'medium' }, { code: 'AMLD6', name: 'AML-Richtlinie 6', fullName: 'Richtlinie (EU) 2024/1640 - 6. Geldwaescherichtlinie', type: 'eu_directive', status: 'active', effectiveDate: '10. Juli 2027 (Umsetzung)', description: 'Ergaenzt die AML-Verordnung. Nationale Umsetzungsvorschriften, strafrechtliche Sanktionen, AMLA-Behoerde.', relevantFor: ['Banken', 'Krypto-Anbieter', 'Immobilienmakler', 'Gluecksspielanbieter'], celex: '32024L1640', priority: 'medium' }, { code: 'FIDA', name: 'Financial Data Access', fullName: 'Verordnung zum Zugang zu Finanzdaten (Entwurf)', type: 'eu_regulation', status: 'proposed', effectiveDate: 'Voraussichtlich 2027', description: 'Open Finance Framework - erweitert PSD2-Open-Banking auf Versicherungen, Investitionen, Kredite.', relevantFor: ['Banken', 'Versicherungen', 'Fintechs', 'Datenaggregatoren'], celex: '52023PC0360', priority: 'medium' }, ] // Legal basis for using EUR-Lex content export const LEGAL_BASIS_INFO: LegalBasisInfo = { title: 'Rechtliche Grundlage fuer RAG-Nutzung', summary: 'EU-Rechtstexte auf EUR-Lex sind oeffentliche amtliche Dokumente und duerfen frei verwendet werden.', details: [ { aspect: 'EUR-Lex Dokumente', status: 'Erlaubt', explanation: 'Offizielle EU-Gesetzestexte, Richtlinien und Verordnungen sind gemeinfrei (Public Domain) und duerfen frei reproduziert und kommerziell genutzt werden.' }, { aspect: 'Text-und-Data-Mining (TDM)', status: 'Erlaubt', explanation: 'Art. 4 der DSM-Richtlinie (2019/790) erlaubt TDM fuer kommerzielle Zwecke, sofern kein Opt-out des Rechteinhabers vorliegt. Fuer amtliche Texte gilt kein Opt-out.' }, { aspect: 'AI Act Anforderungen', status: 'Beachten', explanation: 'Art. 53 AI Act verlangt von GPAI-Anbietern die Einhaltung des Urheberrechts. Fuer oeffentliche Rechtstexte unproblematisch.' }, { aspect: 'BSI-Richtlinien', status: 'Erlaubt', explanation: 'BSI-Publikationen sind oeffentlich zugaenglich und duerfen fuer Compliance-Zwecke verwendet werden.' }, ] } // Tab definitions export const TABS: TabDef[] = [ { id: 'overview', name: 'Uebersicht', icon: 'πŸ“Š' }, { id: 'regulations', name: 'Regulierungen', icon: 'πŸ“œ' }, { id: 'map', name: 'Landkarte', icon: 'πŸ—ΊοΈ' }, { id: 'search', name: 'Suche', icon: 'πŸ”' }, { id: 'chunks', name: 'Chunk-Browser', icon: '🧩' }, { id: 'data', name: 'Daten', icon: 'πŸ“' }, { id: 'ingestion', name: 'Ingestion', icon: 'βš™οΈ' }, { id: 'pipeline', name: 'Pipeline', icon: 'πŸ”„' }, ]