'use client' import React, { useState, useCallback } from 'react' import { useRouter } from 'next/navigation' import { useSDK } from '@/lib/sdk' import { StepHeader, STEP_EXPLANATIONS } from '@/components/sdk/StepHeader' import { DocumentUploadSection, type UploadedDocument } from '@/components/sdk' // ============================================================================= // TYPES // ============================================================================= interface DSFA { id: string title: string description: string status: 'draft' | 'in-review' | 'approved' | 'needs-update' createdAt: Date updatedAt: Date approvedBy: string | null riskLevel: 'low' | 'medium' | 'high' | 'critical' processingActivity: string dataCategories: string[] recipients: string[] measures: string[] } // ============================================================================= // MOCK DATA // ============================================================================= const mockDSFAs: DSFA[] = [ { id: 'dsfa-1', title: 'DSFA - Bewerber-Management-System', description: 'Datenschutz-Folgenabschaetzung fuer das KI-gestuetzte Bewerber-Screening', status: 'in-review', createdAt: new Date('2024-01-10'), updatedAt: new Date('2024-01-20'), approvedBy: null, riskLevel: 'high', processingActivity: 'Automatisierte Bewertung von Bewerbungsunterlagen', dataCategories: ['Kontaktdaten', 'Beruflicher Werdegang', 'Qualifikationen'], recipients: ['HR-Abteilung', 'Fachabteilungen'], measures: ['Verschluesselung', 'Zugriffskontrolle', 'Menschliche Pruefung'], }, { id: 'dsfa-2', title: 'DSFA - Video-Ueberwachung Buero', description: 'Datenschutz-Folgenabschaetzung fuer die Videoueberwachung im Buerogebaeude', status: 'approved', createdAt: new Date('2023-11-01'), updatedAt: new Date('2023-12-15'), approvedBy: 'DSB Mueller', riskLevel: 'medium', processingActivity: 'Videoueberwachung zu Sicherheitszwecken', dataCategories: ['Bilddaten', 'Bewegungsdaten'], recipients: ['Sicherheitsdienst'], measures: ['Loeschfristen', 'Zugriffsbeschraenkung', 'Hinweisschilder'], }, { id: 'dsfa-3', title: 'DSFA - Kundenanalyse', description: 'Datenschutz-Folgenabschaetzung fuer Big-Data-Kundenanalysen', status: 'draft', createdAt: new Date('2024-01-22'), updatedAt: new Date('2024-01-22'), approvedBy: null, riskLevel: 'high', processingActivity: 'Analyse von Kundenverhalten fuer Marketing', dataCategories: ['Kaufhistorie', 'Nutzungsverhalten', 'Praeferenzen'], recipients: ['Marketing', 'Vertrieb'], measures: [], }, ] // ============================================================================= // COMPONENTS // ============================================================================= function DSFACard({ dsfa }: { dsfa: DSFA }) { const statusColors = { draft: 'bg-gray-100 text-gray-600 border-gray-200', 'in-review': 'bg-yellow-100 text-yellow-700 border-yellow-200', approved: 'bg-green-100 text-green-700 border-green-200', 'needs-update': 'bg-orange-100 text-orange-700 border-orange-200', } const statusLabels = { draft: 'Entwurf', 'in-review': 'In Pruefung', approved: 'Genehmigt', 'needs-update': 'Aktualisierung erforderlich', } const riskColors = { low: 'bg-green-100 text-green-700', medium: 'bg-yellow-100 text-yellow-700', high: 'bg-orange-100 text-orange-700', critical: 'bg-red-100 text-red-700', } return (
{statusLabels[dsfa.status]} Risiko: {dsfa.riskLevel === 'low' ? 'Niedrig' : dsfa.riskLevel === 'medium' ? 'Mittel' : dsfa.riskLevel === 'high' ? 'Hoch' : 'Kritisch'}

{dsfa.title}

{dsfa.description}

Verarbeitungstaetigkeit: {dsfa.processingActivity}

{dsfa.dataCategories.map(cat => ( {cat} ))}
{dsfa.measures.length > 0 && (
Massnahmen:
{dsfa.measures.map(m => ( {m} ))}
)}
Erstellt: {dsfa.createdAt.toLocaleDateString('de-DE')} {dsfa.approvedBy && ( Genehmigt von: {dsfa.approvedBy} )}
) } function GeneratorWizard({ onClose }: { onClose: () => void }) { const [step, setStep] = useState(1) return (

Neue DSFA erstellen

{/* Progress Steps */}
{[1, 2, 3, 4].map(s => (
{s < step ? ( ) : s}
{s < 4 &&
} ))}
{/* Step Content */}
{step === 1 && (