/**
 * Demo Controls for AI Compliance SDK
 */

import { Control } from '../types'

export const DEMO_CONTROLS: Control[] = [
  // Zugangskontrolle
  {
    id: 'demo-ctrl-1',
    name: 'Multi-Faktor-Authentifizierung',
    description: 'Alle Systemzugriffe erfordern mindestens zwei unabhängige Authentifizierungsfaktoren (Wissen + Besitz).',
    type: 'TECHNICAL',
    category: 'Zugangskontrolle',
    implementationStatus: 'IMPLEMENTED',
    effectiveness: 'HIGH',
    evidence: ['demo-evi-1'],
    owner: 'IT-Sicherheit',
    dueDate: null,
  },
  {
    id: 'demo-ctrl-2',
    name: 'Rollenbasiertes Berechtigungskonzept',
    description: 'Zugriffsrechte werden nach dem Least-Privilege-Prinzip anhand definierter Rollen vergeben und regelmäßig überprüft.',
    type: 'ORGANIZATIONAL',
    category: 'Zugangskontrolle',
    implementationStatus: 'IMPLEMENTED',
    effectiveness: 'HIGH',
    evidence: ['demo-evi-2'],
    owner: 'IT-Sicherheit',
    dueDate: null,
  },

  // Verfügbarkeit
  {
    id: 'demo-ctrl-3',
    name: 'Automatisiertes Backup-System',
    description: 'Tägliche inkrementelle Backups und wöchentliche Vollbackups aller kritischen Daten mit Verschlüsselung.',
    type: 'TECHNICAL',
    category: 'Verfügbarkeit',
    implementationStatus: 'IMPLEMENTED',
    effectiveness: 'HIGH',
    evidence: ['demo-evi-3'],
    owner: 'IT-Betrieb',
    dueDate: null,
  },
  {
    id: 'demo-ctrl-4',
    name: 'Georedundante Datenspeicherung',
    description: 'Kritische Daten werden synchron in zwei geographisch getrennten Rechenzentren gespeichert.',
    type: 'TECHNICAL',
    category: 'Verfügbarkeit',
    implementationStatus: 'IMPLEMENTED',
    effectiveness: 'HIGH',
    evidence: ['demo-evi-4'],
    owner: 'IT-Betrieb',
    dueDate: null,
  },

  // KI-Fairness
  {
    id: 'demo-ctrl-5',
    name: 'Bias-Monitoring',
    description: 'Kontinuierliche Überwachung der KI-Modelle auf systematische Verzerrungen anhand definierter Fairness-Metriken.',
    type: 'TECHNICAL',
    category: 'KI-Governance',
    implementationStatus: 'IMPLEMENTED',
    effectiveness: 'MEDIUM',
    evidence: ['demo-evi-5'],
    owner: 'Data Science Lead',
    dueDate: null,
  },
  {
    id: 'demo-ctrl-6',
    name: 'Human-in-the-Loop',
    description: 'Kritische automatisierte Entscheidungen werden vor Umsetzung durch qualifizierte Mitarbeiter überprüft.',
    type: 'ORGANIZATIONAL',
    category: 'KI-Governance',
    implementationStatus: 'IMPLEMENTED',
    effectiveness: 'HIGH',
    evidence: ['demo-evi-6'],
    owner: 'Fachbereich HR',
    dueDate: null,
  },

  // Transparenz
  {
    id: 'demo-ctrl-7',
    name: 'Explainable AI Komponenten',
    description: 'Einsatz von SHAP/LIME zur Erklärung von KI-Entscheidungen für nachvollziehbare Begründungen.',
    type: 'TECHNICAL',
    category: 'Transparenz',
    implementationStatus: 'IMPLEMENTED',
    effectiveness: 'MEDIUM',
    evidence: ['demo-evi-7'],
    owner: 'Data Science Lead',
    dueDate: null,
  },
  {
    id: 'demo-ctrl-8',
    name: 'Verständliche Datenschutzinformationen',
    description: 'Betroffene erhalten klare, verständliche Informationen über die Verarbeitung ihrer Daten gemäß Art. 13-14 DSGVO.',
    type: 'ORGANIZATIONAL',
    category: 'Transparenz',
    implementationStatus: 'IMPLEMENTED',
    effectiveness: 'HIGH',
    evidence: ['demo-evi-8'],
    owner: 'DSB',
    dueDate: null,
  },

  // Datensparsamkeit
  {
    id: 'demo-ctrl-9',
    name: 'Zweckbindungskontrollen',
    description: 'Technische Maßnahmen stellen sicher, dass Daten nur für definierte Zwecke verarbeitet werden.',
    type: 'TECHNICAL',
    category: 'Datensparsamkeit',
    implementationStatus: 'IMPLEMENTED',
    effectiveness: 'MEDIUM',
    evidence: ['demo-evi-9'],
    owner: 'IT-Sicherheit',
    dueDate: null,
  },
  {
    id: 'demo-ctrl-10',
    name: 'Anonymisierungs-Pipeline',
    description: 'Automatisierte Anonymisierung von Daten für Analysen, wo keine Personenbezug erforderlich ist.',
    type: 'TECHNICAL',
    category: 'Datensparsamkeit',
    implementationStatus: 'IMPLEMENTED',
    effectiveness: 'HIGH',
    evidence: ['demo-evi-10'],
    owner: 'Data Engineering',
    dueDate: null,
  },

  // KI-Sicherheit
  {
    id: 'demo-ctrl-11',
    name: 'Input-Validierung',
    description: 'Strenge Validierung aller Eingabedaten zur Verhinderung von Adversarial Attacks auf KI-Modelle.',
    type: 'TECHNICAL',
    category: 'KI-Sicherheit',
    implementationStatus: 'IMPLEMENTED',
    effectiveness: 'MEDIUM',
    evidence: ['demo-evi-11'],
    owner: 'Data Science Lead',
    dueDate: null,
  },
  {
    id: 'demo-ctrl-12',
    name: 'Model Performance Monitoring',
    description: 'Kontinuierliche Überwachung der Modell-Performance mit automatischen Alerts bei Abweichungen.',
    type: 'TECHNICAL',
    category: 'KI-Sicherheit',
    implementationStatus: 'PARTIAL',
    effectiveness: 'MEDIUM',
    evidence: [],
    owner: 'Data Science Lead',
    dueDate: new Date('2026-03-31'),
  },

  // Datenlebenszyklus
  {
    id: 'demo-ctrl-13',
    name: 'Automatisierte Löschroutinen',
    description: 'Technische Umsetzung der Aufbewahrungsfristen mit automatischer Löschung nach Fristablauf.',
    type: 'TECHNICAL',
    category: 'Datenlebenszyklus',
    implementationStatus: 'IMPLEMENTED',
    effectiveness: 'HIGH',
    evidence: ['demo-evi-13'],
    owner: 'IT-Betrieb',
    dueDate: null,
  },
  {
    id: 'demo-ctrl-14',
    name: 'Löschprotokoll-Review',
    description: 'Quartalsweise Überprüfung der Löschprotokolle durch den DSB.',
    type: 'ORGANIZATIONAL',
    category: 'Datenlebenszyklus',
    implementationStatus: 'IMPLEMENTED',
    effectiveness: 'MEDIUM',
    evidence: ['demo-evi-14'],
    owner: 'DSB',
    dueDate: null,
  },

  // Audit
  {
    id: 'demo-ctrl-15',
    name: 'Umfassendes Audit-Logging',
    description: 'Alle sicherheitsrelevanten Ereignisse werden manipulationssicher protokolliert und 10 Jahre aufbewahrt.',
    type: 'TECHNICAL',
    category: 'Audit',
    implementationStatus: 'IMPLEMENTED',
    effectiveness: 'HIGH',
    evidence: ['demo-evi-15'],
    owner: 'IT-Sicherheit',
    dueDate: null,
  },
]

export function getDemoControls(): Control[] {
  return DEMO_CONTROLS.map(ctrl => ({
    ...ctrl,
    dueDate: ctrl.dueDate ? new Date(ctrl.dueDate) : null,
  }))
}
