'use client' import React, { useState, useEffect } from 'react' import { useParams } from 'next/navigation' interface VerificationItem { id: string title: string description: string method: string status: 'pending' | 'in_progress' | 'completed' | 'failed' result: string | null linked_hazard_id: string | null linked_hazard_name: string | null linked_mitigation_id: string | null linked_mitigation_name: string | null completed_at: string | null completed_by: string | null created_at: string } interface SuggestedEvidence { id: string name: string description: string method: string tags?: string[] } const VERIFICATION_METHODS = [ { value: 'design_review', label: 'Design-Review', description: 'Systematische Pruefung der Konstruktionsunterlagen' }, { value: 'calculation', label: 'Berechnung', description: 'Rechnerischer Nachweis (FEM, Festigkeit, Thermik)' }, { value: 'test_report', label: 'Pruefbericht', description: 'Dokumentierter Test mit Messprotokoll' }, { value: 'validation', label: 'Validierung', description: 'Nachweis der Eignung unter realen Betriebsbedingungen' }, { value: 'electrical_test', label: 'Elektrische Pruefung', description: 'Isolationsmessung, Schutzleiter, Spannungsfestigkeit' }, { value: 'software_test', label: 'Software-Test', description: 'Unit-, Integrations- oder Systemtest der Steuerungssoftware' }, { value: 'penetration_test', label: 'Penetrationstest', description: 'Security-Test der Netzwerk- und Steuerungskomponenten' }, { value: 'acceptance_protocol', label: 'Abnahmeprotokoll', description: 'Formelle Abnahme mit Checkliste und Unterschrift' }, { value: 'user_test', label: 'Anwendertest', description: 'Pruefung durch Bediener unter realen Einsatzbedingungen' }, { value: 'documentation_release', label: 'Dokumentenfreigabe', description: 'Formelle Freigabe der technischen Dokumentation' }, ] const STATUS_CONFIG: Record = { pending: { label: 'Ausstehend', color: 'bg-gray-100 text-gray-700' }, in_progress: { label: 'In Bearbeitung', color: 'bg-blue-100 text-blue-700' }, completed: { label: 'Abgeschlossen', color: 'bg-green-100 text-green-700' }, failed: { label: 'Fehlgeschlagen', color: 'bg-red-100 text-red-700' }, } function StatusBadge({ status }: { status: string }) { const config = STATUS_CONFIG[status] || STATUS_CONFIG.pending return ( {config.label} ) } interface VerificationFormData { title: string description: string method: string linked_hazard_id: string linked_mitigation_id: string } function VerificationForm({ onSubmit, onCancel, hazards, mitigations, }: { onSubmit: (data: VerificationFormData) => void onCancel: () => void hazards: { id: string; name: string }[] mitigations: { id: string; title: string }[] }) { const [formData, setFormData] = useState({ title: '', description: '', method: 'test', linked_hazard_id: '', linked_mitigation_id: '', }) return (

Neues Verifikationselement

setFormData({ ...formData, title: e.target.value })} placeholder="z.B. Funktionstest Lichtvorhang" className="w-full px-4 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-purple-500 focus:border-transparent dark:bg-gray-700 dark:border-gray-600 dark:text-white" />