/**
 * SDK Flow Steps — Paket 3: Dokumentation (seq 2000–2500)
 *                 + Paket 4: Rechtliche Texte (seq 3000–3400)
 */
import type { SDKFlowStep } from './types'

export const STEPS_DOKUMENTATION: SDKFlowStep[] = [
  {
    id: 'obligations',
    name: 'Pflichtenuebersicht',
    nameShort: 'Pflichten',
    package: 'dokumentation',
    seq: 2000,
    checkpointId: 'CP-OBL',
    checkpointType: 'REQUIRED',
    checkpointReviewer: 'NONE',
    description: 'Zusammenfassung aller gesetzlichen Pflichten aus DSGVO, AI Act, NIS2.',
    descriptionLong: 'Die Pflichtenuebersicht konsolidiert alle gesetzlichen Pflichten, die sich aus den Requirements, der AI-Act-Klassifizierung und den aktivierten Modulen ergeben. Wenn applicableRegulations aus dem Scope-Profiling vorliegen, werden diese direkt als Vorfilter verwendet. Fuer jede Pflicht wird angegeben: Welches Gesetz (DSGVO, AI Act, NIS2), welcher Artikel, welche Frist, wer verantwortlich ist und welche Massnahmen erforderlich sind. Die RAG-Collection bp_compliance_recht liefert aktuelle Pflichtentexte und Auslegungshinweise.',
    legalBasis: 'Art. 5 Abs. 2 DSGVO, Art. 9 AI Act',
    inputs: ['requirements', 'aiActClassification', 'modules', 'applicableRegulations'],
    outputs: ['obligationsOverview'],
    prerequisiteSteps: ['audit-report'],
    dbTables: ['compliance_obligations'],
    dbMode: 'read/write',
    ragCollections: ['bp_compliance_recht'],
    ragPurpose: 'NIS2, DSGVO, AI Act Pflichtentexte',
    isOptional: false,
    url: '/sdk/obligations',
  },
  {
    id: 'dsfa',
    name: 'DSFA',
    nameShort: 'DSFA',
    package: 'dokumentation',
    seq: 2100,
    checkpointId: 'CP-DSFA',
    checkpointType: 'REQUIRED',
    checkpointReviewer: 'DSB',
    description: 'Datenschutz-Folgenabschaetzung fuer Hochrisiko-Verarbeitungen. Draft-Modus (v1 + v2) nutzt RAG fuer rechtliche Praezision.',
    descriptionLong: 'Die Datenschutz-Folgenabschaetzung (DSFA) ist nach Art. 35 DSGVO fuer Verarbeitungen mit hohem Risiko vorgeschrieben. Sie bewertet systematisch die Notwendigkeit, Verhaeltnismaessigkeit und Risiken der Datenverarbeitung. Die DSFA enthaelt: Beschreibung der Verarbeitung, Bewertung der Notwendigkeit, Risikobewertung fuer die Betroffenen, geplante Abhilfemassnahmen. Der DSB muss die DSFA freigeben. Bei verbleibendem Hochrisiko muss die Aufsichtsbehoerde konsultiert werden. Sowohl der v1- als auch der v2-Draft-Modus werden mit rechtlichem Kontext aus dem RAG-Corpus (bp_dsfa_corpus) angereichert. Die shared queryRAG-Utility (rag-query.ts) wird von Chat- und Draft-Pipelines gemeinsam genutzt.',
    legalBasis: 'Art. 35, 36 DSGVO (DSFA und vorherige Konsultation)',
    inputs: ['risks', 'aiActClassification', 'modules'],
    outputs: ['dsfa'],
    prerequisiteSteps: ['obligations'],
    dbTables: [],
    dbMode: 'none',
    ragCollections: ['bp_dsfa_corpus'],
    ragPurpose: 'DSFA-Vorlagen, Bewertungskriterien und Art. 35 DSGVO Rechtstexte. v1-Pipeline haengt RAG-Kontext an System-Prompt an, v2-Pipeline injiziert ihn pro Block als RECHTSKONTEXT-Referenz.',
    generates: ['DSFA-Report'],
    isOptional: true,
    url: '/sdk/dsfa',
  },
  {
    id: 'tom',
    name: 'TOMs',
    nameShort: 'TOMs',
    package: 'dokumentation',
    seq: 2200,
    checkpointId: 'CP-TOM',
    checkpointType: 'REQUIRED',
    checkpointReviewer: 'NONE',
    description: 'Dokumentation aller Technisch-Organisatorischen Massnahmen nach Art. 32 DSGVO.',
    descriptionLong: 'Die Technisch-Organisatorischen Massnahmen (TOMs) dokumentieren alle Sicherheitsmassnahmen, die zum Schutz personenbezogener Daten implementiert sind. TOMs umfassen: Zutrittskontrolle, Zugangskontrolle, Zugriffskontrolle, Weitergabekontrolle, Eingabekontrolle, Auftragskontrolle, Verfuegbarkeitskontrolle und Trennungsgebot. Jede Massnahme wird mit Implementierungsstatus, Verantwortlichem und Pruefintervall dokumentiert. Die bestehenden Controls werden als Basis verwendet.',
    legalBasis: 'Art. 32 DSGVO (Sicherheit der Verarbeitung)',
    inputs: ['dsfa', 'controls', 'risks'],
    outputs: ['toms'],
    prerequisiteSteps: ['obligations'],
    dbTables: ['compliance_controls'],
    dbMode: 'read',
    ragCollections: ['bp_compliance_datenschutz'],
    ragPurpose: 'TOM-Massnahmenkataloge',
    isOptional: false,
    url: '/sdk/tom',
  },
  {
    id: 'loeschfristen',
    name: 'Loeschfristen',
    nameShort: 'Loeschfristen',
    package: 'dokumentation',
    seq: 2300,
    checkpointId: 'CP-RET',
    checkpointType: 'REQUIRED',
    checkpointReviewer: 'NONE',
    description: 'Festlegung von Aufbewahrungs- und Loeschfristen fuer alle Datenkategorien.',
    descriptionLong: 'Fuer jede Datenkategorie werden gesetzliche Aufbewahrungsfristen und Loeschzeitpunkte definiert. Dabei werden gesetzliche Mindestaufbewahrungsfristen (z.B. 10 Jahre Steuerrecht, 6 Jahre Handelsrecht, 3 Jahre Verjaehrung) mit dem Grundsatz der Datenminimierung abgewogen. Das Loeschkonzept definiert: Welche Daten, wann geloescht, wie geloescht (Anonymisierung vs. physische Loeschung) und wer verantwortlich ist.',
    legalBasis: 'Art. 5 Abs. 1e DSGVO (Speicherbegrenzung), Art. 17 DSGVO (Recht auf Loeschung)',
    inputs: ['vvt', 'dataMapping'],
    outputs: ['retentionPolicies'],
    prerequisiteSteps: ['tom'],
    dbTables: ['compliance_loeschfristen'],
    dbMode: 'read/write',
    ragCollections: ['bp_compliance_recht'],
    ragPurpose: 'Aufbewahrungsfristen nach Gesetz',
    isOptional: false,
    url: '/sdk/loeschfristen',
  },
  {
    id: 'vvt',
    name: 'Verarbeitungsverzeichnis',
    nameShort: 'VVT',
    package: 'dokumentation',
    seq: 2400,
    checkpointId: 'CP-VVT',
    checkpointType: 'REQUIRED',
    checkpointReviewer: 'DSB',
    description: 'Erstellung des Verzeichnisses aller Verarbeitungstaetigkeiten nach Art. 30 DSGVO — vollstaendig backend-persistent.',
    descriptionLong: 'Das VVT (Verzeichnis von Verarbeitungstaetigkeiten) ist eine gesetzliche Pflichtdokumentation nach Art. 30 DSGVO. Fuer jede Verarbeitungstaetigkeit wird dokumentiert: Zweck, Rechtsgrundlage, Kategorien betroffener Personen, Datenkategorien, Empfaenger, Drittlandtransfers, Loeschfristen und TOMs. Jede Aktivitaet wird mit einem eindeutigen VVT-ID versehen und in der Datenbank gespeichert (compliance_vvt_activities). Organisationsweite Metadaten (DSB-Kontakt, Branche, Standorte) werden separat verwaltet (compliance_vvt_organization). Alle Aenderungen werden in einem Audit-Log protokolliert (compliance_vvt_audit_log). Das VVT wird via FastAPI-Backend (backend-compliance:8002) persistent gespeichert. Der DSB muss das VVT freigeben.',
    legalBasis: 'Art. 30 DSGVO (Verzeichnis von Verarbeitungstaetigkeiten)',
    inputs: ['modules', 'toms', 'dataMapping'],
    outputs: ['vvt'],
    prerequisiteSteps: ['loeschfristen'],
    dbTables: ['compliance_vvt_organization', 'compliance_vvt_activities', 'compliance_vvt_audit_log'],
    dbMode: 'read/write',
    ragCollections: ['bp_compliance_gesetze'],
    ragPurpose: 'Art. 30 DSGVO Vorlage',
    isOptional: false,
    url: '/sdk/vvt',
  },
  {
    id: 'vendor-compliance',
    name: 'Vendor Compliance',
    nameShort: 'Vendor',
    package: 'dokumentation',
    seq: 2500,
    checkpointId: 'CP-VEND',
    checkpointType: 'REQUIRED',
    checkpointReviewer: 'NONE',
    description: 'Pruefung und Verwaltung aller Auftragsverarbeiter und Drittanbieter — Cross-Modul-Integration mit VVT, Obligations, TOM und Loeschfristen.',
    descriptionLong: 'Vendor Compliance verwaltet alle externen Dienstleister, die im Auftrag personenbezogene Daten verarbeiten (Auftragsverarbeiter nach Art. 28 DSGVO). Fuer jeden Vendor wird geprueft: Gibt es einen AVV? Wo werden Daten gespeichert (EU/Drittland)? Welche TOMs hat der Vendor? Gibt es Subunternehmer? Cross-Modul-Integration: VVT-Processor-Tab liest Vendors mit role=PROCESSOR direkt aus der Vendor-API, Obligations und Loeschfristen verknuepfen Vendors ueber linked_vendor_ids (JSONB), TOM zeigt Vendor-Controls als Querverweis.',
    legalBasis: 'Art. 28 DSGVO (Auftragsverarbeiter), Art. 44-49 (Drittlandtransfer)',
    inputs: ['modules', 'vvt'],
    outputs: ['vendorAssessments', 'vendorControlInstances'],
    prerequisiteSteps: ['vvt'],
    dbTables: ['vendor_vendors', 'vendor_contracts', 'vendor_findings', 'vendor_control_instances', 'compliance_templates'],
    dbMode: 'read/write',
    ragCollections: ['bp_compliance_recht'],
    ragPurpose: 'AVV-Vorlagen und Pruefkataloge',
    isOptional: false,
    url: '/sdk/vendor-compliance',
    completion: 100,
  },
]

export const STEPS_RECHTLICHE_TEXTE: SDKFlowStep[] = [
  {
    id: 'einwilligungen',
    name: 'Einwilligungen',
    nameShort: 'Einwilligungen',
    package: 'rechtliche-texte',
    seq: 3000,
    checkpointId: 'CP-CONS',
    checkpointType: 'REQUIRED',
    checkpointReviewer: 'NONE',
    description: 'Definition aller Einwilligungserklaerungen — vollstaendig backend-persistent mit Nachweis-Tracking.',
    descriptionLong: 'Basierend auf dem VVT und den aktivierten Modulen werden alle Verarbeitungen identifiziert, die eine Einwilligung erfordern (Art. 6 Abs. 1a DSGVO). Der Datenkatalog definiert einwilligungspflichtige Datenpunkte. Erteilte und widerrufene Einwilligungen werden mit vollstaendigem Audit-Trail gespeichert: Zeitpunkt, Version, IP-Adresse, User-Agent, Quelle. Widerruf setzt `revoked_at` ohne den urspruenglichen Eintrag zu loeschen (Nachweispflicht). Cookie-Banner-Konfiguration ist ebenfalls hier zentral verwaltet.',
    legalBasis: 'Art. 6 Abs. 1a, Art. 7 DSGVO (Einwilligung)',
    inputs: ['vvt', 'modules'],
    outputs: ['consents'],
    prerequisiteSteps: ['vvt'],
    dbTables: ['compliance_einwilligungen_catalog', 'compliance_einwilligungen_company', 'compliance_einwilligungen_consents', 'compliance_einwilligungen_cookies'],
    dbMode: 'read/write',
    ragCollections: ['bp_compliance_datenschutz'],
    ragPurpose: 'Einwilligungsvorlagen DSGVO',
    isOptional: false,
    url: '/sdk/einwilligungen',
    completion: 100,
  },
  {
    id: 'consent',
    name: 'Rechtliche Vorlagen',
    nameShort: 'Vorlagen',
    package: 'rechtliche-texte',
    seq: 3100,
    checkpointId: 'CP-DOC',
    checkpointType: 'REQUIRED',
    checkpointReviewer: 'NONE',
    description: 'Verwaltung von Datenschutzerklaerung, AGB und Nutzungsbedingungen — vollstaendig backend-persistent.',
    descriptionLong: 'In diesem Schritt werden die zentralen rechtlichen Dokumente verwaltet: Datenschutzerklaerung (Art. 13/14 DSGVO), AGB, Cookie-Richtlinie, Impressum und AVV. Jedes Dokument wird in `compliance_legal_documents` gespeichert. Ueber den Vorschau-Button kann die aktuell veroffentlichte HTML-Version im Browser angezeigt werden. Per Bearbeiten-Button gelangt man direkt in den Document Workflow. Schnellaktionen navigieren zum Dokumentengenerator fuer KI-gestuetzte Template-Generierung.',
    legalBasis: 'Art. 13, 14 DSGVO (Informationspflichten)',
    inputs: ['companyProfile', 'vvt', 'consents'],
    outputs: ['documents'],
    prerequisiteSteps: ['einwilligungen'],
    dbTables: ['compliance_legal_documents', 'compliance_legal_document_versions'],
    dbMode: 'read/write',
    ragCollections: ['bp_legal_templates'],
    ragPurpose: 'AGB, DSE, Nutzungsbedingungen Templates',
    generates: ['Datenschutzerklaerung', 'AGB', 'Nutzungsbedingungen'],
    isOptional: false,
    url: '/sdk/consent',
    completion: 100,
  },
  {
    id: 'cookie-banner',
    name: 'Cookie Banner',
    nameShort: 'Cookies',
    package: 'rechtliche-texte',
    seq: 3200,
    checkpointId: 'CP-COOK',
    checkpointType: 'REQUIRED',
    checkpointReviewer: 'NONE',
    description: 'Konfiguration eines rechtskonformen Cookie-Banners — Texte und Kategorien persistent in DB.',
    descriptionLong: 'Der Cookie-Banner wird basierend auf den definierten Einwilligungen konfiguriert. Alle Einstellungen (Position, Stil, Farbe, Texte) und Kategorien werden in `compliance_einwilligungen_cookies` gespeichert. Banner-Texte (Ueberschrift, Beschreibung, Datenschutz-Link) sind Controlled Inputs und werden beim Speichern persistiert. Die Live-Vorschau aktualisiert sich in Echtzeit. Der Embed-Code wird beim Export aus der DB-Konfiguration generiert — kein In-Memory-Speicher, kein Datenverlust bei Neustart. Implementiert "Privacy by Default": nur notwendige Cookies sind vorausgewaehlt.',
    legalBasis: 'Art. 5 Abs. 3 ePrivacy-RL, TTDSG § 25',
    inputs: ['consents', 'companyProfile'],
    outputs: ['cookieBanner'],
    prerequisiteSteps: ['consent'],
    dbTables: ['compliance_einwilligungen_cookies'],
    dbMode: 'read/write',
    ragCollections: ['bp_compliance_datenschutz'],
    ragPurpose: 'Cookie-Consent Richtlinien',
    isOptional: false,
    url: '/sdk/cookie-banner',
    completion: 100,
  },
  {
    id: 'document-generator',
    name: 'Dokumentengenerator',
    nameShort: 'Generator',
    package: 'rechtliche-texte',
    seq: 3300,
    checkpointId: 'CP-DOCGEN',
    checkpointType: 'RECOMMENDED',
    checkpointReviewer: 'NONE',
    description: 'Generierung weiterer rechtlicher Dokumente (Impressum, AVV, Auftragsverarbeitung) mit PDF-Export.',
    descriptionLong: 'Der Dokumentengenerator erstellt zusaetzliche rechtliche Dokumente, die ueber die Pflichtdokumente hinausgehen: Impressum (nach TMG/DDG), Auftragsverarbeitungsvertraege (AVV nach Art. 28 DSGVO), Vertraulichkeitsvereinbarungen, Betriebsvereinbarungen zum Datenschutz und Datenschutz-Folgenabschaetzungs-Berichte. Die Templates werden aus bp_legal_templates geladen und mit den unternehmensspezifischen Daten befuellt. PDF-Export ist direkt im Browser via window.print() moeglich. Steht der Template-Service (breakpilot-core) nicht bereit, erscheint ein Fallback-Banner mit Hinweis.',
    legalBasis: 'Art. 28 DSGVO (Auftragsverarbeitung), DDG § 5 (Impressum)',
    inputs: ['companyProfile', 'toms', 'vvt'],
    outputs: ['generatedDocuments'],
    prerequisiteSteps: ['cookie-banner'],
    dbTables: [],
    dbMode: 'none',
    ragCollections: ['bp_legal_templates'],
    ragPurpose: 'Dokumenten-Templates',
    generates: ['Impressum', 'Auftragsverarbeitungsvertrag'],
    isOptional: true,
    url: '/sdk/document-generator',
    completion: 100,
  },
  {
    id: 'workflow',
    name: 'Document Workflow',
    nameShort: 'Workflow',
    package: 'rechtliche-texte',
    seq: 3400,
    checkpointId: 'CP-WRKF',
    checkpointType: 'REQUIRED',
    checkpointReviewer: 'NONE',
    description: 'Freigabe-Workflow fuer alle rechtlichen Dokumente — vollstaendig backend-persistent mit Versionierung.',
    descriptionLong: 'Der Document Workflow steuert den Freigabeprozess fuer alle rechtlichen Dokumente. Split-View-Editor: linkes Panel zeigt die veroffentlichte Version, rechtes Panel den Entwurf. Status-Workflow: draft → review → approved → published (oder rejected). Alle Versionen werden in `compliance_legal_document_versions` gespeichert. Der Versions-Endpoint gibt ein direktes JSON-Array zurueck. DOCX-Import via multipart/form-data moeglich. Freigabe-Historie wird in `compliance_legal_document_approvals` protokolliert (Zeitstempel, Benutzer, Kommentar). Veroeffentlichte Versionen sind unveraenderlich — Aenderungen erzeugen stets eine neue Version.',
    inputs: ['documents', 'generatedDocuments'],
    outputs: ['approvedDocuments'],
    prerequisiteSteps: ['cookie-banner'],
    dbTables: ['compliance_legal_documents', 'compliance_legal_document_versions', 'compliance_legal_document_approvals'],
    dbMode: 'read/write',
    ragCollections: [],
    isOptional: false,
    url: '/sdk/workflow',
    completion: 100,
  },
]
