'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 RetentionPolicy { id: string dataCategory: string description: string retentionPeriod: string legalBasis: string startEvent: string deletionMethod: string status: 'active' | 'review-needed' | 'expired' lastReview: Date nextReview: Date recordCount: number | null } // ============================================================================= // MOCK DATA // ============================================================================= const mockPolicies: RetentionPolicy[] = [ { id: 'ret-1', dataCategory: 'Personalakten', description: 'Beschaeftigtendaten und Gehaltsabrechnungen', retentionPeriod: '10 Jahre', legalBasis: 'Steuerrecht, Sozialversicherungsrecht', startEvent: 'Ende des Beschaeftigungsverhaeltnisses', deletionMethod: 'Automatische Loeschung nach Ablauf', status: 'active', lastReview: new Date('2024-01-01'), nextReview: new Date('2025-01-01'), recordCount: 245, }, { id: 'ret-2', dataCategory: 'Buchhaltungsbelege', description: 'Rechnungen, Kontoauszuege, Buchungsbelege', retentionPeriod: '10 Jahre', legalBasis: 'HGB, AO', startEvent: 'Ende des Kalenderjahres', deletionMethod: 'Manuelle Pruefung und Vernichtung', status: 'active', lastReview: new Date('2024-01-15'), nextReview: new Date('2025-01-15'), recordCount: 12450, }, { id: 'ret-3', dataCategory: 'Bewerbungsunterlagen', description: 'Lebenslaeufe, Anschreiben, Zeugnisse', retentionPeriod: '6 Monate', legalBasis: 'Berechtigtes Interesse (AGG-Frist)', startEvent: 'Absage oder Stellenbesetzung', deletionMethod: 'Automatische Loeschung', status: 'active', lastReview: new Date('2024-01-10'), nextReview: new Date('2024-07-10'), recordCount: 89, }, { id: 'ret-4', dataCategory: 'Marketing-Einwilligungen', description: 'Newsletter-Abonnements und Werbeeinwilligungen', retentionPeriod: 'Bis Widerruf', legalBasis: 'Einwilligung Art. 6 Abs. 1 lit. a DSGVO', startEvent: 'Widerruf der Einwilligung', deletionMethod: 'Sofortige Loeschung bei Widerruf', status: 'active', lastReview: new Date('2023-12-01'), nextReview: new Date('2024-06-01'), recordCount: 5623, }, { id: 'ret-5', dataCategory: 'Webserver-Logs', description: 'IP-Adressen, Zugriffszeiten, User-Agents', retentionPeriod: '7 Tage', legalBasis: 'Berechtigtes Interesse (IT-Sicherheit)', startEvent: 'Zeitpunkt des Zugriffs', deletionMethod: 'Automatische Rotation', status: 'active', lastReview: new Date('2024-01-20'), nextReview: new Date('2024-04-20'), recordCount: null, }, { id: 'ret-6', dataCategory: 'Kundenstammdaten', description: 'Name, Adresse, Kontaktdaten von Kunden', retentionPeriod: '3 Jahre nach letzter Interaktion', legalBasis: 'Vertragserfuellung, Berechtigtes Interesse', startEvent: 'Letzte Kundeninteraktion', deletionMethod: 'Pruefung und manuelle Loeschung', status: 'review-needed', lastReview: new Date('2023-06-01'), nextReview: new Date('2024-01-01'), recordCount: 8920, }, ] // ============================================================================= // COMPONENTS // ============================================================================= function PolicyCard({ policy }: { policy: RetentionPolicy }) { const statusColors = { active: 'bg-green-100 text-green-700 border-green-200', 'review-needed': 'bg-yellow-100 text-yellow-700 border-yellow-200', expired: 'bg-red-100 text-red-700 border-red-200', } const statusLabels = { active: 'Aktiv', 'review-needed': 'Pruefung erforderlich', expired: 'Abgelaufen', } const isReviewDue = policy.nextReview <= new Date() return (
{policy.description}
Nach Art. 5 Abs. 1 lit. e DSGVO duerfen personenbezogene Daten nur so lange gespeichert werden, wie es fuer die Zwecke, fuer die sie verarbeitet werden, erforderlich ist (Speicherbegrenzung).
Passen Sie den Filter an oder fuegen Sie neue Loeschfristen hinzu.