fix: add missing STEP_EXPLANATIONS and sidebar entries for new SDK modules

Add STEP_EXPLANATIONS for academy, whistleblower, incidents, dsb-portal,
industry-templates, multi-tenant, sso, document-crawler, advisory-board
to fix client-side crashes. Add all new modules to Zusatzmodule section
in both SDKSidebar and SDKPipelineSidebar (FAB).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Benjamin Boenisch
2026-02-14 22:46:12 +01:00
parent f358c1d6e6
commit f1b9e585e6
3 changed files with 300 additions and 0 deletions

View File

@@ -296,6 +296,45 @@ function SidebarContent({ onNavigate }: SidebarContentProps) {
{/* Pipeline Flow */}
<PipelineFlow />
{/* Zusatzmodule */}
<div className="pt-3 border-t border-slate-200 dark:border-gray-700">
<div className="text-xs font-medium text-slate-500 dark:text-slate-400 mb-2 px-1">
Zusatzmodule
</div>
<div className="space-y-1">
{[
{ href: '/sdk/rag', label: 'Legal RAG', icon: '🔍' },
{ href: '/sdk/quality', label: 'AI Quality', icon: '✅' },
{ href: '/sdk/security-backlog', label: 'Security Backlog', icon: '⚠️' },
{ href: '/sdk/compliance-hub', label: 'Compliance Hub', icon: '📊' },
{ href: '/sdk/dsms', label: 'DSMS', icon: '🛡️' },
{ 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/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 => (
<Link
key={mod.href}
href={mod.href}
onClick={onNavigate}
className={`flex items-center gap-2 px-3 py-1.5 rounded-lg text-sm transition-colors ${
pathname === mod.href
? 'bg-purple-100 dark:bg-purple-900/30 text-purple-700 dark:text-purple-300 font-medium'
: 'text-slate-600 dark:text-slate-400 hover:bg-slate-100 dark:hover:bg-gray-800'
}`}
>
<span className="text-base">{mod.icon}</span>
<span className="truncate">{mod.label}</span>
</Link>
))}
</div>
</div>
{/* Quick Info */}
{currentStep && (
<div className="pt-3 border-t border-slate-200 dark:border-gray-700">

View File

@@ -513,6 +513,114 @@ export function SDKSidebar({ collapsed = false, onCollapsedChange }: SDKSidebarP
isActive={pathname === '/sdk/dsms'}
collapsed={collapsed}
/>
<AdditionalModuleItem
href="/sdk/academy"
icon={
<svg className="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2}
d="M12 14l9-5-9-5-9 5 9 5zm0 0l6.16-3.422a12.083 12.083 0 01.665 6.479A11.952 11.952 0 0012 20.055a11.952 11.952 0 00-6.824-2.998 12.078 12.078 0 01.665-6.479L12 14zm-4 6v-7.5l4-2.222" />
</svg>
}
label="Academy"
isActive={pathname === '/sdk/academy'}
collapsed={collapsed}
/>
<AdditionalModuleItem
href="/sdk/whistleblower"
icon={
<svg className="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2}
d="M11 5.882V19.24a1.76 1.76 0 01-3.417.592l-2.147-6.15M18 13a3 3 0 100-6M5.436 13.683A4.001 4.001 0 017 6h1.832c4.1 0 7.625-1.234 9.168-3v14c-1.543-1.766-5.067-3-9.168-3H7a3.988 3.988 0 01-1.564-.317z" />
</svg>
}
label="Whistleblower"
isActive={pathname === '/sdk/whistleblower'}
collapsed={collapsed}
/>
<AdditionalModuleItem
href="/sdk/incidents"
icon={
<svg className="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2}
d="M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z" />
</svg>
}
label="Incidents"
isActive={pathname === '/sdk/incidents'}
collapsed={collapsed}
/>
<AdditionalModuleItem
href="/sdk/dsb-portal"
icon={
<svg className="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2}
d="M16 7a4 4 0 11-8 0 4 4 0 018 0zM12 14a7 7 0 00-7 7h14a7 7 0 00-7-7z" />
</svg>
}
label="DSB Portal"
isActive={pathname === '/sdk/dsb-portal'}
collapsed={collapsed}
/>
<AdditionalModuleItem
href="/sdk/industry-templates"
icon={
<svg className="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2}
d="M19 21V5a2 2 0 00-2-2H7a2 2 0 00-2 2v16m14 0h2m-2 0h-5m-9 0H3m2 0h5M9 7h1m-1 4h1m4-4h1m-1 4h1m-5 10v-5a1 1 0 011-1h2a1 1 0 011 1v5m-4 0h4" />
</svg>
}
label="Branchenvorlagen"
isActive={pathname === '/sdk/industry-templates'}
collapsed={collapsed}
/>
<AdditionalModuleItem
href="/sdk/multi-tenant"
icon={
<svg className="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2}
d="M17 20h5v-2a3 3 0 00-5.356-1.857M17 20H7m10 0v-2c0-.656-.126-1.283-.356-1.857M7 20H2v-2a3 3 0 015.356-1.857M7 20v-2c0-.656.126-1.283.356-1.857m0 0a5.002 5.002 0 019.288 0M15 7a3 3 0 11-6 0 3 3 0 016 0zm6 3a2 2 0 11-4 0 2 2 0 014 0zM7 10a2 2 0 11-4 0 2 2 0 014 0z" />
</svg>
}
label="Multi-Tenant"
isActive={pathname === '/sdk/multi-tenant'}
collapsed={collapsed}
/>
<AdditionalModuleItem
href="/sdk/sso"
icon={
<svg className="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2}
d="M15 7a2 2 0 012 2m4 0a6 6 0 01-7.743 5.743L11 17H9v2H7v2H4a1 1 0 01-1-1v-2.586a1 1 0 01.293-.707l5.964-5.964A6 6 0 1121 9z" />
</svg>
}
label="SSO"
isActive={pathname === '/sdk/sso'}
collapsed={collapsed}
/>
<AdditionalModuleItem
href="/sdk/document-crawler"
icon={
<svg className="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2}
d="M10 21h7a2 2 0 002-2V9.414a1 1 0 00-.293-.707l-5.414-5.414A1 1 0 0012.586 3H7a2 2 0 00-2 2v11m0 5l4.879-4.879m0 0a3 3 0 104.243-4.242 3 3 0 00-4.243 4.242z" />
</svg>
}
label="Doc Crawler"
isActive={pathname === '/sdk/document-crawler'}
collapsed={collapsed}
/>
<AdditionalModuleItem
href="/sdk/advisory-board"
icon={
<svg className="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2}
d="M8 12h.01M12 12h.01M16 12h.01M21 12c0 4.418-4.03 8-9 8a9.863 9.863 0 01-4.255-.949L3 20l1.395-3.72C3.512 15.042 3 13.574 3 12c0-4.418 4.03-8 9-8s9 3.582 9 8z" />
</svg>
}
label="Beirat"
isActive={pathname === '/sdk/advisory-board'}
collapsed={collapsed}
/>
</div>
</nav>

View File

@@ -781,6 +781,159 @@ export const STEP_EXPLANATIONS = {
},
],
},
'academy': {
title: 'Compliance Academy',
description: 'E-Learning-Plattform fuer Mitarbeiterschulungen',
explanation: 'Die Compliance Academy ermoeglicht KI-generierte Schulungsvideos mit interaktiven Quizfragen und PDF-Zertifikaten. Unternehmen muessen Mitarbeiter regelmaessig in Datenschutz, IT-Sicherheit und KI-Kompetenz schulen (DSGVO Art. 39 Abs. 1 lit. b, EU AI Act Art. 4).',
tips: [
{
icon: 'info' as const,
title: 'Schulungspflicht',
description: 'DSGVO Art. 39 Abs. 1 lit. b verpflichtet den DSB zur Sensibilisierung und Schulung aller Mitarbeiter.',
},
{
icon: 'lightbulb' as const,
title: 'Zertifikate',
description: 'Schulungszertifikate dienen als Audit-Nachweis. Sie dokumentieren Teilnahme, Testergebnis und Gueltigkeit.',
},
],
},
'whistleblower': {
title: 'Hinweisgebersystem',
description: 'Meldestelle gemaess Hinweisgeberschutzgesetz (HinSchG)',
explanation: 'Das Hinweisgebersystem bietet eine sichere, anonyme Meldestelle fuer Compliance-Verstoesse gemaess dem Hinweisgeberschutzgesetz (HinSchG). Unternehmen ab 50 Mitarbeitern sind zur Einrichtung verpflichtet.',
tips: [
{
icon: 'warning' as const,
title: 'Pflicht ab 50 MA',
description: 'Seit Juli 2023 muessen Unternehmen ab 50 Mitarbeitern eine interne Meldestelle einrichten (HinSchG §12).',
},
{
icon: 'info' as const,
title: 'Anonymitaet',
description: 'Die Identitaet des Hinweisgebers muss geschuetzt werden. Repressalien gegen Hinweisgeber sind verboten.',
},
],
},
'incidents': {
title: 'Vorfallmanagement',
description: 'Erfassung und Nachverfolgung von Compliance-Vorfaellen',
explanation: 'Das Vorfallmanagement dokumentiert Compliance-Vorfaelle, Datenpannen und Sicherheitsereignisse. Es unterstuetzt die Meldepflicht nach Art. 33/34 DSGVO und die systematische Ursachenanalyse.',
tips: [
{
icon: 'warning' as const,
title: '72-Stunden-Frist',
description: 'Datenpannen muessen innerhalb von 72 Stunden an die Aufsichtsbehoerde gemeldet werden (Art. 33 DSGVO).',
},
{
icon: 'info' as const,
title: 'Klassifizierung',
description: 'Vorfaelle werden nach Schweregrad klassifiziert: Niedrig, Mittel, Hoch, Kritisch. Die Klassifizierung bestimmt die Eskalationswege.',
},
],
},
'dsb-portal': {
title: 'DSB Portal',
description: 'Arbeitsbereich fuer den Datenschutzbeauftragten',
explanation: 'Das DSB Portal bietet dem Datenschutzbeauftragten einen zentralen Arbeitsbereich mit Aufgabenuebersicht, Beratungsprotokollen und Taetigkeitsberichten. Es unterstuetzt die Aufgaben nach Art. 39 DSGVO.',
tips: [
{
icon: 'info' as const,
title: 'Taetigkeitsbericht',
description: 'Der DSB muss regelmaessig ueber seine Taetigkeiten berichten. Das Portal generiert strukturierte Berichte.',
},
{
icon: 'lightbulb' as const,
title: 'Beratungsprotokolle',
description: 'Dokumentieren Sie alle Beratungen, um die Rechenschaftspflicht zu erfuellen.',
},
],
},
'industry-templates': {
title: 'Branchenvorlagen',
description: 'Branchenspezifische Compliance-Vorlagen und Best Practices',
explanation: 'Branchenvorlagen bieten vorkonfigurierte Compliance-Pakete fuer verschiedene Branchen (Gesundheitswesen, Finanzwesen, E-Commerce etc.). Sie enthalten typische Verarbeitungen, Risiken und Massnahmen.',
tips: [
{
icon: 'lightbulb' as const,
title: 'Schnellstart',
description: 'Branchenvorlagen beschleunigen die Ersteinrichtung erheblich. Sie koennen spaeter individuell angepasst werden.',
},
{
icon: 'info' as const,
title: 'Branchenstandards',
description: 'Templates beruecksichtigen branchenspezifische Regulierungen wie PCI-DSS (Finanzen) oder Patientendatenschutz (Gesundheit).',
},
],
},
'multi-tenant': {
title: 'Multi-Tenant Verwaltung',
description: 'Mandantenverwaltung fuer mehrere Unternehmen oder Standorte',
explanation: 'Die Multi-Tenant Verwaltung ermoeglicht die zentrale Steuerung mehrerer Mandanten (Tochtergesellschaften, Standorte, Kunden). Jeder Mandant hat eigene Compliance-Daten, kann aber zentral verwaltet werden.',
tips: [
{
icon: 'info' as const,
title: 'Datentrennung',
description: 'Mandantendaten sind strikt getrennt. Nur der uebergeordnete Administrator kann mandantenuebergreifend auswerten.',
},
{
icon: 'lightbulb' as const,
title: 'Template-Vererbung',
description: 'Richtlinien und Vorlagen koennen zentral erstellt und an Mandanten vererbt werden.',
},
],
},
'sso': {
title: 'Single Sign-On',
description: 'SSO-Integration und Authentifizierung verwalten',
explanation: 'Die SSO-Konfiguration ermoeglicht die Integration mit Ihrem Identity Provider (SAML, OIDC). Mitarbeiter koennen sich mit ihren bestehenden Unternehmens-Credentials anmelden.',
tips: [
{
icon: 'info' as const,
title: 'Unterstuetzte Protokolle',
description: 'SAML 2.0 und OpenID Connect (OIDC) werden unterstuetzt. Die gaengigsten IdPs (Azure AD, Okta, Google) sind vorkonfiguriert.',
},
{
icon: 'warning' as const,
title: 'Sicherheit',
description: 'SSO reduziert das Risiko schwacher Passwoerter und ermoeglicht zentrale Zugriffskontrolle.',
},
],
},
'document-crawler': {
title: 'Dokumenten-Crawler',
description: 'Automatische Erfassung und Analyse von Compliance-Dokumenten',
explanation: 'Der Dokumenten-Crawler durchsucht Ihre Systeme automatisch nach relevanten Compliance-Dokumenten (Datenschutzerklaerungen, Vertraege, Richtlinien) und analysiert deren Aktualitaet und Vollstaendigkeit.',
tips: [
{
icon: 'lightbulb' as const,
title: 'Automatisierung',
description: 'Der Crawler erkennt veraltete Dokumente und fehlende Pflichtangaben automatisch.',
},
{
icon: 'info' as const,
title: 'Quellen',
description: 'Unterstuetzt Webseiten, SharePoint, Confluence und lokale Dateisysteme als Datenquellen.',
},
],
},
'advisory-board': {
title: 'Compliance-Beirat',
description: 'Virtueller Compliance-Beirat mit KI-Experten',
explanation: 'Der Compliance-Beirat simuliert ein Expertengremium aus verschiedenen Fachrichtungen (Datenschutzrecht, IT-Sicherheit, KI-Ethik). Holen Sie sich Einschaetzungen zu komplexen Compliance-Fragen.',
tips: [
{
icon: 'lightbulb' as const,
title: 'Zweitmeinung',
description: 'Nutzen Sie den Beirat fuer eine zweite Einschaetzung bei schwierigen Compliance-Entscheidungen.',
},
{
icon: 'warning' as const,
title: 'Kein Rechtsersatz',
description: 'Der KI-Beirat ersetzt keine professionelle Rechtsberatung. Bei kritischen Entscheidungen ziehen Sie einen Anwalt hinzu.',
},
],
},
}
export default StepHeader