'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 TOM { id: string title: string description: string category: 'confidentiality' | 'integrity' | 'availability' | 'resilience' type: 'technical' | 'organizational' status: 'implemented' | 'partial' | 'planned' | 'not-implemented' article32Reference: string lastReview: Date nextReview: Date responsible: string documentation: string | null } // ============================================================================= // MOCK DATA // ============================================================================= const mockTOMs: TOM[] = [ { id: 'tom-1', title: 'Zutrittskontrolle', description: 'Physische Zugangskontrolle zu Serverraeumen und Rechenzentren', category: 'confidentiality', type: 'technical', status: 'implemented', article32Reference: 'Art. 32 Abs. 1 lit. b', lastReview: new Date('2024-01-01'), nextReview: new Date('2024-07-01'), responsible: 'Facility Management', documentation: 'TOM-001-Zutrittskontrolle.pdf', }, { id: 'tom-2', title: 'Zugangskontrolle', description: 'Authentifizierung und Autorisierung fuer IT-Systeme', category: 'confidentiality', type: 'technical', status: 'implemented', article32Reference: 'Art. 32 Abs. 1 lit. b', lastReview: new Date('2024-01-15'), nextReview: new Date('2024-07-15'), responsible: 'IT Security', documentation: 'TOM-002-Zugangskontrolle.pdf', }, { id: 'tom-3', title: 'Verschluesselung', description: 'Verschluesselung von Daten bei Speicherung und Uebertragung', category: 'confidentiality', type: 'technical', status: 'implemented', article32Reference: 'Art. 32 Abs. 1 lit. a', lastReview: new Date('2024-01-10'), nextReview: new Date('2024-07-10'), responsible: 'IT Security', documentation: 'TOM-003-Verschluesselung.pdf', }, { id: 'tom-4', title: 'Datensicherung', description: 'Regelmaessige Backups und Wiederherstellungstests', category: 'availability', type: 'technical', status: 'implemented', article32Reference: 'Art. 32 Abs. 1 lit. c', lastReview: new Date('2023-12-01'), nextReview: new Date('2024-06-01'), responsible: 'IT Operations', documentation: 'TOM-004-Backup.pdf', }, { id: 'tom-5', title: 'Datenschutzschulung', description: 'Regelmaessige Schulungen fuer alle Mitarbeiter', category: 'confidentiality', type: 'organizational', status: 'partial', article32Reference: 'Art. 32 Abs. 1 lit. b', lastReview: new Date('2023-11-01'), nextReview: new Date('2024-02-01'), responsible: 'HR / Datenschutz', documentation: null, }, { id: 'tom-6', title: 'Incident Response Plan', description: 'Prozess zur Behandlung von Sicherheitsvorfaellen', category: 'resilience', type: 'organizational', status: 'planned', article32Reference: 'Art. 32 Abs. 1 lit. c', lastReview: new Date('2024-01-20'), nextReview: new Date('2024-04-20'), responsible: 'CISO', documentation: null, }, { id: 'tom-7', title: 'Protokollierung', description: 'Logging aller sicherheitsrelevanten Ereignisse', category: 'integrity', type: 'technical', status: 'implemented', article32Reference: 'Art. 32 Abs. 1 lit. b', lastReview: new Date('2024-01-05'), nextReview: new Date('2024-07-05'), responsible: 'IT Security', documentation: 'TOM-007-Logging.pdf', }, ] // ============================================================================= // COMPONENTS // ============================================================================= function TOMCard({ tom }: { tom: TOM }) { const categoryColors = { confidentiality: 'bg-blue-100 text-blue-700', integrity: 'bg-green-100 text-green-700', availability: 'bg-purple-100 text-purple-700', resilience: 'bg-orange-100 text-orange-700', } const categoryLabels = { confidentiality: 'Vertraulichkeit', integrity: 'Integritaet', availability: 'Verfuegbarkeit', resilience: 'Belastbarkeit', } const statusColors = { implemented: 'bg-green-100 text-green-700 border-green-200', partial: 'bg-yellow-100 text-yellow-700 border-yellow-200', planned: 'bg-blue-100 text-blue-700 border-blue-200', 'not-implemented': 'bg-red-100 text-red-700 border-red-200', } const statusLabels = { implemented: 'Implementiert', partial: 'Teilweise', planned: 'Geplant', 'not-implemented': 'Nicht implementiert', } const isReviewDue = tom.nextReview <= new Date() return (
{tom.description}
Rechtsgrundlage: {tom.article32Reference}
Passen Sie den Filter an oder fuegen Sie neue TOMs hinzu.