diff --git a/admin-compliance/app/(sdk)/sdk/reporting/page.tsx b/admin-compliance/app/(sdk)/sdk/reporting/page.tsx
new file mode 100644
index 0000000..f381f30
--- /dev/null
+++ b/admin-compliance/app/(sdk)/sdk/reporting/page.tsx
@@ -0,0 +1,513 @@
+'use client'
+
+import React, { useState, useEffect } from 'react'
+import { useSDK } from '@/lib/sdk'
+import { StepHeader } from '@/components/sdk/StepHeader'
+import {
+ ExecutiveReport,
+ RiskLevel,
+ DeadlineSeverity,
+ RISK_LEVEL_INFO,
+ DEADLINE_SEVERITY_INFO,
+ getScoreColor,
+ getScoreBgColor,
+} from '@/lib/sdk/reporting/types'
+import { getExecutiveReport } from '@/lib/sdk/reporting/api'
+
+// =============================================================================
+// TYPES
+// =============================================================================
+
+type TabId = 'overview' | 'risks' | 'deadlines' | 'modules' | 'activity'
+
+interface Tab {
+ id: TabId
+ label: string
+}
+
+// =============================================================================
+// HELPER COMPONENTS
+// =============================================================================
+
+function TabNavigation({
+ tabs,
+ activeTab,
+ onTabChange,
+}: {
+ tabs: Tab[]
+ activeTab: TabId
+ onTabChange: (tab: TabId) => void
+}) {
+ return (
+
+
+
+ )
+}
+
+function ScoreCircle({ score }: { score: number }) {
+ const circumference = 2 * Math.PI * 60
+ const strokeDashoffset = circumference - (score / 100) * circumference
+
+ return (
+
+
+
+ {score}%
+ Compliance
+
+
+ )
+}
+
+function StatCard({
+ label,
+ value,
+ color = 'gray',
+ subtitle,
+}: {
+ label: string
+ value: number | string
+ color?: 'gray' | 'blue' | 'yellow' | 'red' | 'green' | 'purple' | 'orange'
+ subtitle?: string
+}) {
+ const colorClasses: Record = {
+ gray: 'border-gray-200 text-gray-900',
+ blue: 'border-blue-200 text-blue-600',
+ yellow: 'border-yellow-200 text-yellow-600',
+ red: 'border-red-200 text-red-600',
+ green: 'border-green-200 text-green-600',
+ purple: 'border-purple-200 text-purple-600',
+ orange: 'border-orange-200 text-orange-600',
+ }
+
+ return (
+
+
{label}
+
{value}
+ {subtitle &&
{subtitle}
}
+
+ )
+}
+
+function RiskBadge({ level }: { level: RiskLevel }) {
+ const info = RISK_LEVEL_INFO[level]
+ return (
+
+ {info.label}
+
+ )
+}
+
+function DeadlineBadge({ severity }: { severity: DeadlineSeverity }) {
+ const info = DEADLINE_SEVERITY_INFO[severity]
+ return (
+
+ {info.label}
+
+ )
+}
+
+// =============================================================================
+// TAB CONTENTS
+// =============================================================================
+
+function OverviewTab({ report }: { report: ExecutiveReport }) {
+ return (
+
+ {/* Score + Key Metrics */}
+
+
+
+
+
+ = 80 ? 'green' : 'yellow'} subtitle={`${report.dsgvo.completionPercent}% vollstaendig`} />
+ 0 ? 'red' : 'green'} subtitle={report.dsgvo.overdueDSRs > 0 ? `${report.dsgvo.overdueDSRs} ueberfaellig` : 'Keine ueberfaelligen'} />
+ 0 ? 'red' : 'green'} subtitle={report.incidents.criticalIncidents > 0 ? `${report.incidents.criticalIncidents} kritisch` : 'Keine kritischen'} />
+ = 80 ? 'green' : 'yellow'} subtitle={`${report.academy.overdueCount} ueberfaellig`} />
+
+
+
+
+ {/* Deadlines Summary */}
+ {report.upcomingDeadlines.length > 0 && (
+
+
Naechste Fristen
+
+ {report.upcomingDeadlines.slice(0, 5).map((dl, i) => (
+
+
+
+
+
{dl.description}
+
{dl.module} · {dl.type}
+
+
+
+ {dl.daysLeft <= 0 ? `${Math.abs(dl.daysLeft)} Tage ueberfaellig` : `${dl.daysLeft} Tage`}
+
+
+ ))}
+
+
+ )}
+
+ )
+}
+
+function RisksTab({ report }: { report: ExecutiveReport }) {
+ return (
+
+ {/* Overall Risk */}
+
+
+
Gesamt-Risikobewertung
+
+
+
+ 5 ? 'orange' : 'gray'} />
+ 0 ? 'red' : 'green'} />
+
+
+
+ {/* Per-Module Risks */}
+
+
Risiken nach Modul
+
+ {report.riskOverview.moduleRisks.map((mr, i) => (
+
+
+ {mr.module}
+
+
+
+
+
{mr.score}%
+
{mr.issues} Issues
+
+
+ ))}
+
+
+
+ )
+}
+
+function DeadlinesTab({ report }: { report: ExecutiveReport }) {
+ return (
+
+
Alle Fristen ({report.upcomingDeadlines.length})
+ {report.upcomingDeadlines.length === 0 ? (
+
Keine bevorstehenden Fristen.
+ ) : (
+
+
+
+
+ | Status |
+ Modul |
+ Typ |
+ Beschreibung |
+ Faellig am |
+ Verbleibend |
+
+
+
+ {report.upcomingDeadlines.map((dl, i) => (
+
+ |
+ {dl.module} |
+ {dl.type} |
+ {dl.description} |
+ {new Date(dl.dueDate).toLocaleDateString('de-DE')} |
+
+ {dl.daysLeft <= 0 ? `${Math.abs(dl.daysLeft)}d ueberfaellig` : `${dl.daysLeft}d`}
+ |
+
+ ))}
+
+
+
+ )}
+
+ )
+}
+
+function ModulesTab({ report }: { report: ExecutiveReport }) {
+ return (
+
+ {/* DSGVO Module */}
+
+
DSGVO-Compliance
+
+
+ = 80 ? 'green' : 'yellow'} />
+
+
+
+
+
+ {/* Vendors */}
+
+
Lieferanten-Compliance
+
+
+
+ 0 ? 'yellow' : 'green'} />
+ 0 ? 'red' : 'green'} />
+
+
+
+ {/* Incidents */}
+
+
Datenschutzvorfaelle
+
+
+ 0 ? 'orange' : 'green'} />
+ 0 ? 'red' : 'green'} />
+ 0 ? 'red' : 'green'} />
+
+
+
+ {/* Whistleblower */}
+
+
Hinweisgebersystem
+
+
+ 0 ? 'yellow' : 'green'} />
+ 0 ? 'red' : 'green'} />
+ 0 ? 'red' : 'green'} />
+
+
+
+ {/* Academy */}
+
+
Compliance Academy
+
+
+
+ = 80 ? 'green' : 'yellow'} />
+ 0 ? 'red' : 'green'} />
+
+
+
+ )
+}
+
+function ActivityTab({ report }: { report: ExecutiveReport }) {
+ return (
+
+
Letzte Aktivitaeten
+ {report.recentActivity.length === 0 ? (
+
Keine Aktivitaeten vorhanden.
+ ) : (
+
+ {report.recentActivity.map((entry, i) => (
+
+
+
+
{entry.description}
+
+ {entry.module}
+ ·
+ {entry.action}
+ ·
+ {new Date(entry.timestamp).toLocaleString('de-DE')}
+
+
+
+ ))}
+
+ )}
+
+ )
+}
+
+// =============================================================================
+// MOCK DATA (used when backend is unavailable)
+// =============================================================================
+
+function getMockReport(): ExecutiveReport {
+ return {
+ generatedAt: new Date().toISOString(),
+ tenantId: 'demo',
+ complianceScore: 72,
+ dsgvo: {
+ processingActivities: 24,
+ activeProcessings: 18,
+ tomsImplemented: 31,
+ tomsPlanned: 7,
+ tomsTotal: 42,
+ completionPercent: 74,
+ openDSRs: 3,
+ overdueDSRs: 1,
+ dsfasCompleted: 4,
+ retentionPolicies: 12,
+ },
+ vendors: {
+ totalVendors: 15,
+ activeVendors: 12,
+ byRiskLevel: { LOW: 8, MEDIUM: 4, HIGH: 2, CRITICAL: 1 },
+ pendingReviews: 3,
+ expiredContracts: 1,
+ },
+ incidents: {
+ totalIncidents: 7,
+ openIncidents: 2,
+ criticalIncidents: 0,
+ notificationsPending: 0,
+ avgResolutionHours: 48.5,
+ },
+ whistleblower: {
+ totalReports: 4,
+ openReports: 1,
+ overdueAcknowledgments: 0,
+ overdueFeedbacks: 0,
+ avgResolutionDays: 21.3,
+ },
+ academy: {
+ totalCourses: 5,
+ totalEnrollments: 47,
+ completionRate: 68.5,
+ overdueCount: 4,
+ avgCompletionDays: 14.2,
+ },
+ riskOverview: {
+ overallLevel: 'MEDIUM',
+ moduleRisks: [
+ { module: 'DSGVO', level: 'MEDIUM', score: 74, issues: 8 },
+ { module: 'Lieferanten', level: 'HIGH', score: 55, issues: 5 },
+ { module: 'Vorfaelle', level: 'LOW', score: 85, issues: 2 },
+ { module: 'Hinweisgeberschutz', level: 'LOW', score: 90, issues: 1 },
+ { module: 'Schulungen', level: 'MEDIUM', score: 68, issues: 4 },
+ ],
+ openFindings: 12,
+ criticalFindings: 2,
+ },
+ upcomingDeadlines: [
+ { module: 'DSGVO', type: 'Betroffenenanfrage', description: 'Auskunftsersuchen Max Mustermann', dueDate: new Date(Date.now() + 2 * 86400000).toISOString(), daysLeft: 2, severity: 'URGENT' },
+ { module: 'Lieferanten', type: 'Vertragspruefung', description: 'AWS AVV-Erneuerung', dueDate: new Date(Date.now() + 14 * 86400000).toISOString(), daysLeft: 14, severity: 'WARNING' },
+ { module: 'Schulungen', type: 'Pflichtschulung', description: 'DSGVO-Jahresschulung Q1 2026', dueDate: new Date(Date.now() + 30 * 86400000).toISOString(), daysLeft: 30, severity: 'INFO' },
+ { module: 'Vorfaelle', type: 'Aufsichtsbehoerde', description: 'Meldung Datenpanne #7 an LfDI', dueDate: new Date(Date.now() - 1 * 86400000).toISOString(), daysLeft: -1, severity: 'OVERDUE' },
+ ],
+ recentActivity: [
+ { timestamp: new Date(Date.now() - 3600000).toISOString(), module: 'Academy', action: 'completed', description: 'IT-Sicherheitsschulung von Anna Mueller abgeschlossen' },
+ { timestamp: new Date(Date.now() - 7200000).toISOString(), module: 'Incidents', action: 'created', description: 'Neuer Vorfall: USB-Stick mit Kundendaten verloren' },
+ { timestamp: new Date(Date.now() - 86400000).toISOString(), module: 'DSGVO', action: 'updated', description: 'TOM IT-05 (Firewall-Policy) als umgesetzt markiert' },
+ { timestamp: new Date(Date.now() - 172800000).toISOString(), module: 'Vendors', action: 'reviewed', description: 'Lieferanten-Assessment: Mailchimp abgeschlossen' },
+ ],
+ }
+}
+
+// =============================================================================
+// MAIN COMPONENT
+// =============================================================================
+
+export default function ReportingPage() {
+ const { state } = useSDK()
+ const [activeTab, setActiveTab] = useState('overview')
+ const [report, setReport] = useState(null)
+ const [loading, setLoading] = useState(true)
+ const [error, setError] = useState(null)
+
+ useEffect(() => {
+ let cancelled = false
+
+ async function loadReport() {
+ setLoading(true)
+ setError(null)
+ try {
+ const data = await getExecutiveReport()
+ if (!cancelled) setReport(data)
+ } catch (err) {
+ console.warn('Backend nicht erreichbar, verwende Demo-Daten:', err)
+ if (!cancelled) setReport(getMockReport())
+ } finally {
+ if (!cancelled) setLoading(false)
+ }
+ }
+
+ loadReport()
+ return () => { cancelled = true }
+ }, [])
+
+ const tabs: Tab[] = [
+ { id: 'overview', label: 'Uebersicht' },
+ { id: 'risks', label: 'Risiken' },
+ { id: 'deadlines', label: 'Fristen' },
+ { id: 'modules', label: 'Module' },
+ { id: 'activity', label: 'Aktivitaeten' },
+ ]
+
+ return (
+
+
+
+
+
+ {loading ? (
+
+
+
Bericht wird generiert...
+
+ ) : report ? (
+ <>
+ {/* Generated timestamp */}
+
+ Generiert: {new Date(report.generatedAt).toLocaleString('de-DE')}
+
+
+ {activeTab === 'overview' &&
}
+ {activeTab === 'risks' &&
}
+ {activeTab === 'deadlines' &&
}
+ {activeTab === 'modules' &&
}
+ {activeTab === 'activity' &&
}
+ >
+ ) : (
+
+
Bericht konnte nicht geladen werden.
+ {error &&
{error}
}
+
+ )}
+
+ )
+}
diff --git a/admin-compliance/components/sdk/SDKPipelineSidebar/SDKPipelineSidebar.tsx b/admin-compliance/components/sdk/SDKPipelineSidebar/SDKPipelineSidebar.tsx
index e28d85d..ff97f9d 100644
--- a/admin-compliance/components/sdk/SDKPipelineSidebar/SDKPipelineSidebar.tsx
+++ b/admin-compliance/components/sdk/SDKPipelineSidebar/SDKPipelineSidebar.tsx
@@ -311,10 +311,8 @@ function SidebarContent({ onNavigate }: SidebarContentProps) {
{ href: '/sdk/academy', label: 'Academy', icon: '🎓' },
{ href: '/sdk/whistleblower', label: 'Whistleblower', icon: '📢' },
{ href: '/sdk/incidents', label: 'Incidents', icon: '🚨' },
- { href: '/sdk/dsb-portal', label: 'DSB Portal', icon: '👤' },
+ { href: '/sdk/reporting', label: 'Reporting', icon: '📈' },
{ href: '/sdk/industry-templates', label: 'Branchenvorlagen', icon: '🏢' },
- { href: '/sdk/multi-tenant', label: 'Multi-Tenant', icon: '👥' },
- { href: '/sdk/sso', label: 'SSO', icon: '🔑' },
{ href: '/sdk/document-crawler', label: 'Doc Crawler', icon: '📄' },
{ href: '/sdk/advisory-board', label: 'Beirat', icon: '💬' },
].map(mod => (
diff --git a/admin-compliance/components/sdk/Sidebar/SDKSidebar.tsx b/admin-compliance/components/sdk/Sidebar/SDKSidebar.tsx
index 531388e..dd8f7e3 100644
--- a/admin-compliance/components/sdk/Sidebar/SDKSidebar.tsx
+++ b/admin-compliance/components/sdk/Sidebar/SDKSidebar.tsx
@@ -550,15 +550,15 @@ export function SDKSidebar({ collapsed = false, onCollapsedChange }: SDKSidebarP
collapsed={collapsed}
/>
+ d="M9 19v-6a2 2 0 00-2-2H5a2 2 0 00-2 2v6a2 2 0 002 2h2a2 2 0 002-2zm0 0V9a2 2 0 012-2h2a2 2 0 012 2v10m-6 0a2 2 0 002 2h2a2 2 0 002-2m0 0V5a2 2 0 012-2h2a2 2 0 012 2v14a2 2 0 01-2 2h-2a2 2 0 01-2-2z" />
}
- label="DSB Portal"
- isActive={pathname === '/sdk/dsb-portal'}
+ label="Reporting"
+ isActive={pathname === '/sdk/reporting'}
collapsed={collapsed}
/>
-
-
-
- }
- label="Multi-Tenant"
- isActive={pathname === '/sdk/multi-tenant'}
- collapsed={collapsed}
- />
-
-
-
- }
- label="SSO"
- isActive={pathname === '/sdk/sso'}
- collapsed={collapsed}
- />
(path: string): Promise {
+ const res = await fetch(`${BASE_URL}${path}`, {
+ headers: {
+ 'Content-Type': 'application/json',
+ 'X-Tenant-ID': typeof window !== 'undefined'
+ ? (localStorage.getItem('bp-tenant-id') || 'default')
+ : 'default',
+ },
+ })
+
+ if (!res.ok) {
+ const error = await res.json().catch(() => ({ error: res.statusText }))
+ throw new Error(error.error || `API Error: ${res.status}`)
+ }
+
+ return res.json()
+}
+
+/**
+ * Vollstaendigen Executive Report abrufen
+ * GET /sdk/v1/reporting/executive
+ */
+export async function getExecutiveReport(): Promise {
+ return apiFetch('/executive')
+}
+
+/**
+ * Nur den Compliance-Score abrufen (leichtgewichtig)
+ * GET /sdk/v1/reporting/score
+ */
+export async function getComplianceScore(): Promise {
+ return apiFetch('/score')
+}
+
+/**
+ * Bevorstehende Fristen abrufen
+ * GET /sdk/v1/reporting/deadlines
+ */
+export async function getUpcomingDeadlines(): Promise<{ deadlines: Deadline[]; total: number }> {
+ return apiFetch<{ deadlines: Deadline[]; total: number }>('/deadlines')
+}
+
+/**
+ * Risikouebersicht abrufen
+ * GET /sdk/v1/reporting/risks
+ */
+export async function getRiskOverview(): Promise {
+ return apiFetch('/risks')
+}
diff --git a/admin-compliance/lib/sdk/reporting/index.ts b/admin-compliance/lib/sdk/reporting/index.ts
new file mode 100644
index 0000000..bcb2b00
--- /dev/null
+++ b/admin-compliance/lib/sdk/reporting/index.ts
@@ -0,0 +1,2 @@
+export * from './types'
+export * from './api'
diff --git a/admin-compliance/lib/sdk/reporting/types.ts b/admin-compliance/lib/sdk/reporting/types.ts
new file mode 100644
index 0000000..ac09e22
--- /dev/null
+++ b/admin-compliance/lib/sdk/reporting/types.ts
@@ -0,0 +1,168 @@
+/**
+ * Reporting Module Types
+ *
+ * TypeScript definitions for the Executive Reporting module.
+ * Provides compliance KPIs, risk overview, deadlines, and activity tracking
+ * for top management and compliance officers.
+ */
+
+// =============================================================================
+// RISK LEVELS
+// =============================================================================
+
+export type RiskLevel = 'LOW' | 'MEDIUM' | 'HIGH' | 'CRITICAL'
+export type DeadlineSeverity = 'INFO' | 'WARNING' | 'URGENT' | 'OVERDUE'
+
+export const RISK_LEVEL_INFO: Record = {
+ LOW: { label: 'Niedrig', color: 'text-green-700', bgColor: 'bg-green-100', borderColor: 'border-green-200' },
+ MEDIUM: { label: 'Mittel', color: 'text-yellow-700', bgColor: 'bg-yellow-100', borderColor: 'border-yellow-200' },
+ HIGH: { label: 'Hoch', color: 'text-orange-700', bgColor: 'bg-orange-100', borderColor: 'border-orange-200' },
+ CRITICAL: { label: 'Kritisch', color: 'text-red-700', bgColor: 'bg-red-100', borderColor: 'border-red-200' },
+}
+
+export const DEADLINE_SEVERITY_INFO: Record = {
+ INFO: { label: 'Info', color: 'text-blue-700', bgColor: 'bg-blue-100' },
+ WARNING: { label: 'Warnung', color: 'text-yellow-700', bgColor: 'bg-yellow-100' },
+ URGENT: { label: 'Dringend', color: 'text-orange-700', bgColor: 'bg-orange-100' },
+ OVERDUE: { label: 'Ueberfaellig', color: 'text-red-700', bgColor: 'bg-red-100' },
+}
+
+// =============================================================================
+// MODULE SUMMARIES
+// =============================================================================
+
+export interface DSGVOSummary {
+ processingActivities: number
+ activeProcessings: number
+ tomsImplemented: number
+ tomsPlanned: number
+ tomsTotal: number
+ completionPercent: number
+ openDSRs: number
+ overdueDSRs: number
+ dsfasCompleted: number
+ retentionPolicies: number
+}
+
+export interface VendorSummary {
+ totalVendors: number
+ activeVendors: number
+ byRiskLevel: Record
+ pendingReviews: number
+ expiredContracts: number
+}
+
+export interface IncidentSummary {
+ totalIncidents: number
+ openIncidents: number
+ criticalIncidents: number
+ notificationsPending: number
+ avgResolutionHours: number
+}
+
+export interface WhistleblowerSummary {
+ totalReports: number
+ openReports: number
+ overdueAcknowledgments: number
+ overdueFeedbacks: number
+ avgResolutionDays: number
+}
+
+export interface AcademySummary {
+ totalCourses: number
+ totalEnrollments: number
+ completionRate: number
+ overdueCount: number
+ avgCompletionDays: number
+}
+
+// =============================================================================
+// RISK & DEADLINES
+// =============================================================================
+
+export interface ModuleRisk {
+ module: string
+ level: RiskLevel
+ score: number
+ issues: number
+}
+
+export interface RiskOverview {
+ overallLevel: RiskLevel
+ moduleRisks: ModuleRisk[]
+ openFindings: number
+ criticalFindings: number
+}
+
+export interface Deadline {
+ module: string
+ type: string
+ description: string
+ dueDate: string
+ daysLeft: number
+ severity: DeadlineSeverity
+}
+
+export interface ActivityEntry {
+ timestamp: string
+ module: string
+ action: string
+ description: string
+ userId?: string
+}
+
+// =============================================================================
+// EXECUTIVE REPORT (Main Response)
+// =============================================================================
+
+export interface ExecutiveReport {
+ generatedAt: string
+ tenantId: string
+ complianceScore: number
+
+ dsgvo: DSGVOSummary
+ vendors: VendorSummary
+ incidents: IncidentSummary
+ whistleblower: WhistleblowerSummary
+ academy: AcademySummary
+
+ riskOverview: RiskOverview
+ upcomingDeadlines: Deadline[]
+ recentActivity: ActivityEntry[]
+}
+
+// =============================================================================
+// COMPACT SCORE RESPONSE
+// =============================================================================
+
+export interface ComplianceScoreResponse {
+ complianceScore: number
+ riskLevel: RiskLevel
+ generatedAt: string
+}
+
+// =============================================================================
+// HELPER FUNCTIONS
+// =============================================================================
+
+export function getRiskLevelInfo(level: RiskLevel) {
+ return RISK_LEVEL_INFO[level]
+}
+
+export function getDeadlineSeverityInfo(severity: DeadlineSeverity) {
+ return DEADLINE_SEVERITY_INFO[severity]
+}
+
+export function getScoreColor(score: number): string {
+ if (score >= 80) return 'text-green-600'
+ if (score >= 60) return 'text-yellow-600'
+ if (score >= 40) return 'text-orange-600'
+ return 'text-red-600'
+}
+
+export function getScoreBgColor(score: number): string {
+ if (score >= 80) return 'bg-green-500'
+ if (score >= 60) return 'bg-yellow-500'
+ if (score >= 40) return 'bg-orange-500'
+ return 'bg-red-500'
+}
diff --git a/docs-src/index.md b/docs-src/index.md
index 401148e..ccec2c3 100644
--- a/docs-src/index.md
+++ b/docs-src/index.md
@@ -4,8 +4,6 @@ Willkommen zur Dokumentation des **BreakPilot Compliance**-Stacks (Team B: DSGVO
## Drei-Projekt-Architektur
-BreakPilot besteht aus drei unabhaengigen Projekten:
-
| Projekt | Beschreibung | Docs |
|---------|-------------|------|
| **breakpilot-core** | Shared Infrastructure (DB, Cache, Vault, Nginx) | Port 8009 |
@@ -30,24 +28,38 @@ Compliance haengt von Core ab (PostgreSQL, Valkey, Vault, Qdrant, MinIO, Embeddi
---
-## SDK-Module
+## SDK-Module (Kundenbereich)
-Das AI Compliance SDK implementiert folgende DSGVO-Module:
+Module die Compliance-Kunden im SDK sehen und nutzen:
-| Modul | Beschreibung |
-|-------|--------------|
-| **TOM** | Technisch-Organisatorische Massnahmen |
-| **DSFA** | Datenschutz-Folgenabschaetzung |
-| **VVT** | Verzeichnis von Verarbeitungstaetigkeiten |
-| **Loeschfristen** | Loeschfristen-Verwaltung |
-| **AI Act Compliance** | KI-Verordnung Konformitaet |
-| **Consent Management** | Einwilligungs-Verwaltung |
-| **DSR** | Betroffenenrechte (Art. 15-21 DSGVO) |
-| **Academy** | Datenschutz-Schulungen |
-| **Whistleblower** | Hinweisgebersystem (HinSchG) |
-| **Incidents** | Datenschutz-Vorfaelle |
-| **Vendors** | Auftragsverarbeiter-Management |
-| **Reporting** | Compliance-Berichte |
+| Modul | Beschreibung | Frontend |
+|-------|--------------|----------|
+| **TOM** | Technisch-Organisatorische Massnahmen | /sdk/tom |
+| **DSFA** | Datenschutz-Folgenabschaetzung | /sdk/dsfa |
+| **VVT** | Verzeichnis von Verarbeitungstaetigkeiten | /sdk/vvt |
+| **Loeschfristen** | Loeschfristen-Verwaltung | /sdk/loeschfristen |
+| **AI Act Compliance** | KI-Verordnung Konformitaet | /sdk/ai-act |
+| **Consent Management** | Einwilligungs-Verwaltung | /sdk/einwilligungen |
+| **DSR** | Betroffenenrechte (Art. 15-21 DSGVO) | /sdk/dsr |
+| **Academy** | Datenschutz-Schulungen mit PDF-Zertifikaten | /sdk/academy |
+| **Whistleblower** | Hinweisgebersystem (HinSchG) | /sdk/whistleblower |
+| **Incidents** | Datenschutz-Vorfaelle (Art. 33/34 DSGVO) | /sdk/incidents |
+| **Vendors** | Auftragsverarbeiter-Management | /sdk/vendor-compliance |
+| **Reporting** | Compliance-Berichte fuer Top Management | /sdk/reporting |
+| **Industry Templates** | Branchenvorlagen (E-Commerce, Gesundheit, etc.) | /sdk/industry-templates |
+| **Document Crawler** | Automatisches Crawling von Rechtstexten | /sdk/document-crawler |
+| **Advisory Board** | KI-Compliance-Beirat | /sdk/advisory-board |
+
+## Admin-Module (Plattform-Verwaltung)
+
+Interne Tools fuer die BreakPilot-Plattformverwaltung:
+
+| Modul | Beschreibung | Frontend |
+|-------|--------------|----------|
+| **Katalogverwaltung** | SDK-Kataloge & Auswahltabellen | /dashboard/catalog-manager |
+| **Mandantenverwaltung** | B2B-Kundenverwaltung & Mandanten | /dashboard/multi-tenant |
+| **SSO-Konfiguration** | Single Sign-On & Authentifizierung | /dashboard/sso |
+| **DSB Portal** | Datenschutzbeauftragter-Arbeitsbereich | /dashboard/dsb-portal |
---
@@ -72,6 +84,21 @@ Das AI Compliance SDK implementiert folgende DSGVO-Module:
| https://macmini:3007/sdk/academy | Academy |
| https://macmini:3007/sdk/whistleblower | Whistleblower |
| https://macmini:3007/sdk/incidents | Incidents |
+| https://macmini:3007/sdk/reporting | Reporting |
+| https://macmini:3007/sdk/vendor-compliance | Vendor Compliance |
+| https://macmini:3007/sdk/industry-templates | Branchenvorlagen |
+| https://macmini:3007/sdk/document-crawler | Document Crawler |
+| https://macmini:3007/sdk/advisory-board | Advisory Board |
+
+### Admin-Module (Dashboard)
+
+| URL | Modul |
+|-----|-------|
+| https://macmini:3007/dashboard | Dashboard |
+| https://macmini:3007/dashboard/catalog-manager | Katalogverwaltung |
+| https://macmini:3007/dashboard/multi-tenant | Mandantenverwaltung |
+| https://macmini:3007/dashboard/sso | SSO-Konfiguration |
+| https://macmini:3007/dashboard/dsb-portal | DSB Portal |
---
@@ -104,6 +131,12 @@ Compliance-Services nutzen folgende Core-Infrastruktur:
- [Academy](services/sdk-modules/academy.md)
- [Whistleblower](services/sdk-modules/whistleblower.md)
- [Incidents](services/sdk-modules/incidents.md)
+ - [Reporting](services/sdk-modules/reporting.md)
+ - [Vendors](services/sdk-modules/vendors.md)
+ - [Industry Templates](services/sdk-modules/industry-templates.md)
+ - [Document Crawler](services/sdk-modules/document-crawler.md)
+ - [Advisory Board](services/sdk-modules/advisory-board.md)
+ - [DSB Portal](services/sdk-modules/dsb-portal.md)
## Entwicklung
diff --git a/docs-src/services/sdk-modules/academy.md b/docs-src/services/sdk-modules/academy.md
index b570cf1..7e68056 100644
--- a/docs-src/services/sdk-modules/academy.md
+++ b/docs-src/services/sdk-modules/academy.md
@@ -5,9 +5,23 @@ Das Academy-Modul ermoeglicht die Verwaltung von Datenschutz-Schulungen und -Zer
## Features
- **Kursverwaltung** — DSGVO-, KI- und branchenspezifische Schulungskurse erstellen und verwalten
-- **Modulare Struktur** — Kurse bestehen aus Modulen mit Lektionen und Quizzes
-- **Teilnehmer-Tracking** — Fortschritt, Abschlussquoten und Zertifikatsverwaltung
-- **Compliance-Nachweis** — Automatische Generierung von Schulungsnachweisen fuer Audits
+- **KI-Kursgenerierung** — Automatische Generierung von Schulungsinhalten ueber Claude API mit RAG-Kontext
+- **Modulare Struktur** — Kurse bestehen aus Lektionen (Text, Video, Quiz) in konfigurierbarer Reihenfolge
+- **Quiz-Auswertung** — Serverseitige Auswertung von Multiple-Choice-Quizfragen mit Bestehensgrenze
+- **Teilnehmer-Tracking** — Fortschritt, Abschlussquoten und Fristenueberwachung
+- **PDF-Zertifikate** — Automatische Generierung von Schulungszertifikaten als PDF (Name, Kurs, Datum, Score, Gueltigkeit)
+- **Video-Generierung** — Optional: KI-generierte Schulungsvideos mit ElevenLabs (TTS) und HeyGen (Avatar)
+- **Compliance-Nachweis** — Zertifikate als Audit-Nachweis gemaess Art. 5 Abs. 2 DSGVO
+
+## Rechtsgrundlage
+
+| Vorschrift | Anforderung |
+|-----------|-------------|
+| DSGVO Art. 39 Abs. 1 lit. b | DSB muss Schulung und Sensibilisierung ueberwachen |
+| DSGVO Art. 5 Abs. 2 | Rechenschaftspflicht — Schulungen dokumentieren und nachweisen |
+| EU AI Act Art. 4 | AI-Literacy-Schulung fuer KI-Nutzer ab 2026 |
+| HinSchG | Schulung zu Meldewegen und Hinweisgeberschutz |
+| NIS2 | Cybersecurity-Schulungen fuer kritische Infrastruktur |
## API Endpoints
@@ -17,14 +31,18 @@ Alle unter `/api/v1/academy/`, benoetigen `X-Tenant-ID` Header.
|--------|----------|-------------|
| GET | `/courses` | Kurse auflisten |
| POST | `/courses` | Neuen Kurs erstellen |
-| GET | `/courses/{id}` | Kursdetails |
+| GET | `/courses/{id}` | Kursdetails mit Lektionen |
| PUT | `/courses/{id}` | Kurs aktualisieren |
| DELETE | `/courses/{id}` | Kurs loeschen |
-| GET | `/courses/{id}/modules` | Module eines Kurses |
-| POST | `/courses/{id}/enroll` | Teilnehmer einschreiben |
+| GET | `/statistics` | Dashboard-Statistiken |
| GET | `/enrollments` | Einschreibungen auflisten |
-| POST | `/enrollments/{id}/complete` | Modul als abgeschlossen markieren |
-| GET | `/certificates` | Zertifikate auflisten |
+| POST | `/enrollments` | Mitarbeiter einschreiben |
+| PUT | `/enrollments/{id}/progress` | Fortschritt aktualisieren |
+| POST | `/enrollments/{id}/complete` | Kurs abschliessen |
+| POST | `/lessons/{id}/quiz` | Quiz-Antworten einreichen |
+| POST | `/enrollments/{id}/certificate` | PDF-Zertifikat generieren |
+| GET | `/certificates/{id}` | Zertifikat-Details |
+| GET | `/certificates/{id}/pdf` | PDF herunterladen |
## Frontend
@@ -32,4 +50,4 @@ Seite unter `/sdk/academy` mit Kursuebersicht, Modulverwaltung und Teilnehmer-Tr
## Datenbank
-Migration `008_academy_schema.sql` erstellt Tabellen fuer Kurse, Module, Einschreibungen und Zertifikate.
+Migration `008_academy_schema.sql` erstellt Tabellen fuer Kurse, Lektionen, Quizfragen, Einschreibungen, Lektionsfortschritt und Zertifikate.
diff --git a/docs-src/services/sdk-modules/advisory-board.md b/docs-src/services/sdk-modules/advisory-board.md
new file mode 100644
index 0000000..3cba667
--- /dev/null
+++ b/docs-src/services/sdk-modules/advisory-board.md
@@ -0,0 +1,18 @@
+# Compliance-Beirat — Advisory Board
+
+Virtueller Compliance-Beirat mit KI-Experten fuer Einschaetzungen zu komplexen Fragestellungen.
+
+## Features
+
+- **Expertengremium** — Simulierte Experten aus Datenschutzrecht, IT-Sicherheit, KI-Ethik und Branchenregulierung
+- **Konsultationen** — Strukturierte Fragestellungen mit mehrseitiger Analyse
+- **Dokumentation** — Beratungsergebnisse als Nachweis fuer Audits speicherbar
+- **Kontextbezogen** — Beirat beruecksichtigt Unternehmensprofil, Branche und bestehende Compliance-Daten
+
+## Frontend
+
+Seite unter `/sdk/advisory-board` mit Chat-Interface und Experten-Auswahl. Dokumentation unter `/sdk/advisory-board/documentation`.
+
+## Hinweis
+
+Der KI-Beirat ersetzt keine professionelle Rechtsberatung. Bei kritischen Entscheidungen sollte stets ein Fachanwalt hinzugezogen werden.
diff --git a/docs-src/services/sdk-modules/document-crawler.md b/docs-src/services/sdk-modules/document-crawler.md
new file mode 100644
index 0000000..22aee3c
--- /dev/null
+++ b/docs-src/services/sdk-modules/document-crawler.md
@@ -0,0 +1,32 @@
+# Document Crawler — Dokumentenanalyse
+
+Automatische Erfassung und Analyse von Compliance-Dokumenten auf Webseiten und in Dateisystemen.
+
+## Features
+
+- **Web-Crawling** — Automatisches Scannen von Webseiten nach Datenschutzerklaerungen, Impressum und Cookie-Bannern
+- **Dokumentenanalyse** — KI-gestuetzte Pruefung auf Vollstaendigkeit und Aktualitaet
+- **DSGVO-Check** — Automatische Pruefung gegen Pflichtangaben (Art. 13/14 DSGVO)
+- **Monitoring** — Regelmaessige Ueberpruefung mit Benachrichtigung bei Aenderungen
+- **Quellen-Verwaltung** — Konfigurierbare Crawl-Ziele und Zeitplaene
+
+## API Endpoints
+
+Alle unter `/api/v1/crawler/`, benoetigen `X-Tenant-ID` Header.
+
+| Method | Endpoint | Beschreibung |
+|--------|----------|-------------|
+| GET | `/jobs` | Crawl-Jobs auflisten |
+| POST | `/jobs` | Neuen Crawl-Job starten |
+| GET | `/jobs/{id}` | Job-Status |
+| GET | `/results` | Crawl-Ergebnisse |
+| GET | `/results/{id}` | Einzelnes Ergebnis |
+| POST | `/results/{id}/analyze` | KI-Analyse starten |
+
+## Frontend
+
+Seite unter `/sdk/document-crawler` mit Job-Verwaltung, Ergebnis-Uebersicht und Analyse-Detail.
+
+## Datenbank
+
+Migration in der AI Compliance SDK erstellt Tabellen fuer Crawl-Jobs, Ergebnisse und Analysen.
diff --git a/docs-src/services/sdk-modules/dsb-portal.md b/docs-src/services/sdk-modules/dsb-portal.md
new file mode 100644
index 0000000..f006286
--- /dev/null
+++ b/docs-src/services/sdk-modules/dsb-portal.md
@@ -0,0 +1,34 @@
+# DSB Portal — Datenschutzbeauftragter
+
+Zentraler Arbeitsbereich fuer den Datenschutzbeauftragten (DSB) gemaess Art. 37-39 DSGVO.
+
+## Features
+
+- **Aufgabenuebersicht** — Offene Aufgaben, faellige Pruefungen und Beratungsanfragen
+- **Beratungsprotokolle** — Dokumentation aller Beratungstaetigkeiten fuer die Rechenschaftspflicht
+- **Taetigkeitsberichte** — Automatische Generierung strukturierter Berichte
+- **Schulungsuebersicht** — Status der Mitarbeiterschulungen (verknuepft mit Academy)
+- **Compliance-Dashboard** — Aktuelle Risiken, offene Vorfaelle und DSR-Anfragen
+
+## API Endpoints
+
+Alle unter `/api/v1/dsb/`, benoetigen `X-Tenant-ID` Header.
+
+| Method | Endpoint | Beschreibung |
+|--------|----------|-------------|
+| GET | `/tasks` | Offene Aufgaben auflisten |
+| POST | `/tasks` | Neue Aufgabe erstellen |
+| PUT | `/tasks/{id}` | Aufgabe aktualisieren |
+| GET | `/consultations` | Beratungsprotokolle auflisten |
+| POST | `/consultations` | Neues Beratungsprotokoll |
+| GET | `/reports` | Taetigkeitsberichte auflisten |
+| POST | `/reports/generate` | Taetigkeitsbericht generieren |
+| GET | `/dashboard` | Dashboard-Metriken |
+
+## Frontend
+
+Seite unter `/sdk/dsb-portal` mit Aufgaben-Board, Beratungsprotokoll-Editor und Dashboard-Widgets.
+
+## Datenbank
+
+Migration in der AI Compliance SDK erstellt Tabellen fuer DSB-Aufgaben, Beratungsprotokolle und Berichte.
diff --git a/docs-src/services/sdk-modules/industry-templates.md b/docs-src/services/sdk-modules/industry-templates.md
new file mode 100644
index 0000000..c957d2d
--- /dev/null
+++ b/docs-src/services/sdk-modules/industry-templates.md
@@ -0,0 +1,29 @@
+# Branchenvorlagen — Industry Templates
+
+Vorkonfigurierte Compliance-Pakete fuer verschiedene Branchen.
+
+## Features
+
+- **Branchenauswahl** — Vordefinierte Templates fuer Gesundheitswesen, Finanzwesen, E-Commerce, SaaS, Bildung u.a.
+- **Automatische Konfiguration** — Templates befuellen VVT, TOMs, Risiko-Matrix und Loeschfristen branchenspezifisch
+- **Regulierungserkennung** — Automatische Identifikation relevanter Regulierungen je Branche
+- **Anpassbar** — Templates als Ausgangsbasis, individuell erweiterbar
+
+## API Endpoints
+
+Alle unter `/api/v1/industry/`, benoetigen `X-Tenant-ID` Header.
+
+| Method | Endpoint | Beschreibung |
+|--------|----------|-------------|
+| GET | `/templates` | Verfuegbare Branchenvorlagen auflisten |
+| GET | `/templates/{id}` | Vorlagendetails |
+| POST | `/templates/{id}/apply` | Vorlage auf Tenant anwenden |
+| GET | `/regulations` | Branchenspezifische Regulierungen |
+
+## Frontend
+
+Seite unter `/sdk/industry-templates` mit Branchenauswahl-Karten und Vorschau der enthaltenen Konfiguration.
+
+## Datenbank
+
+Templates werden als JSON-Konfigurationsdateien im Backend verwaltet, nicht in der Datenbank.
diff --git a/docs-src/services/sdk-modules/reporting.md b/docs-src/services/sdk-modules/reporting.md
new file mode 100644
index 0000000..8ed1c45
--- /dev/null
+++ b/docs-src/services/sdk-modules/reporting.md
@@ -0,0 +1,52 @@
+# Reporting — Management-Berichte
+
+Das Reporting-Modul liefert aggregierte Compliance-KPIs und Berichte fuer das Top Management.
+
+## Features
+
+- **Executive Dashboard** — Compliance-Score, Risikobewertung und Fristenuebersicht auf einen Blick
+- **Modul-Aggregation** — Daten aus DSGVO, Lieferanten, Vorfaelle, Hinweisgebersystem und Schulungen
+- **Risikobewertung** — Gesamt-Risikolevel und Aufschluesselung nach Modulen
+- **Fristenverwaltung** — Moduluebergreifende Fristen mit Severity (Info, Warnung, Dringend, Ueberfaellig)
+- **Aktivitaetsprotokoll** — Letzte Compliance-Aktivitaeten ueber alle Module
+
+## Rechtsgrundlage
+
+- **Art. 5 Abs. 2 DSGVO** — Rechenschaftspflicht: Compliance muss dokumentiert und nachgewiesen werden
+- **Art. 24 DSGVO** — Verantwortung des Verantwortlichen: geeignete Massnahmen nachweisen
+- **Art. 39 DSGVO** — Taetigkeitsbericht des DSB basiert auf diesen Daten
+
+## API Endpoints
+
+Alle unter `/api/v1/reporting/`, benoetigen `X-Tenant-ID` Header.
+
+| Method | Endpoint | Beschreibung |
+|--------|----------|-------------|
+| GET | `/executive` | Vollstaendiger Executive Report |
+| GET | `/score` | Nur Compliance-Score (leichtgewichtig) |
+| GET | `/deadlines` | Bevorstehende Fristen |
+| GET | `/risks` | Risikouebersicht |
+
+## Frontend
+
+Seite unter `/sdk/reporting` mit:
+
+- Compliance-Score-Kreis (0-100%)
+- KPI-Karten (Verarbeitungen, TOMs, DSRs, Vorfaelle, Schulungsrate, Lieferanten)
+- Risikotabelle nach Modulen
+- Fristenliste mit Severity-Badges
+- Modul-Detail-Ansichten (DSGVO, Vendors, Incidents, Whistleblower, Academy)
+- Aktivitaetsprotokoll
+
+## Datenmodell
+
+Der Executive Report aggregiert Daten aus allen Modulen:
+
+- `DSGVOSummary` — Verarbeitungen, TOMs, DSRs, DSFAs, Loeschfristen
+- `VendorSummary` — Lieferanten nach Risiko, ausstehende Pruefungen
+- `IncidentSummary` — Offene/kritische Vorfaelle, Benachrichtigungen
+- `WhistleblowerSummary` — Meldungen, ueberfaellige Fristen
+- `AcademySummary` — Kurse, Einschreibungen, Abschlussrate
+- `RiskOverview` — Gesamt-Risikolevel, Findings nach Modul
+- `Deadline[]` — Moduluebergreifende Fristen
+- `ActivityEntry[]` — Letzte Aktivitaeten
diff --git a/docs-src/services/sdk-modules/vendors.md b/docs-src/services/sdk-modules/vendors.md
new file mode 100644
index 0000000..201a80a
--- /dev/null
+++ b/docs-src/services/sdk-modules/vendors.md
@@ -0,0 +1,34 @@
+# Vendors — Auftragsverarbeiter-Management
+
+Verwaltung von Auftragsverarbeitern und Unterauftragsverarbeitern gemaess Art. 28 DSGVO.
+
+## Features
+
+- **Vendor-Verzeichnis** — Zentrale Uebersicht aller Auftragsverarbeiter
+- **Risikobewertung** — Automatische Risikoeinstufung basierend auf Datenkategorien und Drittlandtransfers
+- **Vertragsmanagement** — AVV-Pruefung mit KI-gestuetzter Klauselanalyse
+- **TOM-Abgleich** — Vergleich der Lieferanten-TOMs mit eigenen Anforderungen
+- **Audit-Trail** — Dokumentation aller Pruefungen und Aenderungen
+
+## API Endpoints
+
+Alle unter `/api/v1/vendors/`, benoetigen `X-Tenant-ID` Header.
+
+| Method | Endpoint | Beschreibung |
+|--------|----------|-------------|
+| GET | `/vendors` | Vendors auflisten |
+| POST | `/vendors` | Neuen Vendor anlegen |
+| GET | `/vendors/{id}` | Vendor-Details |
+| PUT | `/vendors/{id}` | Vendor aktualisieren |
+| DELETE | `/vendors/{id}` | Vendor loeschen |
+| POST | `/vendors/{id}/assess` | Risikobewertung durchfuehren |
+| GET | `/vendors/{id}/contracts` | Vertraege auflisten |
+| POST | `/vendors/{id}/contracts` | AVV hochladen |
+
+## Frontend
+
+Seite unter `/sdk/vendor-compliance` mit Vendor-Tabelle, Risiko-Matrix und Vertragsmanagement.
+
+## Datenbank
+
+Migration in der AI Compliance SDK erstellt Tabellen fuer Vendors, Risikobewertungen, Vertraege und AVV-Klauseln.
diff --git a/mkdocs.yml b/mkdocs.yml
index 97ec9b3..158c98f 100644
--- a/mkdocs.yml
+++ b/mkdocs.yml
@@ -68,6 +68,12 @@ nav:
- Academy: services/sdk-modules/academy.md
- Whistleblower: services/sdk-modules/whistleblower.md
- Incidents: services/sdk-modules/incidents.md
+ - Reporting: services/sdk-modules/reporting.md
+ - Vendors: services/sdk-modules/vendors.md
+ - Industry Templates: services/sdk-modules/industry-templates.md
+ - Document Crawler: services/sdk-modules/document-crawler.md
+ - Advisory Board: services/sdk-modules/advisory-board.md
+ - DSB Portal: services/sdk-modules/dsb-portal.md
- Entwicklung:
- Testing: development/testing.md
- Dokumentation: development/documentation.md