diff --git a/admin-compliance/app/sdk/cra/[projectId]/documents/page.tsx b/admin-compliance/app/sdk/cra/[projectId]/documents/page.tsx index 774710bd..67bfb249 100644 --- a/admin-compliance/app/sdk/cra/[projectId]/documents/page.tsx +++ b/admin-compliance/app/sdk/cra/[projectId]/documents/page.tsx @@ -192,7 +192,7 @@ export default function DocumentsPage({ setManufacturer(e.target.value)} placeholder="Acme GmbH, Musterstr. 1, 80331 Muenchen" className="w-full px-3 py-2 border rounded text-sm" />
- + setNotifiedBody(e.target.value)} placeholder="TUEV Nord (NB-0044)" className="w-full px-3 py-2 border rounded text-sm" />
diff --git a/admin-compliance/app/sdk/cra/[projectId]/page.tsx b/admin-compliance/app/sdk/cra/[projectId]/page.tsx index e9b9bbf5..7d888a32 100644 --- a/admin-compliance/app/sdk/cra/[projectId]/page.tsx +++ b/admin-compliance/app/sdk/cra/[projectId]/page.tsx @@ -39,10 +39,10 @@ interface BacklogData { } const PATH_LABEL: Record = { - self_assessment: 'Modul A — Self-Assessment', - harmonized_standard: 'Modul B — Harmonized Standard', - eucc: 'Modul H — EUCC', - notified_body: 'Modul C — Notified Body', + self_assessment: 'Modul A — Selbstbewertung', + harmonized_standard: 'Harmonisierte Norm (noch nicht verfügbar)', + eucc: 'EUCC — EU-Cybersicherheitszertifikat', + notified_body: 'Modul B+C — Benannte Stelle', } export default function CRAProjectDashboard({ diff --git a/admin-compliance/app/sdk/cra/[projectId]/path/page.tsx b/admin-compliance/app/sdk/cra/[projectId]/path/page.tsx index 6d72ad98..82302965 100644 --- a/admin-compliance/app/sdk/cra/[projectId]/path/page.tsx +++ b/admin-compliance/app/sdk/cra/[projectId]/path/page.tsx @@ -20,55 +20,58 @@ interface PathOption { title: string short: string details: string[] + available?: boolean // false = rechtlich vorgesehen, aber noch nicht nutzbar + note?: string } const PATHS: PathOption[] = [ { id: 'self_assessment', modul: 'Modul A', - title: 'Self-Assessment', - short: 'Konformitaetsbewertung durch interne Pruefung', + title: 'Selbstbewertung (interne Kontrolle)', + short: 'Hersteller erklaert die Konformitaet selbst', details: [ - 'Hersteller fuehrt Konformitaetsbewertung selbst durch', + 'Hersteller fuehrt die Konformitaetsbewertung selbst durch', 'Geringster externer Aufwand, schnelle Umsetzung', - 'Default fuer Standard-Produkte', - 'Technische Dokumentation + DoC bleibt Pflicht', + 'Nur fuer Standard- und (mit Norm) wichtige Klasse-I-Produkte', + 'Technische Dokumentation + Konformitaetserklaerung bleiben Pflicht', ], }, { id: 'harmonized_standard', - modul: 'Modul B', - title: 'Harmonized Standard', - short: 'Konformitaetsvermutung durch harmonisierte Norm', + modul: 'Konformitaetsvermutung', + title: 'Harmonisierte Normen', + short: 'Vermutungswirkung durch eine harmonisierte EU-Norm', + available: false, + note: 'Fuer den CRA noch keine harmonisierte Norm veroeffentlicht — Entwuerfe erwartet ~Ende 2026, Listung im Amtsblatt voraussichtlich 2027.', details: [ - 'Anwendung einer harmonisierten EU-Norm (z.B. DIN EN 40000-1-2 Entwurf)', - 'Konformitaetsvermutung gemaess EU-Recht', - 'Geringeres Audit-Risiko', - 'Empfohlen bei verfuegbarer harmonisierter Norm', + 'Kein eigenes Modul, sondern Grundlage der Konformitaetsvermutung', + 'Wer danach baut, gilt als CRA-konform und darf (Standard/Klasse I) selbst bewerten', + 'Bis dahin ggf. ueber gemeinsame Spezifikationen der Kommission (Art. 27)', ], }, { id: 'eucc', - modul: 'Modul H', - title: 'EUCC Zertifizierung', - short: 'European Cybersecurity Certification Scheme', + modul: 'EUCC', + title: 'EU-Cybersicherheitszertifikat', + short: 'Zertifizierung nach EUCC-Schema (Common-Criteria-basiert)', details: [ - 'ENISA-EUCC-Zertifizierung (Common Criteria-basiert)', - 'Hoechste Anerkennung in EU + Drittstaaten', - 'Hoher Aufwand, ITSEF-Pruefung erforderlich', - 'Pflicht bei einigen Important Class II-Produkten', + 'EUCC-Zertifikat (in der Regel Stufe „substanziell")', + 'Eigener Weg unter dem Cybersecurity Act, keine benannte Stelle noetig', + 'Hohe Anerkennung in EU + Drittstaaten, ITSEF-Pruefung', + 'Regulaerer Weg fuer wichtige Klasse II und kritische Produkte', ], }, { id: 'notified_body', - modul: 'Modul C', - title: 'Notified Body Assessment', - short: 'Drittprueforganisation pruefn die Konformitaet', + modul: 'Modul B+C', + title: 'Benannte Stelle (Baumusterpruefung)', + short: 'Dritte Stelle prueft (EU-Baumusterpruefung + Produktionskontrolle)', details: [ - 'Externe Bewertung durch akkreditierte Stelle', - 'PFLICHT fuer Critical-Produkte (Annex IV)', - 'Hoechste Auditierbarkeit + Vertrauen', - 'Laufzeit + Kosten am hoechsten', + 'EU-Baumusterpruefung (Modul B) durch akkreditierte benannte Stelle', + 'gefolgt von Produktionskontrolle (Modul C); alternativ volle QS (Modul H)', + 'Pflichtweg fuer wichtige Klasse II und kritische Produkte (Annex IV)', + 'Hoechste Auditierbarkeit, hoechste Laufzeit + Kosten', ], }, ] @@ -76,14 +79,15 @@ const PATHS: PathOption[] = [ const ALLOWED: Record = { STANDARD: ['self_assessment', 'harmonized_standard', 'eucc', 'notified_body'], IMPORTANT_I: ['self_assessment', 'harmonized_standard', 'eucc', 'notified_body'], - IMPORTANT_II: ['harmonized_standard', 'eucc', 'notified_body'], - CRITICAL: ['notified_body'], + // Klasse II darf nicht selbst bewerten; harmonisierte Norm allein genuegt nicht. + IMPORTANT_II: ['eucc', 'notified_body'], + CRITICAL: ['eucc', 'notified_body'], } const DEFAULT_FOR: Record = { STANDARD: 'self_assessment', IMPORTANT_I: 'self_assessment', - IMPORTANT_II: 'harmonized_standard', + IMPORTANT_II: 'notified_body', CRITICAL: 'notified_body', } @@ -185,31 +189,37 @@ export default function PathSelectPage({
{PATHS.map(path => { const allowed = allowedPaths.includes(path.id) + const available = path.available !== false + const selectable = allowed && available const isSelected = selected === path.id return (