From 47dc2e6f7a105d0e603572c54551e2888ad6d50c Mon Sep 17 00:00:00 2001 From: Benjamin Admin Date: Sat, 28 Feb 2026 01:56:09 +0100 Subject: [PATCH] feat(rag): source URLs, low-chunk warnings & IFRS/EFRAG entries MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Add REGULATION_SOURCES map with 88 original document URLs for all regulations (EUR-Lex, gesetze-im-internet.de, RIS, Fedlex, etc.) - Render "Originalquelle →" link in regulation detail panel - Add amber warning indicator for suspiciously low chunk counts (<10) - Add EU_IFRS_DE, EU_IFRS_EN, EFRAG_ENDORSEMENT to RAG tracking Co-Authored-By: Claude Opus 4.6 --- admin-lehrer/app/(admin)/ai/rag/page.tsx | 280 ++++++++++++++++++++++- 1 file changed, 269 insertions(+), 11 deletions(-) diff --git a/admin-lehrer/app/(admin)/ai/rag/page.tsx b/admin-lehrer/app/(admin)/ai/rag/page.tsx index 903a140..d783504 100644 --- a/admin-lehrer/app/(admin)/ai/rag/page.tsx +++ b/admin-lehrer/app/(admin)/ai/rag/page.tsx @@ -1058,8 +1058,217 @@ const REGULATIONS = [ keyTopics: ['Gatekeeper-Pflichten', 'Interoperabilitaet', 'Selbstbevorzugung', 'App-Store-Regeln', 'Datenportabilitaet'], effectiveDate: '2. Mai 2023' }, + // === Industrie-Compliance (2026-02-28) === + { + code: 'MACHINERY_REG', + name: 'Maschinenverordnung', + fullName: 'Verordnung (EU) 2023/1230 ueber Maschinen (Machinery Regulation)', + type: 'eu_regulation', + expected: 100, + description: 'Loest die alte Maschinenrichtlinie 2006/42/EG ab. Regelt Sicherheitsanforderungen fuer Maschinen und zugehoerige Produkte, CE-Kennzeichnung, Konformitaetsbewertung und Marktaufsicht. Neu: Cybersecurity-Anforderungen fuer vernetzte Maschinen.', + relevantFor: ['Maschinenbau', 'Industrie 4.0', 'Automatisierung', 'Hersteller', 'Importeure'], + keyTopics: ['CE-Kennzeichnung', 'Konformitaetsbewertung', 'Risikobeurteilung', 'Cybersecurity', 'Betriebsanleitung'], + effectiveDate: '20. Januar 2027' + }, + { + code: 'BLUE_GUIDE', + name: 'Blue Guide', + fullName: 'Leitfaden fuer die Umsetzung der EU-Produktvorschriften (Blue Guide 2022)', + type: 'eu_guideline', + expected: 200, + description: 'Umfassender Leitfaden der EU-Kommission zur Umsetzung von Produktvorschriften. Erklaert CE-Kennzeichnung, Konformitaetsbewertungsverfahren, notifizierte Stellen, Marktaufsicht und den New Legislative Framework.', + relevantFor: ['Hersteller', 'Importeure', 'Haendler', 'Notifizierte Stellen', 'Marktaufsichtsbehoerden'], + keyTopics: ['CE-Kennzeichnung', 'Konformitaetserklaerung', 'Notifizierte Stellen', 'Marktaufsicht', 'New Legislative Framework'], + effectiveDate: '29. Juni 2022' + }, + { + code: 'ENISA_SECURE_BY_DESIGN', + name: 'ENISA Secure by Design', + fullName: 'ENISA Secure Software Development Best Practices', + type: 'eu_guideline', + expected: 50, + description: 'ENISA-Leitfaden fuer sichere Softwareentwicklung. Beschreibt Best Practices fuer Security by Design, sichere Entwicklungsprozesse und Schwachstellenmanagement.', + relevantFor: ['Softwareentwickler', 'DevOps', 'IT-Sicherheit', 'Produktmanagement'], + keyTopics: ['Security by Design', 'SDLC', 'Schwachstellenmanagement', 'Secure Coding', 'Threat Modeling'], + effectiveDate: '2023' + }, + { + code: 'ENISA_SUPPLY_CHAIN', + name: 'ENISA Supply Chain Security', + fullName: 'ENISA Threat Landscape for Supply Chain Attacks', + type: 'eu_guideline', + expected: 50, + description: 'ENISA-Analyse der Bedrohungslandschaft fuer Supply-Chain-Angriffe. Beschreibt Angriffsvektoren, Taxonomie und Empfehlungen zur Absicherung von Software-Lieferketten.', + relevantFor: ['IT-Sicherheit', 'Beschaffung', 'Softwareentwickler', 'CISO'], + keyTopics: ['Supply Chain Security', 'SolarWinds', 'SBOM', 'Lieferantenrisiko', 'Third-Party Risk'], + effectiveDate: '2021' + }, + { + code: 'NIST_SSDF', + name: 'NIST SSDF', + fullName: 'NIST SP 800-218 — Secure Software Development Framework (SSDF)', + type: 'international_standard', + expected: 40, + description: 'NIST-Framework fuer sichere Softwareentwicklung. Definiert Praktiken und Aufgaben in vier Gruppen: Prepare, Protect, Produce, Respond. Weit verbreitet als Referenz fuer Software Supply Chain Security.', + relevantFor: ['Softwareentwickler', 'DevSecOps', 'IT-Sicherheit', 'Compliance-Manager'], + keyTopics: ['SSDF', 'Secure SDLC', 'Software Supply Chain', 'Vulnerability Management', 'Code Review'], + effectiveDate: '3. Februar 2022' + }, + { + code: 'NIST_CSF_2', + name: 'NIST CSF 2.0', + fullName: 'NIST Cybersecurity Framework (CSF) 2.0', + type: 'international_standard', + expected: 50, + description: 'Version 2.0 des NIST Cybersecurity Framework. Neue Kernfunktion "Govern" ergaenzt Identify, Protect, Detect, Respond, Recover. Erweitert den Anwendungsbereich ueber kritische Infrastruktur hinaus auf alle Organisationen.', + relevantFor: ['CISO', 'IT-Sicherheit', 'Risikomanagement', 'Geschaeftsfuehrung', 'Alle Branchen'], + keyTopics: ['Govern', 'Identify', 'Protect', 'Detect', 'Respond', 'Recover', 'Cybersecurity'], + effectiveDate: '26. Februar 2024' + }, + { + code: 'OECD_AI_PRINCIPLES', + name: 'OECD AI Principles', + fullName: 'OECD Recommendation on Artificial Intelligence (AI Principles)', + type: 'international_standard', + expected: 20, + description: 'OECD-Empfehlung zu Kuenstlicher Intelligenz. Definiert fuenf Prinzipien fuer verantwortungsvolle KI: Inklusives Wachstum, Menschenzentrierte Werte, Transparenz, Robustheit und Rechenschaftspflicht. Von 46 Laendern angenommen.', + relevantFor: ['KI-Entwickler', 'Policy-Maker', 'Ethik-Kommissionen', 'Geschaeftsfuehrung'], + keyTopics: ['AI Ethics', 'Transparenz', 'Accountability', 'Trustworthy AI', 'Human-Centered AI'], + effectiveDate: '22. Mai 2019' + }, + { + code: 'EU_IFRS', + name: 'EU-IFRS', + fullName: 'Verordnung (EU) 2023/1803 — International Financial Reporting Standards', + type: 'eu_regulation', + expected: 500, + description: 'Konsolidierte Fassung der von der EU uebernommenen IFRS/IAS/IFRIC/SIC. Rechtsverbindlich fuer boersennotierte EU-Unternehmen. Enthalt IFRS 1-17, IAS 1-41, IFRIC 1-23 und SIC 7-32 in der EU-endorsed Fassung (Stand Okt 2023). ACHTUNG: Neuere IASB-Standards sind moeglicherweise noch nicht EU-endorsed.', + relevantFor: ['Rechnungswesen', 'Wirtschaftspruefer', 'boersennotierte Unternehmen', 'Finanzberichterstattung', 'CFO'], + keyTopics: ['IFRS 16 Leasing', 'IFRS 9 Finanzinstrumente', 'IAS 1 Darstellung', 'IFRS 15 Erloese', 'IFRS 17 Versicherungsvertraege', 'Konsolidierung'], + effectiveDate: '16. Oktober 2023' + }, + { + code: 'EFRAG_ENDORSEMENT', + name: 'EFRAG Endorsement Status', + fullName: 'EFRAG EU Endorsement Status Report (Dezember 2025)', + type: 'eu_guideline', + expected: 30, + description: 'Uebersicht des European Financial Reporting Advisory Group (EFRAG) ueber den EU-Endorsement-Stand aller IFRS/IAS-Standards. Zeigt welche Standards von der EU uebernommen wurden und welche noch ausstehend sind. Relevant fuer internationale Ausschreibungen und Compliance-Pruefung.', + relevantFor: ['Rechnungswesen', 'Wirtschaftspruefer', 'Compliance Officer', 'internationale Ausschreibungen'], + keyTopics: ['EU Endorsement', 'IFRS 18', 'IFRS S1/S2 Sustainability', 'Endorsement Status', 'IASB Updates'], + effectiveDate: '18. Dezember 2025' + }, ] +// Source URLs for original documents (click to view original) +const REGULATION_SOURCES: Record = { + // EU Verordnungen/Richtlinien (EUR-Lex) + GDPR: 'https://eur-lex.europa.eu/legal-content/DE/TXT/?uri=CELEX:32016R0679', + EPRIVACY: 'https://eur-lex.europa.eu/legal-content/DE/TXT/?uri=CELEX:32002L0058', + SCC: 'https://eur-lex.europa.eu/legal-content/DE/TXT/?uri=CELEX:32021D0914', + DPF: 'https://eur-lex.europa.eu/legal-content/DE/TXT/?uri=CELEX:32023D1795', + AIACT: 'https://eur-lex.europa.eu/legal-content/DE/TXT/?uri=CELEX:32024R1689', + CRA: 'https://eur-lex.europa.eu/legal-content/DE/TXT/?uri=CELEX:32024R2847', + NIS2: 'https://eur-lex.europa.eu/legal-content/DE/TXT/?uri=CELEX:32022L2555', + EUCSA: 'https://eur-lex.europa.eu/legal-content/DE/TXT/?uri=CELEX:32019R0881', + DATAACT: 'https://eur-lex.europa.eu/legal-content/DE/TXT/?uri=CELEX:32023R2854', + DGA: 'https://eur-lex.europa.eu/legal-content/DE/TXT/?uri=CELEX:32022R0868', + DSA: 'https://eur-lex.europa.eu/legal-content/DE/TXT/?uri=CELEX:32022R2065', + EAA: 'https://eur-lex.europa.eu/legal-content/DE/TXT/?uri=CELEX:32019L0882', + DSM: 'https://eur-lex.europa.eu/legal-content/DE/TXT/?uri=CELEX:32019L0790', + PLD: 'https://eur-lex.europa.eu/legal-content/DE/TXT/?uri=CELEX:32024L2853', + GPSR: 'https://eur-lex.europa.eu/legal-content/DE/TXT/?uri=CELEX:32023R0988', + DORA: 'https://eur-lex.europa.eu/legal-content/DE/TXT/?uri=CELEX:32022R2554', + PSD2: 'https://eur-lex.europa.eu/legal-content/DE/TXT/?uri=CELEX:32015L2366', + AMLR: 'https://eur-lex.europa.eu/legal-content/DE/TXT/?uri=CELEX:32024R1624', + MiCA: 'https://eur-lex.europa.eu/legal-content/DE/TXT/?uri=CELEX:32023R1114', + EHDS: 'https://eur-lex.europa.eu/legal-content/DE/TXT/?uri=CELEX:32025R0327', + SCC_FULL_TEXT: 'https://eur-lex.europa.eu/legal-content/DE/TXT/?uri=CELEX:32021D0914', + E_COMMERCE_RL: 'https://eur-lex.europa.eu/legal-content/DE/TXT/?uri=CELEX:32000L0031', + VERBRAUCHERRECHTE_RL: 'https://eur-lex.europa.eu/legal-content/DE/TXT/?uri=CELEX:32011L0083', + DIGITALE_INHALTE_RL: 'https://eur-lex.europa.eu/legal-content/DE/TXT/?uri=CELEX:32019L0770', + DMA: 'https://eur-lex.europa.eu/legal-content/DE/TXT/?uri=CELEX:32022R1925', + MACHINERY_REG: 'https://eur-lex.europa.eu/legal-content/DE/TXT/?uri=CELEX:32023R1230', + BLUE_GUIDE: 'https://eur-lex.europa.eu/legal-content/DE/TXT/?uri=CELEX:52022XC0629(04)', + EU_IFRS: 'https://eur-lex.europa.eu/legal-content/DE/TXT/?uri=CELEX:32023R1803', + // EDPB Guidelines + EDPB_GUIDELINES_2_2019: 'https://www.edpb.europa.eu/our-work-tools/our-documents/guidelines/guidelines-22019-processing-personal-data-under-article-61b_en', + EDPB_GUIDELINES_3_2019: 'https://www.edpb.europa.eu/our-work-tools/our-documents/guidelines/guidelines-32019-processing-personal-data-through-video_en', + EDPB_GUIDELINES_5_2020: 'https://www.edpb.europa.eu/our-work-tools/our-documents/guidelines/guidelines-052020-consent-under-regulation-2016679_en', + EDPB_GUIDELINES_7_2020: 'https://www.edpb.europa.eu/our-work-tools/our-documents/guidelines/guidelines-072020-concepts-controller-and-processor-gdpr_en', + EDPB_GUIDELINES_1_2022: 'https://www.edpb.europa.eu/our-work-tools/our-documents/guidelines/guidelines-042022-calculation-administrative-fines-under-gdpr_en', + // BSI Technische Richtlinien + 'BSI-TR-03161-1': 'https://www.bsi.bund.de/SharedDocs/Downloads/DE/BSI/Publikationen/TechnischeRichtlinien/TR03161/BSI-TR-03161-1.html', + 'BSI-TR-03161-2': 'https://www.bsi.bund.de/SharedDocs/Downloads/DE/BSI/Publikationen/TechnischeRichtlinien/TR03161/BSI-TR-03161-2.html', + 'BSI-TR-03161-3': 'https://www.bsi.bund.de/SharedDocs/Downloads/DE/BSI/Publikationen/TechnischeRichtlinien/TR03161/BSI-TR-03161-3.html', + // Nationale Datenschutzgesetze + AT_DSG: 'https://www.ris.bka.gv.at/GeltendeFassung.wxe?Abfrage=Bundesnormen&Gesetzesnummer=10001597', + BDSG_FULL: 'https://www.gesetze-im-internet.de/bdsg_2018/', + CH_DSG: 'https://www.fedlex.admin.ch/eli/cc/2022/491/de', + LI_DSG: 'https://www.gesetze.li/konso/2018.272', + BE_DPA_LAW: 'https://www.autoriteprotectiondonnees.be/citoyen/la-loi-du-30-juillet-2018', + NL_UAVG: 'https://wetten.overheid.nl/BWBR0040940/', + FR_CNIL_GUIDE: 'https://www.cnil.fr/fr/rgpd-par-ou-commencer', + ES_LOPDGDD: 'https://www.boe.es/buscar/act.php?id=BOE-A-2018-16673', + IT_CODICE_PRIVACY: 'https://www.garanteprivacy.it/home/docweb/-/docweb-display/docweb/9042678', + IE_DPA_2018: 'https://www.irishstatutebook.ie/eli/2018/act/7/enacted/en/html', + UK_DPA_2018: 'https://www.legislation.gov.uk/ukpga/2018/12/contents', + UK_GDPR: 'https://www.legislation.gov.uk/eur/2016/679/contents', + NO_PERSONOPPLYSNINGSLOVEN: 'https://lovdata.no/dokument/NL/lov/2018-06-15-38', + SE_DATASKYDDSLAG: 'https://www.riksdagen.se/sv/dokument-och-lagar/dokument/svensk-forfattningssamling/lag-2018218-med-kompletterande-bestammelser_sfs-2018-218/', + FI_TIETOSUOJALAKI: 'https://www.finlex.fi/fi/laki/ajantasa/2018/20181050', + PL_UODO: 'https://isap.sejm.gov.pl/isap.nsf/DocDetails.xsp?id=WDU20180001000', + CZ_ZOU: 'https://www.zakonyprolidi.cz/cs/2019-110', + HU_INFOTV: 'https://net.jogtar.hu/jogszabaly?docid=a1100112.tv', + LU_DPA_LAW: 'https://legilux.public.lu/eli/etat/leg/loi/2018/08/01/a686/jo', + DK_DATABESKYTTELSESLOVEN: 'https://www.retsinformation.dk/eli/lta/2018/502', + // Deutschland — Weitere Gesetze + TDDDG: 'https://www.gesetze-im-internet.de/tdddg/', + DE_DDG: 'https://www.gesetze-im-internet.de/ddg/', + DE_BGB_AGB: 'https://www.gesetze-im-internet.de/bgb/__305.html', + DE_EGBGB: 'https://www.gesetze-im-internet.de/bgbeg/art_246.html', + DE_UWG: 'https://www.gesetze-im-internet.de/uwg_2004/', + DE_HGB_RET: 'https://www.gesetze-im-internet.de/hgb/__257.html', + DE_AO_RET: 'https://www.gesetze-im-internet.de/ao_1977/__147.html', + DE_TKG: 'https://www.gesetze-im-internet.de/tkg_2021/', + DE_PANGV: 'https://www.gesetze-im-internet.de/pangv_2022/', + DE_DLINFOV: 'https://www.gesetze-im-internet.de/dlinfov/', + DE_BETRVG: 'https://www.gesetze-im-internet.de/betrvg/__87.html', + DE_GESCHGEHG: 'https://www.gesetze-im-internet.de/geschgehg/', + DE_BSIG: 'https://www.gesetze-im-internet.de/bsig_2009/', + DE_USTG_RET: 'https://www.gesetze-im-internet.de/ustg_1980/__14b.html', + // Oesterreich — Weitere Gesetze + AT_ECG: 'https://www.ris.bka.gv.at/GeltendeFassung.wxe?Abfrage=Bundesnormen&Gesetzesnummer=20001703', + AT_TKG: 'https://www.ris.bka.gv.at/GeltendeFassung.wxe?Abfrage=Bundesnormen&Gesetzesnummer=20007898', + AT_KSCHG: 'https://www.ris.bka.gv.at/GeltendeFassung.wxe?Abfrage=Bundesnormen&Gesetzesnummer=10002462', + AT_FAGG: 'https://www.ris.bka.gv.at/GeltendeFassung.wxe?Abfrage=Bundesnormen&Gesetzesnummer=20008783', + AT_UGB_RET: 'https://www.ris.bka.gv.at/GeltendeFassung.wxe?Abfrage=Bundesnormen&Gesetzesnummer=10001702', + AT_BAO_RET: 'https://www.ris.bka.gv.at/GeltendeFassung.wxe?Abfrage=Bundesnormen&Gesetzesnummer=10003940', + AT_MEDIENG: 'https://www.ris.bka.gv.at/GeltendeFassung.wxe?Abfrage=Bundesnormen&Gesetzesnummer=10000719', + AT_ABGB_AGB: 'https://www.ris.bka.gv.at/GeltendeFassung.wxe?Abfrage=Bundesnormen&Gesetzesnummer=10001622', + AT_UWG: 'https://www.ris.bka.gv.at/GeltendeFassung.wxe?Abfrage=Bundesnormen&Gesetzesnummer=10002665', + // Schweiz + CH_DSV: 'https://www.fedlex.admin.ch/eli/cc/2022/568/de', + CH_OR_AGB: 'https://www.fedlex.admin.ch/eli/cc/27/317_321_377/de', + CH_UWG: 'https://www.fedlex.admin.ch/eli/cc/1988/223_223_223/de', + CH_FMG: 'https://www.fedlex.admin.ch/eli/cc/1997/2187_2187_2187/de', + CH_GEBUV: 'https://www.fedlex.admin.ch/eli/cc/2002/249/de', + CH_ZERTES: 'https://www.fedlex.admin.ch/eli/cc/2016/752/de', + CH_ZGB_PERS: 'https://www.fedlex.admin.ch/eli/cc/24/233_245_233/de', + // Industrie-Compliance + ENISA_SECURE_BY_DESIGN: 'https://www.enisa.europa.eu/publications/secure-development-best-practices', + ENISA_SUPPLY_CHAIN: 'https://www.enisa.europa.eu/publications/threat-landscape-for-supply-chain-attacks', + NIST_SSDF: 'https://csrc.nist.gov/pubs/sp/800/218/final', + NIST_CSF_2: 'https://www.nist.gov/cyberframework', + OECD_AI_PRINCIPLES: 'https://legalinstruments.oecd.org/en/instruments/OECD-LEGAL-0449', + // IFRS / EFRAG + EU_IFRS_DE: 'https://eur-lex.europa.eu/legal-content/DE/TXT/?uri=CELEX:32023R1803', + EU_IFRS_EN: 'https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:32023R1803', + EFRAG_ENDORSEMENT: 'https://www.efrag.org/activities/endorsement-status-report', + // Full-text Datenschutzgesetz AT + AT_DSG_FULL: 'https://www.ris.bka.gv.at/GeltendeFassung.wxe?Abfrage=Bundesnormen&Gesetzesnummer=10001597', +} + // License info for each regulation const REGULATION_LICENSES: Record = { GDPR: { license: 'PUBLIC_DOMAIN', licenseNote: 'Amtliches Werk der EU — frei verwendbar' }, @@ -1110,6 +1319,18 @@ const REGULATION_LICENSES: Record FI_TIETOSUOJALAKI: { collection: 'bp_compliance_gesetze', chunks: 2 }, DK_DATABESKYTTELSESLOVEN: { collection: 'bp_compliance_gesetze', chunks: 2 }, LU_DPA_LAW: { collection: 'bp_compliance_gesetze', chunks: 2 }, + // === Industrie-Compliance (2026-02-28) === + // EU CE-Regulierungen (bp_compliance_ce) + MACHINERY_REG: { collection: 'bp_compliance_ce', chunks: 0 }, + BLUE_GUIDE: { collection: 'bp_compliance_ce', chunks: 0 }, + // Frameworks/Guidance (bp_compliance_datenschutz) + ENISA_SECURE_BY_DESIGN: { collection: 'bp_compliance_datenschutz', chunks: 0 }, + ENISA_SUPPLY_CHAIN: { collection: 'bp_compliance_datenschutz', chunks: 0 }, + NIST_SSDF: { collection: 'bp_compliance_datenschutz', chunks: 0 }, + NIST_CSF_2: { collection: 'bp_compliance_datenschutz', chunks: 0 }, + OECD_AI_PRINCIPLES: { collection: 'bp_compliance_datenschutz', chunks: 0 }, + // EU-IFRS / EFRAG (2026-02-28) + EU_IFRS_DE: { collection: 'bp_compliance_ce', chunks: 0 }, + EU_IFRS_EN: { collection: 'bp_compliance_ce', chunks: 0 }, + EFRAG_ENDORSEMENT: { collection: 'bp_compliance_datenschutz', chunks: 0 }, } // Helper: Check if regulation is in RAG @@ -1257,6 +1492,9 @@ const isInRag = (code: string): boolean => code in REGULATIONS_IN_RAG const getKnownChunks = (code: string): number => REGULATIONS_IN_RAG[code]?.chunks || 0 // Known collection totals (updated: 2026-02-28) +// Note: bp_compliance_ce and bp_compliance_datenschutz will increase after +// industry compliance ingestion (Machinery Reg, Blue Guide, ENISA, NIST, OECD). +// Update chunk counts after running ingest-industry-compliance.sh. const COLLECTION_TOTALS = { bp_compliance_gesetze: 58304, bp_compliance_ce: 18183, @@ -2229,7 +2467,14 @@ export default function RAGPage() { {reg.name} - {chunks.toLocaleString()} + + 0 && chunks < 10 && reg.expected >= 10 ? 'text-amber-600' : ''}> + {chunks.toLocaleString()} + {chunks > 0 && chunks < 10 && reg.expected >= 10 && ( + + )} + + {reg.expected} {statusIcon} @@ -2275,16 +2520,29 @@ export default function RAGPage() { )} - +
+ {REGULATION_SOURCES[reg.code] && ( + e.stopPropagation()} + className="text-blue-600 hover:text-blue-700 font-medium" + > + Originalquelle → + + )} + +