diff --git a/admin-compliance/app/(admin)/development/sdk-flow/flow-data.ts b/admin-compliance/app/(admin)/development/sdk-flow/flow-data.ts
index 66c42f8..e5a9552 100644
--- a/admin-compliance/app/(admin)/development/sdk-flow/flow-data.ts
+++ b/admin-compliance/app/(admin)/development/sdk-flow/flow-data.ts
@@ -506,14 +506,14 @@ export const SDK_FLOW_STEPS: SDKFlowStep[] = [
checkpointId: 'CP-CONS',
checkpointType: 'REQUIRED',
checkpointReviewer: 'NONE',
- description: 'Definition aller erforderlichen Einwilligungserklaerungen fuer Datenverarbeitungen.',
- descriptionLong: 'Basierend auf dem VVT und den aktivierten Modulen werden alle Verarbeitungen identifiziert, die eine Einwilligung erfordern (Art. 6 Abs. 1a DSGVO). Fuer jede Einwilligung wird ein rechtskonformer Text generiert, der: den Zweck klar benennt, freiwillig erteilt werden kann, informiert und spezifisch ist. Einwilligungen werden mit Widerrufsmechanismus, Versionierung und Nachweispflicht versehen.',
+ 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: [],
- dbMode: 'none',
+ 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,
@@ -528,14 +528,14 @@ export const SDK_FLOW_STEPS: SDKFlowStep[] = [
checkpointId: 'CP-DOC',
checkpointType: 'REQUIRED',
checkpointReviewer: 'NONE',
- description: 'Generierung von Datenschutzerklaerung, AGB und Nutzungsbedingungen.',
- descriptionLong: 'In diesem Schritt werden die zentralen rechtlichen Dokumente generiert: Datenschutzerklaerung (nach Art. 13/14 DSGVO), AGB, Nutzungsbedingungen und Informationspflichten. Die Dokumente werden aus dem Unternehmensprofil, VVT und den Einwilligungen automatisch zusammengestellt. Die RAG-Collection bp_legal_templates liefert branchenspezifische Vorlagen, die an die spezifischen Verarbeitungen des Unternehmens angepasst werden.',
+ 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: [],
- dbMode: 'none',
+ dbTables: ['compliance_legal_documents', 'compliance_legal_document_versions'],
+ dbMode: 'read/write',
ragCollections: ['bp_legal_templates'],
ragPurpose: 'AGB, DSE, Nutzungsbedingungen Templates',
generates: ['Datenschutzerklaerung', 'AGB', 'Nutzungsbedingungen'],
@@ -551,14 +551,14 @@ export const SDK_FLOW_STEPS: SDKFlowStep[] = [
checkpointId: 'CP-COOK',
checkpointType: 'REQUIRED',
checkpointReviewer: 'NONE',
- description: 'Konfiguration eines rechtskonformen Cookie-Banners mit Consent-Management.',
- descriptionLong: 'Der Cookie-Banner wird basierend auf den definierten Einwilligungen und dem Unternehmensprofil konfiguriert. Er unterscheidet zwischen technisch notwendigen Cookies (kein Consent noetig), funktionalen Cookies, Analyse-Cookies und Marketing-Cookies. Der Banner implementiert "Privacy by Default" — nur notwendige Cookies sind vorausgewaehlt. Die Konfiguration umfasst: Kategorien, Zweckbeschreibungen, Anbieter, Laufzeiten und Opt-in/Opt-out-Mechanismen.',
+ 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: [],
- dbMode: 'none',
+ dbTables: ['compliance_einwilligungen_cookies'],
+ dbMode: 'read/write',
ragCollections: ['bp_compliance_datenschutz'],
ragPurpose: 'Cookie-Consent Richtlinien',
isOptional: false,
@@ -596,13 +596,13 @@ export const SDK_FLOW_STEPS: SDKFlowStep[] = [
checkpointId: 'CP-WRKF',
checkpointType: 'REQUIRED',
checkpointReviewer: 'NONE',
- description: 'Freigabe-Workflow fuer alle generierten rechtlichen Dokumente.',
- descriptionLong: 'Der Document Workflow steuert den Freigabeprozess fuer alle generierten Dokumente. Jedes Dokument durchlaeuft definierte Phasen: Entwurf, Review, Freigabe, Veroeffentlichung. Je nach Dokumenttyp werden unterschiedliche Reviewer zugewiesen (DSB, Rechtsabteilung, Geschaeftsfuehrung). Der Workflow protokolliert alle Aenderungen, Kommentare und Freigaben fuer die Audit-Spur.',
+ 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: [],
- dbMode: 'none',
+ dbTables: ['compliance_legal_documents', 'compliance_legal_document_versions', 'compliance_legal_document_approvals'],
+ dbMode: 'read/write',
ragCollections: [],
isOptional: false,
url: '/sdk/workflow',
diff --git a/admin-compliance/app/(sdk)/sdk/consent/page.tsx b/admin-compliance/app/(sdk)/sdk/consent/page.tsx
index 59947bc..babc767 100644
--- a/admin-compliance/app/(sdk)/sdk/consent/page.tsx
+++ b/admin-compliance/app/(sdk)/sdk/consent/page.tsx
@@ -1,6 +1,7 @@
'use client'
import React, { useState, useEffect } from 'react'
+import { useRouter } from 'next/navigation'
import { useSDK } from '@/lib/sdk'
import { StepHeader, STEP_EXPLANATIONS } from '@/components/sdk/StepHeader'
@@ -67,7 +68,17 @@ function transformApiDocument(doc: ApiDocument): LegalDocument {
// COMPONENTS
// =============================================================================
-function DocumentCard({ document, onDelete }: { document: LegalDocument; onDelete: (id: string) => void }) {
+function DocumentCard({
+ document,
+ onDelete,
+ onEdit,
+ onPreview,
+}: {
+ document: LegalDocument
+ onDelete: (id: string) => void
+ onEdit: (id: string) => void
+ onPreview: (doc: LegalDocument) => void
+}) {
const typeColors = {
'privacy-policy': 'bg-blue-100 text-blue-700',
terms: 'bg-green-100 text-green-700',
@@ -138,14 +149,23 @@ function DocumentCard({ document, onDelete }: { document: LegalDocument; onDelet
Aktualisiert: {document.lastUpdated.toLocaleDateString('de-DE')}
-