'use client' import React, { useState, useEffect } from 'react' import { useSDK, Risk, RiskLikelihood, RiskImpact, RiskSeverity, RiskStatus, RiskMitigation, calculateRiskScore, getRiskSeverityFromScore } from '@/lib/sdk' import { StepHeader, STEP_EXPLANATIONS } from '@/components/sdk/StepHeader' // ============================================================================= // RISK MATRIX // ============================================================================= function RiskMatrix({ risks, onCellClick }: { risks: Risk[]; onCellClick: (l: number, i: number) => void }) { const matrix: Record = {} risks.forEach(risk => { const key = `${risk.likelihood}-${risk.impact}` if (!matrix[key]) matrix[key] = [] matrix[key].push(risk) }) const getCellColor = (likelihood: number, impact: number): string => { const score = likelihood * impact if (score >= 20) return 'bg-red-500' if (score >= 15) return 'bg-red-400' if (score >= 12) return 'bg-orange-400' if (score >= 8) return 'bg-yellow-400' if (score >= 4) return 'bg-yellow-300' return 'bg-green-400' } return (

5x5 Risikomatrix

{/* Y-Axis Label */}
Wahrscheinlichkeit
{/* Matrix Grid */}
{[5, 4, 3, 2, 1].map(likelihood => ( {[1, 2, 3, 4, 5].map(impact => { const key = `${likelihood}-${impact}` const cellRisks = matrix[key] || [] return ( ) })} ))}
{/* X-Axis Label */}
Auswirkung
{/* Legend */}
Niedrig
Mittel
Hoch
Kritisch
) } // ============================================================================= // RISK FORM // ============================================================================= interface RiskFormData { title: string description: string category: string likelihood: RiskLikelihood impact: RiskImpact } function RiskForm({ onSubmit, onCancel, initialData, }: { onSubmit: (data: RiskFormData) => void onCancel: () => void initialData?: Partial }) { const [formData, setFormData] = useState({ title: initialData?.title || '', description: initialData?.description || '', category: initialData?.category || 'technical', likelihood: initialData?.likelihood || 3, impact: initialData?.impact || 3, }) const score = calculateRiskScore(formData.likelihood, formData.impact) const severity = getRiskSeverityFromScore(score) return (

{initialData ? 'Risiko bearbeiten' : 'Neues Risiko'}

setFormData({ ...formData, title: e.target.value })} placeholder="z.B. Datenverlust durch Systemausfall" className="w-full px-4 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-purple-500 focus:border-transparent" />