'use client' import React, { useState } from 'react' import type { Exercise } from './types' const SCENARIO_PRESETS = [ { label: 'Ransomware-Angriff', scenario: 'Ein Ransomware-Angriff verschluesselt saemtliche Produktivdaten. Backups sind vorhanden, aber der letzte Restore-Test liegt 6 Monate zurueck.' }, { label: 'Datenabfluss durch Mitarbeiter', scenario: 'Ein ausscheidender Mitarbeiter hat vor seinem letzten Arbeitstag umfangreiche Kundendaten auf einen privaten USB-Stick kopiert.' }, { label: 'Cloud-Provider-Ausfall', scenario: 'Ihr primaerer Cloud-Provider meldet einen groesseren Ausfall. Die Wiederherstellungszeit ist unbekannt. Betroffene koennen keine DSGVO-Rechte ausueben.' }, { label: 'Phishing-Angriff', scenario: 'Mehrere Mitarbeiter haben auf einen Phishing-Link geklickt. Es besteht Verdacht, dass Anmeldedaten kompromittiert wurden und auf Personaldaten zugegriffen wurde.' }, ] export function ExercisesTab({ exercises, setExercises, showAdd, setShowAdd, }: { exercises: Exercise[] setExercises: React.Dispatch> showAdd: boolean setShowAdd: (v: boolean) => void }) { const [newExercise, setNewExercise] = useState>({ title: '', type: 'tabletop', scenario: '', scheduledDate: '', participants: [], lessonsLearned: '', }) function addExercise() { if (!newExercise.title || !newExercise.scheduledDate) return const exercise: Exercise = { id: `EX-${Date.now()}`, title: newExercise.title || '', type: (newExercise.type as Exercise['type']) || 'tabletop', scenario: newExercise.scenario || '', scheduledDate: newExercise.scheduledDate || '', participants: newExercise.participants || [], lessonsLearned: '', } setExercises(prev => [...prev, exercise]) setShowAdd(false) setNewExercise({ title: '', type: 'tabletop', scenario: '', scheduledDate: '', participants: [], lessonsLearned: '' }) } function completeExercise(id: string, lessonsLearned: string) { setExercises(prev => prev.map(ex => ex.id === id ? { ...ex, completedDate: new Date().toISOString(), lessonsLearned } : ex )) } return (

Notfalluebungen & Tests

Planen und dokumentieren Sie regelmaessige Notfalluebungen.

{/* Add Exercise Form */} {showAdd && (

Neue Uebung planen

setNewExercise(prev => ({ ...prev, title: e.target.value }))} placeholder="z.B. Tabletop: Ransomware-Angriff" className="w-full border rounded px-3 py-2 text-sm" />
setNewExercise(prev => ({ ...prev, scheduledDate: e.target.value }))} className="w-full border rounded px-3 py-2 text-sm" />
{SCENARIO_PRESETS.map(preset => ( ))}