'use client' import React, { useState } from 'react' import { useSDK } from '@/lib/sdk' import { StepHeader, STEP_EXPLANATIONS } from '@/components/sdk/StepHeader' // ============================================================================= // TYPES // ============================================================================= interface AISystem { id: string name: string description: string classification: 'prohibited' | 'high-risk' | 'limited-risk' | 'minimal-risk' | 'unclassified' purpose: string sector: string status: 'draft' | 'classified' | 'compliant' | 'non-compliant' obligations: string[] assessmentDate: Date | null } // ============================================================================= // MOCK DATA // ============================================================================= const mockAISystems: AISystem[] = [ { id: 'ai-1', name: 'Kundenservice Chatbot', description: 'KI-gestuetzter Chatbot fuer Kundenanfragen', classification: 'limited-risk', purpose: 'Automatisierte Beantwortung von Kundenanfragen', sector: 'Kundenservice', status: 'classified', obligations: ['Transparenzpflicht', 'Kennzeichnung als KI-System'], assessmentDate: new Date('2024-01-15'), }, { id: 'ai-2', name: 'Bewerber-Screening', description: 'KI-System zur Vorauswahl von Bewerbungen', classification: 'high-risk', purpose: 'Automatisierte Bewertung von Bewerbungsunterlagen', sector: 'Personal', status: 'non-compliant', obligations: ['Risikomanagementsystem', 'Datenlenkung', 'Technische Dokumentation', 'Menschliche Aufsicht', 'Transparenz'], assessmentDate: new Date('2024-01-10'), }, { id: 'ai-3', name: 'Empfehlungsalgorithmus', description: 'Personalisierte Produktempfehlungen', classification: 'minimal-risk', purpose: 'Verbesserung der Kundenerfahrung durch personalisierte Empfehlungen', sector: 'E-Commerce', status: 'compliant', obligations: [], assessmentDate: new Date('2024-01-05'), }, { id: 'ai-4', name: 'Neue KI-Anwendung', description: 'Noch nicht klassifiziertes System', classification: 'unclassified', purpose: 'In Evaluierung', sector: 'Unbestimmt', status: 'draft', obligations: [], assessmentDate: null, }, ] // ============================================================================= // COMPONENTS // ============================================================================= function RiskPyramid({ systems }: { systems: AISystem[] }) { const counts = { prohibited: systems.filter(s => s.classification === 'prohibited').length, 'high-risk': systems.filter(s => s.classification === 'high-risk').length, 'limited-risk': systems.filter(s => s.classification === 'limited-risk').length, 'minimal-risk': systems.filter(s => s.classification === 'minimal-risk').length, } return (

AI Act Risikopyramide

Verboten ({counts.prohibited})
Hochrisiko ({counts['high-risk']})
Begrenztes Risiko ({counts['limited-risk']})
Minimales Risiko ({counts['minimal-risk']})
{systems.filter(s => s.classification === 'unclassified').length} System(e) noch nicht klassifiziert
) } function AISystemCard({ system }: { system: AISystem }) { const classificationColors = { prohibited: 'bg-red-100 text-red-700 border-red-200', 'high-risk': 'bg-orange-100 text-orange-700 border-orange-200', 'limited-risk': 'bg-yellow-100 text-yellow-700 border-yellow-200', 'minimal-risk': 'bg-green-100 text-green-700 border-green-200', unclassified: 'bg-gray-100 text-gray-500 border-gray-200', } const classificationLabels = { prohibited: 'Verboten', 'high-risk': 'Hochrisiko', 'limited-risk': 'Begrenztes Risiko', 'minimal-risk': 'Minimales Risiko', unclassified: 'Nicht klassifiziert', } const statusColors = { draft: 'bg-gray-100 text-gray-500', classified: 'bg-blue-100 text-blue-700', compliant: 'bg-green-100 text-green-700', 'non-compliant': 'bg-red-100 text-red-700', } const statusLabels = { draft: 'Entwurf', classified: 'Klassifiziert', compliant: 'Konform', 'non-compliant': 'Nicht konform', } return (
{classificationLabels[system.classification]} {statusLabels[system.status]}

{system.name}

{system.description}

Sektor: {system.sector} {system.assessmentDate && ( Klassifiziert: {system.assessmentDate.toLocaleDateString('de-DE')} )}
{system.obligations.length > 0 && (

Pflichten nach AI Act:

{system.obligations.map(obl => ( {obl} ))}
)}
) } // ============================================================================= // MAIN PAGE // ============================================================================= export default function AIActPage() { const { state } = useSDK() const [systems] = useState(mockAISystems) const [filter, setFilter] = useState('all') const filteredSystems = filter === 'all' ? systems : systems.filter(s => s.classification === filter || s.status === filter) const highRiskCount = systems.filter(s => s.classification === 'high-risk').length const compliantCount = systems.filter(s => s.status === 'compliant').length const unclassifiedCount = systems.filter(s => s.classification === 'unclassified').length const stepInfo = STEP_EXPLANATIONS['ai-act'] return (
{/* Step Header */} {/* Stats */}
KI-Systeme gesamt
{systems.length}
Hochrisiko
{highRiskCount}
Konform
{compliantCount}
Nicht klassifiziert
{unclassifiedCount}
{/* Risk Pyramid */} {/* Filter */}
Filter: {['all', 'high-risk', 'limited-risk', 'minimal-risk', 'unclassified', 'compliant', 'non-compliant'].map(f => ( ))}
{/* AI Systems List */}
{filteredSystems.map(system => ( ))}
{filteredSystems.length === 0 && (

Keine KI-Systeme gefunden

Passen Sie den Filter an oder registrieren Sie ein neues KI-System.

)}
) }