'use client' import { useState } from 'react' interface GuidelineItem { req_id: string title: string category: string annex_anchor: string severity: string effort_days?: number measures: { id: string; name: string }[] } interface ReadinessResult { in_scope: boolean classification: string rationale: string[] conformity_path_hint: string guideline: { code: GuidelineItem[]; process: GuidelineItem[]; document: GuidelineItem[] } counts: { code: number; process: number; document: number } total_effort_days: number deadlines: { date: string; label: string }[] } const CLASS_LABEL: Record = { CRITICAL: 'Kritisch', IMPORTANT_II: 'Wichtig (Klasse II)', IMPORTANT_I: 'Wichtig (Klasse I)', STANDARD: 'Standard', NOT_IN_SCOPE: 'Nicht im CRA-Anwendungsbereich', } const BUCKETS: { key: 'code' | 'process' | 'document'; label: string; hint: string }[] = [ { key: 'code', label: 'Code / Technik', hint: 'im Produkt umzusetzen' }, { key: 'process', label: 'Prozesse', hint: 'organisatorisch zu etablieren' }, { key: 'document', label: 'Dokumentation', hint: 'nachzuweisen / beizulegen' }, ] export function ReadinessCheck({ onCreateProject }: { onCreateProject?: () => void }) { const [intendedUse, setIntendedUse] = useState('') const [flags, setFlags] = useState>({}) const [result, setResult] = useState(null) const [loading, setLoading] = useState(false) const toggle = (k: string) => setFlags((f) => ({ ...f, [k]: !f[k] })) const run = async () => { setLoading(true) try { const res = await fetch('/api/v1/cra/readiness', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ intended_use: intendedUse, ...flags }), }) setResult(res.ok ? await res.json() : null) } finally { setLoading(false) } } const QUESTIONS: { k: string; label: string }[] = [ { k: 'connected_to_internet', label: 'Hängt das Produkt am Internet (oder soll es)?' }, { k: 'user_parameter_app', label: 'Gibt es eine App, mit der Nutzer Parameter einstellen?' }, { k: 'remote_maintenance', label: 'Bietet ihr Fernwartung an?' }, { k: 'has_software_updates', label: 'Hat es Software-/Firmware-Updates?' }, { k: 'has_firmware', label: 'Enthält es Firmware (Embedded/IoT)?' }, { k: 'processes_personal_data', label: 'Verarbeitet es personenbezogene Daten?' }, { k: 'is_critical_infra_supplier', label: 'Wird es in kritischer Infrastruktur eingesetzt?' }, ] return (

CRA-Readiness-Check

Was kommt mit dem Cyber Resilience Act auf Ihr Produkt zu? Ein paar Fragen — Sie bekommen sofort eine auf Ihren Scope zugeschnittene Übersicht (Code, Prozesse, Dokumentation). Wir analysieren — und setzen es mit Ihnen um.