- flow-data.ts: Profil-Summary und Use-Case-Wizard-Details dokumentiert - stammdaten.md: Step 99 Summary-Seite dokumentiert, Dokumente-generieren entfernt - vorbereitung-module.md: UCCA 8-Schritte-Wizard mit Kachel-UI dokumentiert Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
10 KiB
Vorbereitung-Module (Paket 1)
Die drei Vorbereitung-Module bilden die Grundlage des SDK-Workflows. Sie erfassen das Unternehmensprofil, bestimmen den passenden Compliance-Umfang und bewerten konkrete KI/Daten-Anwendungsfälle.
| Modul | Code | Route | Backend |
|---|---|---|---|
| Company Profile | CP-PROF | /sdk/company-profile |
FastAPI backend-compliance |
| Compliance Scope | CP-SCOPE | /sdk/compliance-scope |
FastAPI backend-compliance |
| Use-Case Assessment | CP-UC | /sdk/use-cases |
Go ai-compliance-sdk |
Profil — company-profile (CP-PROF)
Übersicht
8-Schritt-Wizard (+ Summary-Step 99) zur Erfassung des vollständigen Unternehmensprofils. Speichert hybrid in localStorage (Draft) und der DB (Endstand). Nach Abschluss zeigt Step 99 eine Summary-Seite mit Vollstaendigkeitspruefung und "Weiter zu Scope"-Button.
API-Endpunkte
| Methode | Pfad | Beschreibung |
|---|---|---|
GET |
/v1/company-profile |
Profil für Tenant laden |
POST |
/v1/company-profile |
Profil erstellen oder aktualisieren (Upsert) |
PATCH |
/v1/company-profile |
Einzelne Felder aktualisieren |
DELETE |
/v1/company-profile |
Profil löschen (Art. 17 DSGVO) |
GET |
/v1/company-profile/audit |
Audit-Log der Profiländerungen |
Datenbankstruktur
Tabelle: compliance_company_profiles (Migration 005)
28 Felder, u.a.:
id UUID PRIMARY KEY
tenant_id TEXT UNIQUE NOT NULL
company_name TEXT
legal_form TEXT -- GmbH, AG, GbR, ...
industry TEXT -- tech, finance, healthcare, public, retail, education
company_size TEXT -- micro, small, medium, large
employee_count TEXT -- 1-9, 10-49, 50-249, 250-999, 1000+
uses_ai BOOLEAN
ai_use_cases JSONB
dpo_name TEXT
machine_builder JSONB -- IACE-Profil für Maschinenbauer
is_complete BOOLEAN
completed_at TIMESTAMPTZ
Audit-Tabelle: compliance_company_profile_audit
id UUID PRIMARY KEY
tenant_id TEXT
action TEXT -- create | update | delete
changed_fields JSONB
changed_by TEXT
created_at TIMESTAMPTZ
Request-Modell (CompanyProfileRequest)
{
"company_name": "Beispiel GmbH",
"legal_form": "GmbH",
"industry": "tech",
"founded_year": 2018,
"business_model": "B2B",
"company_size": "small",
"employee_count": "10-49",
"annual_revenue": "2-10 Mio",
"headquarters_country": "DE",
"uses_ai": true,
"ai_use_cases": ["Chatbot", "Dokumentenklassifikation"],
"is_complete": true
}
Tests
Datei: backend-compliance/tests/test_company_profile_routes.py
9 Tests — alle grün:
test_get_profile_not_found— 404 wenn kein Profiltest_create_profile— POST legt Profil antest_upsert_profile_update— POST auf bestehendem Profil → UPDATEtest_delete_profile— DELETE entfernt Profiltest_delete_profile_not_found— 404 bei fehlendem Profiltest_get_audit_log_empty— leeres Audit-Logtest_audit_log_after_create— Audit-Eintrag nach CREATEtest_audit_log_after_delete— Audit-Eintrag nach DELETEtest_complete_profile_workflow— End-to-End Workflow
Scope — compliance-scope (CP-SCOPE)
Übersicht
4-Tab-Oberfläche zur Bestimmung des optimalen Compliance-Levels (L1–L4):
| Tab | Inhalt |
|---|---|
| Overview | Aktueller Level, Score-Visualisierung, Dokumenten-Anforderungen |
| Wizard | 35 Fragen in 6 Blöcken (ca. 10–15 min) |
| Entscheidung | Begründung, Hard Triggers, Gap-Analyse |
| Export | JSON/PDF-Export der Scope-Entscheidung |
ComplianceScopeEngine
Die Engine (lib/sdk/compliance-scope-engine.ts) implementiert eine 8-Schritt-Pipeline:
1. calculateScores(answers) → ComplianceScores
2. evaluateHardTriggers(answers) → TriggeredHardTrigger[]
3. determineLevel(scores, triggers) → ComplianceDepthLevel
4. buildDocumentScope(level, ...) → RequiredDocument[]
5. evaluateRiskFlags(answers, level) → RiskFlag[]
6. calculateGaps(answers, level) → ScopeGap[]
7. buildNextActions(docs, gaps) → NextAction[]
8. buildReasoning(...) → ScopeReasoning[]
Level-Modell
| Level | Composite-Score | Bezeichnung |
|---|---|---|
| L1 | ≤ 25 | Lean Startup — Minimalansatz |
| L2 | 26–50 | KMU Standard |
| L3 | 51–75 | Erweitert |
| L4 | > 75 | Zertifizierungsbereit |
Finale Stufe = max(score-basiertes Level, höchstes Hard-Trigger-Level)
Score-Gewichte
Composite = Risk × 0.4 + Complexity × 0.3 + Assurance × 0.3
Scores werden aus 35 gewichteten Fragen berechnet. Jede Frage hat individuelle Gewichte für risk, complexity, assurance (definiert in QUESTION_SCORE_WEIGHTS).
Hard Trigger Kategorien (50 Regeln)
| Kategorie | Regeln | Beispiel-Trigger |
|---|---|---|
art9 |
9 | Gesundheits-, Biometrie-, Genetikdaten → mind. L3 |
vulnerable |
3 | Minderjährige → L3/L4 + DSFA |
adm |
6 | Autonome KI, Profiling, Scoring → L2/L3 |
surveillance |
5 | Videoüberwachung, Mitarbeitermonitoring → L2/L3 |
third_country |
5 | Drittland-Transfer → L2/L3 |
certification |
5 | ISO 27001, SOC2, TISAX → L4 |
scale |
5 | >1Mio Datensätze, >250 Mitarbeiter → L3 |
product |
7 | Webshop, Datenmakler, B2C → L2/L3 |
process_maturity |
5 | Fehlende Prozesse (DSAR, Löschung, Incident) |
iace_* |
5+ | Maschinenbauer: AI Act, CRA, NIS2 |
API-Endpunkte
| Methode | Pfad | Beschreibung |
|---|---|---|
GET |
/v1/compliance-scope |
Scope-Zustand laden (sdk_states JSONB) |
POST |
/v1/compliance-scope |
Scope-Zustand speichern (JSONB UPSERT) |
Scope-Daten werden in sdk_states.state->'compliance_scope' als JSONB gespeichert.
Tests
Datei: backend-compliance/tests/test_compliance_scope_routes.py — 27 Tests
Datei: admin-compliance/lib/sdk/__tests__/compliance-scope-engine.test.ts — 40 Vitest-Tests
Engine-Tests decken ab:
calculateScores: Leer-Array, boolean/numeric/array Antworten, Composite-GewichtungdetermineLevel: L1–L4 Schwellenwerte, Hard-Trigger-Override, Level-MaximumevaluateHardTriggers: Art. 9, Minderjährige, KI-Scoring, mehrere Triggerevaluate(Integration): Vollständige ScopeDecision, Felder vorhanden, Level-BestimmungbuildDocumentScope: Array-Rückgabe, Dokumentstruktur, SortierungevaluateRiskFlags: Verschlüsselung, Drittland, DPO-Pflicht
Anwendung — use-case-assessment / UCCA (CP-UC)
Übersicht
Bewertet konkrete Datenanwendungen hinsichtlich DSGVO- und AI-Act-Konformität. Gibt eine Machbarkeitsentscheidung (Feasibility) und detaillierte Befunde zurück.
| Ansicht | Inhalt |
|---|---|
| Liste | Alle Assessments mit Filter, Pagination, RiskScoreGauge |
| Detail | Vollständiger Befund-Report mit Kategorien, Controls |
| Neu | 8-Schritte-Wizard mit Kachel-Auswahl (Details siehe unten) |
Wizard-Schritte (Neuer Use Case)
| Schritt | Titel | Auswahl-Typ | Details |
|---|---|---|---|
| 1 | Grundlegendes | Titel + Text + Single-Select-Kacheln | 21 KI-Anwendungskategorien, Branche automatisch aus Profil |
| 2 | Datenkategorien | Multi-Select-Kacheln (gruppiert) | ~60 Kategorien in 10 Gruppen, Art. 9 orange hervorgehoben |
| 3 | Verarbeitungszweck | Multi-Select-Kacheln | 16 Zwecke, Rechtsgrundlage wird vom SDK automatisch ermittelt |
| 4 | Automatisierung | Single-Select-Kacheln | assistiv / teilautomatisiert / vollautomatisiert |
| 5 | Hosting & Modell | Single + Multi-Select-Kacheln | 6 Provider, 4 Regionen, 4 Modellnutzungsarten |
| 6 | Datentransfer | Multi + Single-Select-Kacheln | 6 Transferziele, 5 Mechanismen (bedingt sichtbar) |
| 7 | Datenhaltung | Single-Select-Kacheln | 8 Aufbewahrungsfristen, optionaler Zweck |
| 8 | Vertraege | Multi-Select-Kacheln | 8 Compliance-Dokumente |
Wichtig: Die Rechtsgrundlage (Art. 6 DSGVO) wird nicht mehr vom Nutzer ausgewaehlt, sondern automatisch vom SDK ermittelt.
Feasibility-Werte
| Wert | Bedeutung |
|---|---|
YES |
Umsetzung ohne Einschränkungen empfohlen |
CONDITIONAL |
Umsetzung nur mit spezifischen Maßnahmen |
NO |
Umsetzung nicht empfohlen (unakzeptables Risiko) |
Risiko-Level
| Level | Score-Bereich |
|---|---|
MINIMAL |
0–20 |
LOW |
21–40 |
MEDIUM |
41–60 |
HIGH |
61–80 |
UNACCEPTABLE |
81–100 |
Backend: ai-compliance-sdk (Go)
Service: bp-compliance-ai-sdk (Port 8090 intern, 8093 extern)
Relevante Module in internal/ucca/:
| Datei | Funktion |
|---|---|
policy_engine.go |
Zentrale Regelauswertung |
dsgvo_module.go |
DSGVO-spezifische Prüfungen (Art. 5–9, 22, 35) |
ai_act_module.go |
AI-Act Risikokategorisierung |
nis2_module.go |
NIS2-Anforderungen |
escalation.go |
Eskalationslogik bei Hochrisiko |
handlers.go |
HTTP Handler (Gin) |
Datenbanktabellen:
ucca_assessments -- Assessments (tenant_id, title, description, status, feasibility, risk_level)
ucca_findings -- Einzelbefunde pro Assessment
ucca_controls -- Empfohlene Maßnahmen
Proxy
Frontend /api/sdk/v1/ucca/**
→ ai-compliance-sdk:8090/ucca/**
Proxy-Datei: admin-compliance/app/api/sdk/v1/ucca/[[...path]]/route.ts
Obligations v2 — Regulierungsübergreifende Pflichten-Datenbank
Detailseite: Obligations Framework v2 (CP-OBL)
Das Obligations Framework v2 erweitert UCCA um eine JSON-basierte Pflichten-Datenbank mit Condition Engine.
| Kenngröße | Wert |
|---|---|
| Regulierungen | 9 (DSGVO, BDSG, AI Act, NIS2, TTDSG, DSA, Data Act, DORA, EU Machinery) |
| Pflichten | 325 |
| TOM-Controls | 180 |
Neue Endpoints (v2)
| Methode | Pfad | Beschreibung |
|---|---|---|
POST |
/sdk/v1/ucca/obligations/assess |
Pflichten aus UnifiedFacts ableiten |
POST |
/sdk/v1/ucca/obligations/quick-check |
Schnellprüfung ohne Persistenz |
POST |
/sdk/v1/ucca/obligations/assess-from-scope |
Assessment aus Scope-Daten |
POST |
/sdk/v1/ucca/obligations/gap-analysis |
TOM-Gap-Analyse |
GET |
/sdk/v1/ucca/obligations/tom-controls/for-obligation/:id |
TOMs für eine Pflicht |
GET |
/sdk/v1/ucca/obligations/regulations |
Alle Regulierungen |
Tests
Go-Tests (lokal auf MacBook, nicht im laufenden Container):
cd ai-compliance-sdk && go test ./internal/ucca/... -v
cd ai-compliance-sdk && go test ./internal/api/handlers/... -v -run TestReporting