/**
 * Demo TOMs (Technical & Organizational Measures) for AI Compliance SDK
 * These are seed data structures - actual data is stored in database
 */

import { TOM } from '../types'

export const DEMO_TOMS: TOM[] = [
  // Zugangskontrolle
  {
    id: 'demo-tom-1',
    category: 'Zugangskontrolle',
    name: 'Physische Zutrittskontrolle',
    description: 'Elektronische Zugangskontrollsysteme mit personenbezogenen Zutrittskarten für alle Serverräume und Rechenzentren. Protokollierung aller Zutritte.',
    type: 'TECHNICAL',
    implementationStatus: 'IMPLEMENTED',
    priority: 'HIGH',
    responsiblePerson: 'Facility Management',
    implementationDate: new Date('2025-06-01'),
    reviewDate: new Date('2026-06-01'),
    evidence: ['demo-evi-tom-1'],
  },
  {
    id: 'demo-tom-2',
    category: 'Zugangskontrolle',
    name: 'Besuchermanagement',
    description: 'Registrierung aller Besucher mit Identitätsprüfung, Ausgabe von Besucherausweisen und permanente Begleitung in sicherheitsrelevanten Bereichen.',
    type: 'ORGANIZATIONAL',
    implementationStatus: 'IMPLEMENTED',
    priority: 'MEDIUM',
    responsiblePerson: 'Empfang/Security',
    implementationDate: new Date('2025-03-15'),
    reviewDate: new Date('2026-03-15'),
    evidence: ['demo-evi-tom-2'],
  },

  // Zugriffskontrolle
  {
    id: 'demo-tom-3',
    category: 'Zugriffskontrolle',
    name: 'Identity & Access Management (IAM)',
    description: 'Zentrales IAM-System mit automatischer Provisionierung, Deprovisionierung und regelmäßiger Rezertifizierung aller Benutzerkonten.',
    type: 'TECHNICAL',
    implementationStatus: 'IMPLEMENTED',
    priority: 'CRITICAL',
    responsiblePerson: 'IT-Sicherheit',
    implementationDate: new Date('2025-01-01'),
    reviewDate: new Date('2026-01-01'),
    evidence: ['demo-evi-tom-3'],
  },
  {
    id: 'demo-tom-4',
    category: 'Zugriffskontrolle',
    name: 'Privileged Access Management (PAM)',
    description: 'Spezielles Management für administrative Zugänge mit Session-Recording, automatischer Passwortrotation und Just-in-Time-Berechtigungen.',
    type: 'TECHNICAL',
    implementationStatus: 'IMPLEMENTED',
    priority: 'CRITICAL',
    responsiblePerson: 'IT-Sicherheit',
    implementationDate: new Date('2025-04-01'),
    reviewDate: new Date('2026-04-01'),
    evidence: ['demo-evi-tom-4'],
  },
  {
    id: 'demo-tom-5',
    category: 'Zugriffskontrolle',
    name: 'Berechtigungskonzept-Review',
    description: 'Halbjährliche Überprüfung aller Berechtigungen durch die jeweiligen Fachbereichsleiter mit dokumentierter Rezertifizierung.',
    type: 'ORGANIZATIONAL',
    implementationStatus: 'IMPLEMENTED',
    priority: 'HIGH',
    responsiblePerson: 'Fachbereichsleiter',
    implementationDate: new Date('2025-02-01'),
    reviewDate: new Date('2026-02-01'),
    evidence: ['demo-evi-tom-5'],
  },

  // Verschlüsselung
  {
    id: 'demo-tom-6',
    category: 'Verschlüsselung',
    name: 'Datenverschlüsselung at Rest',
    description: 'AES-256 Verschlüsselung aller personenbezogenen Daten in Datenbanken und Dateisystemen. Key Management über HSM.',
    type: 'TECHNICAL',
    implementationStatus: 'IMPLEMENTED',
    priority: 'CRITICAL',
    responsiblePerson: 'IT-Sicherheit',
    implementationDate: new Date('2025-01-15'),
    reviewDate: new Date('2026-01-15'),
    evidence: ['demo-evi-tom-6'],
  },
  {
    id: 'demo-tom-7',
    category: 'Verschlüsselung',
    name: 'Transportverschlüsselung',
    description: 'TLS 1.3 für alle externen Verbindungen, mTLS für interne Service-Kommunikation. Regelmäßige Überprüfung der Cipher Suites.',
    type: 'TECHNICAL',
    implementationStatus: 'IMPLEMENTED',
    priority: 'CRITICAL',
    responsiblePerson: 'IT-Sicherheit',
    implementationDate: new Date('2025-01-01'),
    reviewDate: new Date('2026-01-01'),
    evidence: ['demo-evi-tom-7'],
  },

  // Pseudonymisierung
  {
    id: 'demo-tom-8',
    category: 'Pseudonymisierung',
    name: 'Pseudonymisierungs-Pipeline',
    description: 'Automatisierte Pseudonymisierung von Daten vor der Verarbeitung in Analytics-Systemen. Reversible Zuordnung nur durch autorisierten Prozess.',
    type: 'TECHNICAL',
    implementationStatus: 'IMPLEMENTED',
    priority: 'HIGH',
    responsiblePerson: 'Data Engineering',
    implementationDate: new Date('2025-05-01'),
    reviewDate: new Date('2026-05-01'),
    evidence: ['demo-evi-tom-8'],
  },

  // Integrität
  {
    id: 'demo-tom-9',
    category: 'Integrität',
    name: 'Datenintegritätsprüfung',
    description: 'Checksummen-Validierung bei allen Datentransfers, Hash-Verifikation gespeicherter Daten, automatische Alerts bei Abweichungen.',
    type: 'TECHNICAL',
    implementationStatus: 'IMPLEMENTED',
    priority: 'HIGH',
    responsiblePerson: 'IT-Betrieb',
    implementationDate: new Date('2025-03-01'),
    reviewDate: new Date('2026-03-01'),
    evidence: ['demo-evi-tom-9'],
  },
  {
    id: 'demo-tom-10',
    category: 'Integrität',
    name: 'Change Management',
    description: 'Dokumentierter Change-Prozess mit Vier-Augen-Prinzip für alle Änderungen an produktiven Systemen. CAB-Freigabe für kritische Changes.',
    type: 'ORGANIZATIONAL',
    implementationStatus: 'IMPLEMENTED',
    priority: 'HIGH',
    responsiblePerson: 'IT-Leitung',
    implementationDate: new Date('2025-01-01'),
    reviewDate: new Date('2026-01-01'),
    evidence: ['demo-evi-tom-10'],
  },

  // Verfügbarkeit
  {
    id: 'demo-tom-11',
    category: 'Verfügbarkeit',
    name: 'Disaster Recovery Plan',
    description: 'Dokumentierter und getesteter DR-Plan mit RTO <4h und RPO <1h. Jährliche DR-Tests mit Dokumentation.',
    type: 'ORGANIZATIONAL',
    implementationStatus: 'IMPLEMENTED',
    priority: 'CRITICAL',
    responsiblePerson: 'IT-Leitung',
    implementationDate: new Date('2025-02-01'),
    reviewDate: new Date('2026-02-01'),
    evidence: ['demo-evi-tom-11'],
  },
  {
    id: 'demo-tom-12',
    category: 'Verfügbarkeit',
    name: 'High Availability Cluster',
    description: 'Aktiv-Aktiv-Cluster für alle kritischen Systeme mit automatischem Failover. 99,9% Verfügbarkeits-SLA.',
    type: 'TECHNICAL',
    implementationStatus: 'IMPLEMENTED',
    priority: 'CRITICAL',
    responsiblePerson: 'IT-Betrieb',
    implementationDate: new Date('2025-01-01'),
    reviewDate: new Date('2026-01-01'),
    evidence: ['demo-evi-tom-12'],
  },

  // Belastbarkeit
  {
    id: 'demo-tom-13',
    category: 'Belastbarkeit',
    name: 'Load Balancing & Auto-Scaling',
    description: 'Dynamische Skalierung basierend auf Last-Metriken. Load Balancer mit Health Checks und automatischer Traffic-Umleitung.',
    type: 'TECHNICAL',
    implementationStatus: 'IMPLEMENTED',
    priority: 'HIGH',
    responsiblePerson: 'IT-Betrieb',
    implementationDate: new Date('2025-04-01'),
    reviewDate: new Date('2026-04-01'),
    evidence: ['demo-evi-tom-13'],
  },
  {
    id: 'demo-tom-14',
    category: 'Belastbarkeit',
    name: 'DDoS-Schutz',
    description: 'Cloudbasierter DDoS-Schutz mit automatischer Traffic-Filterung. Kapazität für 10x Normal-Traffic.',
    type: 'TECHNICAL',
    implementationStatus: 'IMPLEMENTED',
    priority: 'HIGH',
    responsiblePerson: 'IT-Sicherheit',
    implementationDate: new Date('2025-01-01'),
    reviewDate: new Date('2026-01-01'),
    evidence: ['demo-evi-tom-14'],
  },

  // Wiederherstellbarkeit
  {
    id: 'demo-tom-15',
    category: 'Wiederherstellbarkeit',
    name: 'Backup-Strategie',
    description: '3-2-1 Backup-Strategie: 3 Kopien, 2 verschiedene Medien, 1 Offsite. Tägliche inkrementelle, wöchentliche Vollbackups.',
    type: 'TECHNICAL',
    implementationStatus: 'IMPLEMENTED',
    priority: 'CRITICAL',
    responsiblePerson: 'IT-Betrieb',
    implementationDate: new Date('2025-01-01'),
    reviewDate: new Date('2026-01-01'),
    evidence: ['demo-evi-tom-15'],
  },
  {
    id: 'demo-tom-16',
    category: 'Wiederherstellbarkeit',
    name: 'Restore-Tests',
    description: 'Monatliche Restore-Tests mit zufällig ausgewählten Daten. Dokumentation der Recovery-Zeit und Vollständigkeit.',
    type: 'ORGANIZATIONAL',
    implementationStatus: 'IMPLEMENTED',
    priority: 'HIGH',
    responsiblePerson: 'IT-Betrieb',
    implementationDate: new Date('2025-02-01'),
    reviewDate: new Date('2026-02-01'),
    evidence: ['demo-evi-tom-16'],
  },

  // Überprüfung & Bewertung
  {
    id: 'demo-tom-17',
    category: 'Überprüfung & Bewertung',
    name: 'Penetration Tests',
    description: 'Jährliche externe Penetration Tests durch zertifizierte Dienstleister. Zusätzliche Tests nach größeren Änderungen.',
    type: 'ORGANIZATIONAL',
    implementationStatus: 'IMPLEMENTED',
    priority: 'HIGH',
    responsiblePerson: 'IT-Sicherheit',
    implementationDate: new Date('2025-03-01'),
    reviewDate: new Date('2026-03-01'),
    evidence: ['demo-evi-tom-17'],
  },
  {
    id: 'demo-tom-18',
    category: 'Überprüfung & Bewertung',
    name: 'Security Awareness Training',
    description: 'Verpflichtendes Security-Training für alle Mitarbeiter bei Einstellung und jährlich. Phishing-Simulationen quartalsweise.',
    type: 'ORGANIZATIONAL',
    implementationStatus: 'IMPLEMENTED',
    priority: 'MEDIUM',
    responsiblePerson: 'HR / IT-Sicherheit',
    implementationDate: new Date('2025-01-15'),
    reviewDate: new Date('2026-01-15'),
    evidence: ['demo-evi-tom-18'],
  },

  // KI-spezifische TOMs
  {
    id: 'demo-tom-19',
    category: 'KI-Governance',
    name: 'Model Governance Framework',
    description: 'Dokumentierter Prozess für Entwicklung, Test, Deployment und Monitoring von KI-Modellen. Model Cards für alle produktiven Modelle.',
    type: 'ORGANIZATIONAL',
    implementationStatus: 'IMPLEMENTED',
    priority: 'HIGH',
    responsiblePerson: 'Data Science Lead',
    implementationDate: new Date('2025-06-01'),
    reviewDate: new Date('2026-06-01'),
    evidence: ['demo-evi-tom-19'],
  },
  {
    id: 'demo-tom-20',
    category: 'KI-Governance',
    name: 'Bias Detection & Monitoring',
    description: 'Automatisiertes Monitoring der Modell-Outputs auf Bias. Alerting bei signifikanten Abweichungen von Fairness-Metriken.',
    type: 'TECHNICAL',
    implementationStatus: 'IMPLEMENTED',
    priority: 'HIGH',
    responsiblePerson: 'Data Science Lead',
    implementationDate: new Date('2025-07-01'),
    reviewDate: new Date('2026-07-01'),
    evidence: ['demo-evi-tom-20'],
  },
]

export function getDemoTOMs(): TOM[] {
  return DEMO_TOMS.map(tom => ({
    ...tom,
    implementationDate: tom.implementationDate ? new Date(tom.implementationDate) : null,
    reviewDate: tom.reviewDate ? new Date(tom.reviewDate) : null,
  }))
}
