Files
breakpilot-compliance/docs-src/services/sdk-modules/vorbereitung-module.md
Benjamin Admin b1a0dd3615
Some checks failed
CI / go-lint (push) Has been skipped
CI / python-lint (push) Has been skipped
CI / nodejs-lint (push) Has been skipped
CI / test-go-ai-compliance (push) Failing after 36s
CI / test-python-backend-compliance (push) Successful in 40s
CI / test-python-document-crawler (push) Successful in 24s
CI / test-python-dsms-gateway (push) Successful in 20s
docs: SDK-Flow, MkDocs und Entwicklerdoku aktualisieren
- 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>
2026-03-10 22:30:31 +01:00

299 lines
10 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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.:
```sql
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`
```sql
id UUID PRIMARY KEY
tenant_id TEXT
action TEXT -- create | update | delete
changed_fields JSONB
changed_by TEXT
created_at TIMESTAMPTZ
```
### Request-Modell (CompanyProfileRequest)
```json
{
"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 Profil
- `test_create_profile` — POST legt Profil an
- `test_upsert_profile_update` — POST auf bestehendem Profil → UPDATE
- `test_delete_profile` — DELETE entfernt Profil
- `test_delete_profile_not_found` — 404 bei fehlendem Profil
- `test_get_audit_log_empty` — leeres Audit-Log
- `test_audit_log_after_create` — Audit-Eintrag nach CREATE
- `test_audit_log_after_delete` — Audit-Eintrag nach DELETE
- `test_complete_profile_workflow` — End-to-End Workflow
---
## Scope — compliance-scope (CP-SCOPE)
### Übersicht
4-Tab-Oberfläche zur Bestimmung des optimalen Compliance-Levels (L1L4):
| Tab | Inhalt |
|-----|--------|
| **Overview** | Aktueller Level, Score-Visualisierung, Dokumenten-Anforderungen |
| **Wizard** | 35 Fragen in 6 Blöcken (ca. 1015 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** | 2650 | KMU Standard |
| **L3** | 5175 | 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-Gewichtung
- `determineLevel`: L1L4 Schwellenwerte, Hard-Trigger-Override, Level-Maximum
- `evaluateHardTriggers`: Art. 9, Minderjährige, KI-Scoring, mehrere Trigger
- `evaluate` (Integration): Vollständige ScopeDecision, Felder vorhanden, Level-Bestimmung
- `buildDocumentScope`: Array-Rückgabe, Dokumentstruktur, Sortierung
- `evaluateRiskFlags`: 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` | 020 |
| `LOW` | 2140 |
| `MEDIUM` | 4160 |
| `HIGH` | 6180 |
| `UNACCEPTABLE` | 81100 |
### 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. 59, 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:**
```sql
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)](obligations.md)
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):
```bash
cd ai-compliance-sdk && go test ./internal/ucca/... -v
cd ai-compliance-sdk && go test ./internal/api/handlers/... -v -run TestReporting
```