/**
 * Compliance Scope Engine - Document Types
 *
 * Definiert Dokumenttypen und deren Anforderungen pro Compliance-Level.
 */

import type { ComplianceDepthLevel } from './core-levels'

/**
 * Alle verfügbaren Dokumenttypen im SDK
 */
export type ScopeDocumentType =
  | 'vvt'                    // Verzeichnis von Verarbeitungstätigkeiten
  | 'lf'                     // Löschfristenkonzept
  | 'tom'                    // Technische und organisatorische Maßnahmen
  | 'av_vertrag'             // Auftragsverarbeitungsvertrag
  | 'dsi'                    // Datenschutz-Informationen (Privacy Policy)
  | 'betroffenenrechte'      // Betroffenenrechte-Prozess
  | 'dsfa'                   // Datenschutz-Folgenabschätzung
  | 'daten_transfer'         // Drittlandtransfer-Dokumentation
  | 'datenpannen'            // Datenpannen-Prozess
  | 'einwilligung'           // Einwilligungsmanagement
  | 'vertragsmanagement'     // Vertragsmanagement-Prozess
  | 'schulung'               // Mitarbeiterschulung
  | 'audit_log'              // Audit & Logging Konzept
  | 'risikoanalyse'          // Risikoanalyse
  | 'notfallplan'            // Notfall- & Krisenplan
  | 'zertifizierung'         // Zertifizierungsvorbereitung
  | 'datenschutzmanagement'  // Datenschutzmanagement-System (DSMS)
  | 'iace_ce_assessment'     // CE-Risikobeurteilung SW/FW/KI (IACE)
  | 'widerrufsbelehrung'     // Widerrufsbelehrung (§ 312g BGB)
  | 'preisangaben'           // Preisangaben (PAngV)
  | 'fernabsatz_info'        // Informationspflichten Fernabsatz (§ 312d BGB)
  | 'streitbeilegung'        // Streitbeilegungshinweis (VSBG § 36)
  | 'produktsicherheit'      // Produktsicherheit (GPSR EU 2023/988)
  | 'ai_act_doku';           // AI Act Technische Dokumentation (Art. 11)

/**
 * Erforderliches Dokument mit Detailtiefe
 */
export interface RequiredDocument {
  /** Dokumenttyp */
  documentType: ScopeDocumentType;
  /** Anzeigename */
  label: string;
  /** Pflicht oder empfohlen */
  requirement: 'mandatory' | 'recommended';
  /** Priorität */
  priority: 'high' | 'medium' | 'low';
  /** Geschätzter Aufwand in Stunden */
  estimatedEffort: number;
  /** Von welchen Triggern/Regeln gefordert */
  triggeredBy: string[];
  /** Link zum SDK-Schritt */
  sdkStepUrl?: string;
}

/**
 * Anforderungen an ein Dokument pro Level
 */
export interface DocumentDepthRequirement {
  /** Ist auf diesem Level erforderlich? */
  required: boolean;
  /** Tiefenbezeichnung */
  depth: string;
  /** Konkrete Anforderungen */
  detailItems: string[];
  /** Geschätzter Aufwand */
  estimatedEffort: string;
}

/**
 * Vollständige Scope-Anforderungen für ein Dokument
 */
export interface DocumentScopeRequirement {
  /** L1 Anforderungen */
  L1: DocumentDepthRequirement;
  /** L2 Anforderungen */
  L2: DocumentDepthRequirement;
  /** L3 Anforderungen */
  L3: DocumentDepthRequirement;
  /** L4 Anforderungen */
  L4: DocumentDepthRequirement;
}
