# UCCA - Use-Case Compliance & Feasibility Advisor

## Systemarchitektur

### 1. Übersicht

Das UCCA-System ist ein **deterministisches Compliance-Bewertungssystem** für KI-Anwendungsfälle. Es kombiniert regelbasierte Evaluation mit optionaler LLM-Erklärung und semantischer Rechtstextsuche.

```
┌─────────────────────────────────────────────────────────────────────────────┐
│                              UCCA System                                      │
├─────────────────────────────────────────────────────────────────────────────┤
│                                                                               │
│   ┌──────────────┐    ┌──────────────┐    ┌──────────────┐                  │
│   │   Frontend   │───>│   SDK API    │───>│  PostgreSQL  │                  │
│   │  (Next.js)   │    │    (Go)      │    │   Database   │                  │
│   └──────────────┘    └──────┬───────┘    └──────────────┘                  │
│                              │                                               │
│         ┌────────────────────┼────────────────────┐                         │
│         │                    │                    │                         │
│         ▼                    ▼                    ▼                         │
│   ┌──────────────┐    ┌──────────────┐    ┌──────────────┐                  │
│   │ Policy       │    │ Escalation   │    │  Legal RAG   │                  │
│   │ Engine       │    │ Workflow     │    │  (Qdrant)    │                  │
│   │ (45 Regeln)  │    │ (E0-E3)      │    │ 2,274 Chunks │                  │
│   └──────────────┘    └──────────────┘    └──────────────┘                  │
│         │                    │                    │                         │
│         └────────────────────┴────────────────────┘                         │
│                              │                                               │
│                              ▼                                               │
│                       ┌──────────────┐                                       │
│                       │ LLM Provider │                                       │
│                       │ (Ollama/API) │                                       │
│                       └──────────────┘                                       │
│                                                                               │
└─────────────────────────────────────────────────────────────────────────────┘
```

### 2. Kernprinzip

> **"LLM ist NICHT die Quelle der Wahrheit. Wahrheit = Regeln + Evidenz. LLM = Übersetzer + Subsumptionshelfer"**

Das System folgt einem strikten **Human-in-the-Loop** Ansatz:

1. **Deterministische Regeln** treffen alle Compliance-Entscheidungen
2. **LLM** erklärt nur Ergebnisse, überschreibt nie BLOCK-Entscheidungen
3. **Menschen** (DSB, Legal) treffen finale Entscheidungen bei kritischen Fällen

---

## 3. Komponenten

### 3.1 Policy Engine (`internal/ucca/rules.go`)

Die Policy Engine evaluiert Use-Cases gegen ~45 deterministische Regeln.

```
┌─────────────────────────────────────────────────────────────────┐
│                        Policy Engine                             │
├─────────────────────────────────────────────────────────────────┤
│                                                                   │
│  UseCaseIntake ──────────────────────────────────────────────>  │
│       │                                                           │
│       ▼                                                           │
│  ┌─────────────────────────────────────────────────────────────┐ │
│  │ Regelkategorien (A-J)                                       │ │
│  ├─────────────────────────────────────────────────────────────┤ │
│  │ A. Datenklassifikation    │ R-001 bis R-006 │ 6 Regeln    │ │
│  │ B. Zweck & Kontext        │ R-010 bis R-013 │ 4 Regeln    │ │
│  │ C. Automatisierung        │ R-020 bis R-025 │ 6 Regeln    │ │
│  │ D. Training vs Nutzung    │ R-030 bis R-035 │ 6 Regeln    │ │
│  │ E. Speicherung            │ R-040 bis R-042 │ 3 Regeln    │ │
│  │ F. Hosting                │ R-050 bis R-052 │ 3 Regeln    │ │
│  │ G. Transparenz            │ R-060 bis R-062 │ 3 Regeln    │ │
│  │ H. Domain-spezifisch      │ R-070 bis R-074 │ 5 Regeln    │ │
│  │ I. Aggregation            │ R-090 bis R-092 │ 3 Regeln    │ │
│  │ J. Erklärung              │ R-100          │ 1 Regel     │ │
│  └─────────────────────────────────────────────────────────────┘ │
│       │                                                           │
│       ▼                                                           │
│  AssessmentResult                                                 │
│    ├── feasibility: YES | CONDITIONAL | NO                        │
│    ├── risk_score: 0-100                                          │
│    ├── risk_level: MINIMAL | LOW | MEDIUM | HIGH | CRITICAL       │
│    ├── triggered_rules: []TriggeredRule                           │
│    ├── required_controls: []RequiredControl                       │
│    ├── recommended_architecture: []PatternRecommendation          │
│    └── forbidden_patterns: []ForbiddenPattern                     │
│                                                                   │
└─────────────────────────────────────────────────────────────────┘
```

**Regel-Severities:**
- `INFO`: Informativ, kein Risiko-Impact
- `WARN`: Warnung, erhöht Risk Score
- `BLOCK`: Kritisch, führt zu `feasibility=NO`

### 3.2 Escalation Workflow (`internal/ucca/escalation_*.go`)

Das Eskalationssystem routet kritische Assessments zur menschlichen Prüfung.

```
┌─────────────────────────────────────────────────────────────────┐
│                    Escalation Workflow                           │
├─────────────────────────────────────────────────────────────────┤
│                                                                   │
│  AssessmentResult ─────────────────────────────────────────────> │
│       │                                                           │
│       ▼                                                           │
│  ┌─────────────────────────────────────────────────────────────┐ │
│  │              Escalation Level Determination                  │ │
│  ├─────────────────────────────────────────────────────────────┤ │
│  │                                                               │ │
│  │  E0: Nur INFO-Regeln, Risk < 20                              │ │
│  │      → Auto-Approve, keine menschliche Prüfung               │ │
│  │                                                               │ │
│  │  E1: WARN-Regeln, Risk 20-39                                 │ │
│  │      → Team-Lead Review (SLA: 24h)                           │ │
│  │                                                               │ │
│  │  E2: Art.9 Daten ODER Risk 40-59 ODER DSFA empfohlen         │ │
│  │      → DSB Consultation (SLA: 8h)                            │ │
│  │                                                               │ │
│  │  E3: BLOCK-Regel ODER Risk ≥60 ODER Art.22 Risiko            │ │
│  │      → DSB + Legal Review (SLA: 4h)                          │ │
│  │                                                               │ │
│  └─────────────────────────────────────────────────────────────┘ │
│       │                                                           │
│       ▼                                                           │
│  ┌─────────────────────────────────────────────────────────────┐ │
│  │                    DSB Pool Assignment                        │ │
│  ├─────────────────────────────────────────────────────────────┤ │
│  │  Role          │ Level │ Max Concurrent │ Auto-Assign        │ │
│  │  ──────────────┼───────┼────────────────┼────────────────── │ │
│  │  team_lead     │ E1    │ 10             │ Round-Robin        │ │
│  │  dsb           │ E2,E3 │ 5              │ Workload-Based     │ │
│  │  legal         │ E3    │ 3              │ Workload-Based     │ │
│  └─────────────────────────────────────────────────────────────┘ │
│       │                                                           │
│       ▼                                                           │
│  Escalation Status Flow:                                          │
│                                                                   │
│  pending → assigned → in_review → approved/rejected/returned     │
│                                                                   │
└─────────────────────────────────────────────────────────────────┘
```

### 3.3 Legal RAG (`internal/llm/legal_rag.go`)

Semantische Suche in 19 EU-Regulierungen für kontextbasierte Erklärungen.

```
┌─────────────────────────────────────────────────────────────────┐
│                       Legal RAG System                           │
├─────────────────────────────────────────────────────────────────┤
│                                                                   │
│  Explain Request ──────────────────────────────────────────────> │
│       │                                                           │
│       ▼                                                           │
│  ┌─────────────────────────────────────────────────────────────┐ │
│  │                   Qdrant Vector DB                            │ │
│  │                   Collection: bp_legal_corpus                 │ │
│  │                   2,274 Chunks, 1024-dim BGE-M3               │ │
│  ├─────────────────────────────────────────────────────────────┤ │
│  │                                                               │ │
│  │  EU-Verordnungen:                                             │ │
│  │  ├── DSGVO (128)       ├── AI Act (96)      ├── NIS2 (128)  │ │
│  │  ├── CRA (256)         ├── Data Act (256)   ├── DSA (256)   │ │
│  │  ├── DGA (32)          ├── EUCSA (32)       ├── DPF (714)   │ │
│  │  └── ...                                                      │ │
│  │                                                               │ │
│  │  Deutsche Gesetze:                                            │ │
│  │  ├── TDDDG (1)         ├── SCC (32)         ├── ...         │ │
│  │                                                               │ │
│  │  BSI-Standards:                                               │ │
│  │  ├── TR-03161-1 (6)    ├── TR-03161-2 (6)   ├── TR-03161-3  │ │
│  │                                                               │ │
│  └─────────────────────────────────────────────────────────────┘ │
│       │                                                           │
│       │ Hybrid Search (Dense + Sparse)                           │
│       │ Re-Ranking (Cross-Encoder)                               │
│       ▼                                                           │
│  Top-K Relevant Passages ─────────────────────────────────────>  │
│       │                                                           │
│       ▼                                                           │
│  ┌─────────────────────────────────────────────────────────────┐ │
│  │                    LLM Explanation                            │ │
│  │  Provider: Ollama (local) / Anthropic (fallback)             │ │
│  │  Prompt: Assessment + Legal Context → Erklärung              │ │
│  └─────────────────────────────────────────────────────────────┘ │
│                                                                   │
└─────────────────────────────────────────────────────────────────┘
```

---

## 4. Datenfluss

### 4.1 Assessment-Erstellung

```
User Input (Frontend)
       │
       ▼
POST /sdk/v1/ucca/assess
       │
       ├──────────────────────────────────────────┐
       │                                          │
       ▼                                          ▼
┌──────────────┐                          ┌──────────────┐
│ Policy       │                          │ Escalation   │
│ Engine       │                          │ Trigger      │
│ Evaluation   │                          │ Check        │
└──────┬───────┘                          └──────┬───────┘
       │                                          │
       │ AssessmentResult                         │ EscalationLevel
       │                                          │
       ▼                                          ▼
┌──────────────────────────────────────────────────────┐
│                   PostgreSQL                          │
│  ├── ucca_assessments (Assessment + Result)           │
│  └── ucca_escalations (wenn Level > E0)              │
└──────────────────────────────────────────────────────┘
       │
       │ If Level > E0
       ▼
┌──────────────┐
│ DSB Pool     │
│ Auto-Assign  │
└──────────────┘
       │
       ▼
Notification (E-Mail/Webhook)
```

### 4.2 Erklärung mit Legal RAG

```
POST /sdk/v1/ucca/assessments/:id/explain
       │
       ▼
┌──────────────┐
│ Load         │
│ Assessment   │
└──────┬───────┘
       │
       ▼
┌──────────────┐    Query Vector    ┌──────────────┐
│ Extract      │ ──────────────────>│ Qdrant       │
│ Keywords     │                    │ bp_legal_    │
│ from Rules   │<───────────────────│ corpus       │
└──────┬───────┘    Top-K Docs      └──────────────┘
       │
       │ Assessment + Legal Context
       ▼
┌──────────────┐
│ LLM          │
│ Provider     │
│ Registry     │
└──────┬───────┘
       │
       ▼
Explanation (DE) + Legal References
```

---

## 5. Entscheidungsdiagramm

### 5.1 Feasibility-Entscheidung

```
                    UseCaseIntake
                         │
                         ▼
              ┌─────────────────────┐
              │ Hat BLOCK-Regeln?   │
              └──────────┬──────────┘
                    │         │
                   Ja        Nein
                    │         │
                    ▼         ▼
            ┌───────────┐  ┌─────────────────────┐
            │ NO        │  │ Hat WARN-Regeln?    │
            │ (blocked) │  └──────────┬──────────┘
            └───────────┘        │         │
                                Ja        Nein
                                 │         │
                                 ▼         ▼
                         ┌───────────┐  ┌───────────┐
                         │CONDITIONAL│  │ YES       │
                         │(mit       │  │(grünes    │
                         │Auflagen)  │  │Licht)     │
                         └───────────┘  └───────────┘
```

### 5.2 Escalation-Level-Entscheidung

```
                   AssessmentResult
                         │
                         ▼
              ┌─────────────────────┐
              │ BLOCK-Regel oder    │
              │ Art.22 Risiko?      │
              └──────────┬──────────┘
                    │         │
                   Ja        Nein
                    │         │
                    ▼         │
              ┌───────────┐   │
              │ E3        │   │
              │ DSB+Legal │   │
              └───────────┘   ▼
                    ┌─────────────────────┐
                    │ Risk ≥40 oder       │
                    │ Art.9 Daten oder    │
                    │ DSFA empfohlen?     │
                    └──────────┬──────────┘
                          │         │
                         Ja        Nein
                          │         │
                          ▼         │
                    ┌───────────┐   │
                    │ E2        │   │
                    │ DSB       │   │
                    └───────────┘   ▼
                          ┌─────────────────────┐
                          │ Risk ≥20 oder       │
                          │ WARN-Regeln?        │
                          └──────────┬──────────┘
                                │         │
                               Ja        Nein
                                │         │
                                ▼         ▼
                          ┌───────────┐  ┌───────────┐
                          │ E1        │  │ E0        │
                          │ Team-Lead │  │ Auto-OK   │
                          └───────────┘  └───────────┘
```

---

## 6. Datenbank-Schema

### 6.1 ucca_assessments

```sql
CREATE TABLE ucca_assessments (
    id UUID PRIMARY KEY,
    tenant_id UUID NOT NULL,
    namespace_id UUID,
    title VARCHAR(500),
    policy_version VARCHAR(50) NOT NULL,
    status VARCHAR(50) DEFAULT 'completed',

    -- Input
    intake JSONB NOT NULL,
    use_case_text_stored BOOLEAN DEFAULT FALSE,
    use_case_text_hash VARCHAR(64),
    domain VARCHAR(50),

    -- Result
    feasibility VARCHAR(20) NOT NULL,
    risk_level VARCHAR(20) NOT NULL,
    risk_score INT NOT NULL DEFAULT 0,
    triggered_rules JSONB DEFAULT '[]',
    required_controls JSONB DEFAULT '[]',
    recommended_architecture JSONB DEFAULT '[]',
    forbidden_patterns JSONB DEFAULT '[]',
    example_matches JSONB DEFAULT '[]',

    -- Flags
    dsfa_recommended BOOLEAN DEFAULT FALSE,
    art22_risk BOOLEAN DEFAULT FALSE,
    training_allowed VARCHAR(50),

    -- Explanation
    explanation_text TEXT,
    explanation_generated_at TIMESTAMPTZ,
    explanation_model VARCHAR(100),

    -- Audit
    created_at TIMESTAMPTZ DEFAULT NOW(),
    updated_at TIMESTAMPTZ DEFAULT NOW(),
    created_by UUID NOT NULL
);
```

### 6.2 ucca_escalations

```sql
CREATE TABLE ucca_escalations (
    id UUID PRIMARY KEY,
    tenant_id UUID NOT NULL,
    assessment_id UUID NOT NULL REFERENCES ucca_assessments(id),

    -- Level & Status
    escalation_level VARCHAR(10) NOT NULL,
    escalation_reason TEXT,
    status VARCHAR(50) NOT NULL DEFAULT 'pending',

    -- Assignment
    assigned_to UUID,
    assigned_role VARCHAR(50),
    assigned_at TIMESTAMPTZ,

    -- Review
    reviewer_id UUID,
    reviewer_notes TEXT,
    reviewed_at TIMESTAMPTZ,

    -- Decision
    decision VARCHAR(50),
    decision_notes TEXT,
    decision_at TIMESTAMPTZ,
    conditions JSONB DEFAULT '[]',

    -- SLA
    due_date TIMESTAMPTZ,
    notification_sent BOOLEAN DEFAULT FALSE,
    notification_sent_at TIMESTAMPTZ,

    -- Audit
    created_at TIMESTAMPTZ DEFAULT NOW(),
    updated_at TIMESTAMPTZ DEFAULT NOW()
);
```

### 6.3 ucca_dsb_pool

```sql
CREATE TABLE ucca_dsb_pool (
    id UUID PRIMARY KEY,
    tenant_id UUID NOT NULL,
    user_id UUID NOT NULL,
    user_name VARCHAR(255) NOT NULL,
    user_email VARCHAR(255) NOT NULL,
    role VARCHAR(50) NOT NULL,
    is_active BOOLEAN DEFAULT TRUE,
    max_concurrent_reviews INT DEFAULT 10,
    current_reviews INT DEFAULT 0,
    created_at TIMESTAMPTZ DEFAULT NOW(),
    updated_at TIMESTAMPTZ DEFAULT NOW()
);
```

---

## 7. API-Endpunkte

### 7.1 Assessment

| Method | Endpoint | Beschreibung |
|--------|----------|--------------|
| POST | `/sdk/v1/ucca/assess` | Assessment erstellen |
| GET | `/sdk/v1/ucca/assessments` | Assessments auflisten |
| GET | `/sdk/v1/ucca/assessments/:id` | Assessment abrufen |
| DELETE | `/sdk/v1/ucca/assessments/:id` | Assessment löschen |
| POST | `/sdk/v1/ucca/assessments/:id/explain` | LLM-Erklärung generieren |
| GET | `/sdk/v1/ucca/export/:id` | Assessment exportieren |

### 7.2 Kataloge

| Method | Endpoint | Beschreibung |
|--------|----------|--------------|
| GET | `/sdk/v1/ucca/patterns` | Architektur-Patterns |
| GET | `/sdk/v1/ucca/examples` | Didaktische Beispiele |
| GET | `/sdk/v1/ucca/rules` | Alle Regeln |
| GET | `/sdk/v1/ucca/controls` | Required Controls |
| GET | `/sdk/v1/ucca/problem-solutions` | Problem-Lösungen |

### 7.3 Eskalation

| Method | Endpoint | Beschreibung |
|--------|----------|--------------|
| GET | `/sdk/v1/ucca/escalations` | Eskalationen auflisten |
| GET | `/sdk/v1/ucca/escalations/:id` | Eskalation abrufen |
| POST | `/sdk/v1/ucca/escalations` | Manuelle Eskalation |
| POST | `/sdk/v1/ucca/escalations/:id/assign` | Zuweisen |
| POST | `/sdk/v1/ucca/escalations/:id/review` | Review starten |
| POST | `/sdk/v1/ucca/escalations/:id/decide` | Entscheidung treffen |
| GET | `/sdk/v1/ucca/escalations/stats` | Statistiken |

### 7.4 DSB Pool

| Method | Endpoint | Beschreibung |
|--------|----------|--------------|
| GET | `/sdk/v1/ucca/dsb-pool` | Pool-Mitglieder auflisten |
| POST | `/sdk/v1/ucca/dsb-pool` | Mitglied hinzufügen |

---

## 8. Sicherheit

### 8.1 Authentifizierung

- JWT-basierte Authentifizierung
- Header: `X-User-ID`, `X-Tenant-ID`
- Multi-Tenant-Isolation

### 8.2 Autorisierung

- RBAC (Role-Based Access Control)
- Permissions: `ucca:assess`, `ucca:review`, `ucca:admin`
- Namespace-Level Isolation

### 8.3 Datenschutz

- Use-Case-Text optional (Opt-in)
- SHA-256 Hash statt Klartext
- Audit-Trail für alle Operationen
- Legal RAG: `training_allowed: false`

---

## 9. Deployment

### 9.1 Container

```yaml
ai-compliance-sdk:
  build: ./ai-compliance-sdk
  ports:
    - "8090:8090"
  environment:
    - DATABASE_URL=postgres://...
    - OLLAMA_URL=http://ollama:11434
    - QDRANT_URL=https://qdrant-dev.breakpilot.ai
    - QDRANT_API_KEY=${QDRANT_API_KEY}
  depends_on:
    - postgres
```

### 9.2 Abhängigkeiten

- PostgreSQL 15+
- Qdrant 1.12+
- Embedding Service (BGE-M3)
- Ollama (optional, für LLM)

---

## 10. Monitoring

### 10.1 Health Check

```
GET /sdk/v1/health
→ {"status": "ok"}
```

### 10.2 Metriken

- Assessment-Durchsatz
- Escalation-SLA-Compliance
- LLM-Latenz
- RAG-Trefferqualität

---

---

## 11. Wizard & Legal Assistant

### 11.1 Wizard-Architektur

Der UCCA-Wizard führt Benutzer durch 9 Schritte zur Erfassung aller relevanten Compliance-Fakten.

```
┌─────────────────────────────────────────────────────────────────┐
│                        UCCA Wizard v1.1                          │
├─────────────────────────────────────────────────────────────────┤
│                                                                   │
│  Step 1: Grundlegende Informationen                              │
│  Step 2: Datenarten (Personal Data, Art. 9, etc.)                │
│  Step 3: Verarbeitungszweck (Profiling, Scoring)                 │
│  Step 4: Hosting & Provider                                      │
│  Step 5: Internationaler Datentransfer (SCC, TIA)                │
│  Step 6: KI-Modell und Training                                  │
│  Step 7: Verträge & Compliance (AVV, DSFA)                       │
│  Step 8: Automatisierung & Human Oversight                       │
│  Step 9: Standards & Normen (für Maschinenbauer) ← NEU           │
│                                                                   │
│  Features:                                                        │
│  ├── Adaptive Subflows (visible_if Conditions)                   │
│  ├── Simple/Expert Mode Toggle                                   │
│  ├── Legal Assistant Chat pro Step                               │
│  └── simple_explanation für Nicht-Juristen                       │
│                                                                   │
└─────────────────────────────────────────────────────────────────┘
```

### 11.2 Legal Assistant (Wizard Chat)

Integrierter Rechtsassistent für Echtzeit-Hilfe bei Wizard-Fragen.

```
┌─────────────────────────────────────────────────────────────────┐
│                     Legal Assistant Flow                          │
├─────────────────────────────────────────────────────────────────┤
│                                                                   │
│  User Question ─────────────────────────────────────────────────>│
│       │                                                           │
│       ▼                                                           │
│  ┌──────────────────┐                                            │
│  │ Build RAG Query  │                                            │
│  │ + Step Context   │                                            │
│  └────────┬─────────┘                                            │
│           │                                                       │
│           ▼                                                       │
│  ┌──────────────────┐    Search    ┌──────────────────┐         │
│  │ Legal RAG        │ ────────────>│ Qdrant           │         │
│  │ Client           │              │ bp_legal_corpus  │         │
│  │                  │<────────────│ + SCC Corpus     │         │
│  └────────┬─────────┘    Top-5     └──────────────────┘         │
│           │                                                       │
│           │ Question + Legal Context                             │
│           ▼                                                       │
│  ┌──────────────────┐                                            │
│  │ Internal 32B LLM │                                            │
│  │ (Ollama)         │                                            │
│  │ temp=0.3         │                                            │
│  └────────┬─────────┘                                            │
│           │                                                       │
│           ▼                                                       │
│  Answer + Sources + Related Fields                               │
│                                                                   │
└─────────────────────────────────────────────────────────────────┘
```

**API-Endpunkte:**

| Method | Endpoint | Beschreibung |
|--------|----------|--------------|
| GET | `/sdk/v1/ucca/wizard/schema` | Wizard-Schema abrufen |
| POST | `/sdk/v1/ucca/wizard/ask` | Frage an Legal Assistant |

---

## 12. License Policy Engine (Standards Compliance)

### 12.1 Übersicht

Die License Policy Engine verwaltet die Lizenz-/Urheberrechts-Compliance für Standards und Normen (DIN, ISO, VDI, etc.).

```
┌─────────────────────────────────────────────────────────────────┐
│                    License Policy Engine                          │
├─────────────────────────────────────────────────────────────────┤
│                                                                   │
│  LicensedContentFacts ─────────────────────────────────────────>│
│       │                                                           │
│       │  ├── present: bool                                       │
│       │  ├── publisher: DIN_MEDIA | VDI | ISO | ...              │
│       │  ├── license_type: SINGLE | NETWORK | ENTERPRISE | AI    │
│       │  ├── ai_use_permitted: YES | NO | UNKNOWN                │
│       │  ├── operation_mode: LINK | NOTES | FULLTEXT | TRAINING  │
│       │  └── proof_uploaded: bool                                │
│       │                                                           │
│       ▼                                                           │
│  ┌─────────────────────────────────────────────────────────────┐│
│  │                 Operation Mode Evaluation                    ││
│  ├─────────────────────────────────────────────────────────────┤│
│  │                                                               ││
│  │  LINK_ONLY ──────────── Always Allowed ───────────> OK      ││
│  │  NOTES_ONLY ─────────── Usually Allowed ──────────> OK      ││
│  │  FULLTEXT_RAG ────┬──── ai_use=YES + proof ───────> OK      ││
│  │                   └──── else ─────────────────────> BLOCK   ││
│  │  TRAINING ────────┬──── AI_LICENSE + proof ───────> OK      ││
│  │                   └──── else ─────────────────────> BLOCK   ││
│  │                                                               ││
│  └─────────────────────────────────────────────────────────────┘│
│       │                                                           │
│       ▼                                                           │
│  LicensePolicyResult                                              │
│    ├── allowed: bool                                             │
│    ├── effective_mode: string (may be downgraded)                │
│    ├── gaps: []LicenseGap                                        │
│    ├── required_controls: []LicenseControl                       │
│    ├── stop_line: *StopLine (if hard blocked)                    │
│    └── output_restrictions: *OutputRestrictions                  │
│                                                                   │
└─────────────────────────────────────────────────────────────────┘
```

### 12.2 Betriebs-Modi (Operation Modes)

| Modus | Beschreibung | Lizenz-Anforderung | Ingest | Output |
|-------|--------------|-------------------|--------|--------|
| **LINK_ONLY** | Nur Verweise & Checklisten | Keine | Metadata only | Keine Zitate |
| **NOTES_ONLY** | Kundeneigene Zusammenfassungen | Standard | Notes only | Paraphrasen |
| **EXCERPT_ONLY** | Kurze Zitate (Zitatrecht) | Standard + Zitatrecht | Notes | Max 150 Zeichen |
| **FULLTEXT_RAG** | Volltext indexiert | AI-Lizenz + Proof | Fulltext | Max 500 Zeichen |
| **TRAINING** | Modell-Training | AI-Training-Lizenz | Fulltext | N/A |

### 12.3 Publisher-spezifische Regeln

**DIN Media (ehem. Beuth):**
- AI-Nutzung aktuell verboten (ohne explizite Genehmigung)
- AI-Lizenzmodell geplant ab Q4/2025
- Crawler/Scraper verboten (AGB)
- TDM-Vorbehalt nach §44b UrhG

### 12.4 Stop-Lines (Hard Deny)

```
STOP_DIN_FULLTEXT_AI_NOT_ALLOWED
  WENN: publisher=DIN_MEDIA AND operation_mode in [FULLTEXT_RAG, TRAINING]
        AND ai_use_permitted in [NO, UNKNOWN]
  DANN: BLOCKIERT
  FALLBACK: LINK_ONLY

STOP_TRAINING_WITHOUT_PROOF
  WENN: operation_mode=TRAINING AND proof_uploaded=false
  DANN: BLOCKIERT
```

---

## 13. SCC & Transfer Impact Assessment

### 13.1 Drittlandtransfer-Bewertung

Das System unterstützt die vollständige Bewertung internationaler Datentransfers.

```
┌─────────────────────────────────────────────────────────────────┐
│              SCC/Transfer Assessment Flow                         │
├─────────────────────────────────────────────────────────────────┤
│                                                                   │
│  hosting.region ─────────────────────────────────────────────── │
│       │                                                           │
│       ├── EU/EWR ────────────────────────────────> OK (no SCC)  │
│       │                                                           │
│       ├── Adequacy Country (UK, CH, JP) ─────────> OK (no SCC)  │
│       │                                                           │
│       └── Third Country (US, etc.) ──────────────────────────── │
│                │                                                  │
│                ▼                                                  │
│       ┌─────────────────────────────────────────────────────────┐│
│       │ USA: DPF-Zertifizierung prüfen                          ││
│       │   ├── Zertifiziert ───> OK (SCC empfohlen als Backup)  ││
│       │   └── Nicht zertifiziert ───> SCC + TIA erforderlich   ││
│       └─────────────────────────────────────────────────────────┘│
│                │                                                  │
│                ▼                                                  │
│       ┌─────────────────────────────────────────────────────────┐│
│       │ Transfer Impact Assessment (TIA)                         ││
│       │   ├── Adequate ─────────────> Transfer OK               ││
│       │   ├── Adequate + Measures ──> + Technical Supplementary ││
│       │   ├── Inadequate ───────────> Fix required              ││
│       │   └── Not Feasible ─────────> Transfer NOT allowed      ││
│       └─────────────────────────────────────────────────────────┘│
│                                                                   │
└─────────────────────────────────────────────────────────────────┘
```

### 13.2 SCC-Versionen

- Neue SCC (EU 2021/914) - **erforderlich** seit 27.12.2022
- Alte SCC (vor 2021) - **nicht mehr gültig**

---

## 14. Controls Catalog

### 14.1 Übersicht

Der Controls Catalog enthält ~30 Maßnahmenbausteine mit detaillierten Handlungsanweisungen.

```
┌─────────────────────────────────────────────────────────────────┐
│                      Controls Catalog v1.0                        │
├─────────────────────────────────────────────────────────────────┤
│                                                                   │
│  Kategorien:                                                      │
│  ├── DSGVO (Rechtsgrundlagen, Betroffenenrechte, Dokumentation) │
│  ├── AI_Act (Transparenz, HITL, Risikoeinstufung)               │
│  ├── Technical (Verschlüsselung, Anonymisierung, PII-Gateway)   │
│  └── Contractual (AVV, SCC, TIA)                                │
│                                                                   │
│  Struktur pro Control:                                           │
│  ├── id: CTRL-xxx                                                │
│  ├── title: Kurztitel                                            │
│  ├── when_applicable: Wann erforderlich?                         │
│  ├── what_to_do: Konkrete Handlungsschritte                      │
│  ├── evidence_needed: Erforderliche Nachweise                    │
│  ├── effort: low | medium | high                                 │
│  └── gdpr_ref: Rechtsgrundlage                                   │
│                                                                   │
└─────────────────────────────────────────────────────────────────┘
```

### 14.2 Beispiel-Controls

| ID | Titel | Kategorie |
|----|-------|-----------|
| CTRL-CONSENT-EXPLICIT | Ausdrückliche Einwilligung | DSGVO |
| CTRL-AI-TRANSPARENCY | KI-Transparenz-Hinweis | AI_Act |
| CTRL-DSFA | Datenschutz-Folgenabschätzung | DSGVO |
| CTRL-SCC | Standardvertragsklauseln | Contractual |
| CTRL-TIA | Transfer Impact Assessment | Contractual |
| CTRL-LICENSE-PROOF | Lizenz-/Rechte-Nachweis | License |
| CTRL-LINK-ONLY-MODE | Evidence Navigator | License |
| CTRL-PII-GATEWAY | PII-Redaction Gateway | Technical |

---

## 15. Policy-Dateien

### 15.1 Dateistruktur

```
policies/
├── ucca_policy_v1.yaml          # Haupt-Policy (Regeln, Controls)
├── controls_catalog.yaml        # Detaillierter Maßnahmenkatalog
├── gap_mapping.yaml             # Facts → Gaps → Controls
├── wizard_schema_v1.yaml        # Wizard-Fragen (9 Steps)
├── scc_legal_corpus.yaml        # SCC/Transfer Rechtstexte
└── licensed_content_policy.yaml # Normen-Lizenz-Compliance (NEU)
```

### 15.2 Versions-Management

- Jedes Assessment speichert die `policy_version`
- Regeländerungen erzeugen neue Version
- Audit-Trail zeigt welche Policy-Version verwendet wurde

---

---

## 16. Generic Obligations Framework

### 16.1 Übersicht

Das Generic Obligations Framework ermöglicht die automatische Ableitung regulatorischer Pflichten aus mehreren Verordnungen basierend auf Unternehmensfakten.

```
┌─────────────────────────────────────────────────────────────────┐
│                Generic Obligations Framework                      │
├─────────────────────────────────────────────────────────────────┤
│                                                                   │
│  UnifiedFacts ───────────────────────────────────────────────── │
│       │                                                           │
│       │  ├── organization: EmployeeCount, Revenue, Country       │
│       │  ├── sector: PrimarySector, IsKRITIS, SpecialServices   │
│       │  ├── data_protection: ProcessesPersonalData              │
│       │  └── ai_usage: UsesAI, HighRiskCategories, IsGPAI       │
│       │                                                           │
│       ▼                                                           │
│  ┌─────────────────────────────────────────────────────────────┐│
│  │                 Obligations Registry                         ││
│  │        (Module Registration & Evaluation)                    ││
│  └──────────────────────────┬──────────────────────────────────┘│
│                             │                                     │
│         ┌───────────────────┼───────────────────┐                │
│         │                   │                   │                │
│         ▼                   ▼                   ▼                │
│   ┌───────────┐      ┌───────────┐      ┌───────────┐           │
│   │   NIS2    │      │   DSGVO   │      │   AI Act  │           │
│   │  Module   │      │  Module   │      │  Module   │           │
│   └─────┬─────┘      └─────┬─────┘      └─────┬─────┘           │
│         │                   │                   │                │
│         └───────────────────┴───────────────────┘                │
│                             │                                     │
│                             ▼                                     │
│  ┌─────────────────────────────────────────────────────────────┐│
│  │           ManagementObligationsOverview                      ││
│  │  ├── ApplicableRegulations[]                                 ││
│  │  ├── Obligations[] (sortiert nach Priorität)                 ││
│  │  ├── RequiredControls[]                                      ││
│  │  ├── IncidentDeadlines[]                                     ││
│  │  ├── SanctionsSummary                                        ││
│  │  └── ExecutiveSummary                                        ││
│  └─────────────────────────────────────────────────────────────┘│
│                                                                   │
└─────────────────────────────────────────────────────────────────┘
```

### 16.2 Regulation Modules

Jede Regulierung wird als eigenständiges Modul implementiert:

```go
// RegulationModule - Interface für alle Regulierungsmodule
type RegulationModule interface {
    ID() string                                    // "dsgvo", "nis2", "ai_act"
    Name() string                                  // "DSGVO", "NIS2-Richtlinie"
    IsApplicable(facts *UnifiedFacts) bool         // Prüft Anwendbarkeit
    DeriveObligations(facts *UnifiedFacts) []Obligation
    DeriveControls(facts *UnifiedFacts) []ObligationControl
    DeriveIncidentDeadlines(facts *UnifiedFacts) []IncidentDeadline
    GetDecisionTree() *DecisionTree                // Optional
}
```

**Implementierte Module:**

| Modul | ID | Datei | Pflichten | Kontrollen |
|-------|-----|-------|-----------|------------|
| NIS2 | `nis2` | `nis2_module.go` | ~15 | ~8 |
| DSGVO | `dsgvo` | `dsgvo_module.go` | ~12 | ~6 |
| AI Act | `ai_act` | `ai_act_module.go` | ~15 | ~6 |

### 16.3 NIS2 Decision Tree

```
                    UnifiedFacts
                         │
                         ▼
              ┌─────────────────────┐
              │ Sektor in Anhang I  │
              │ ODER Anhang II?     │
              └──────────┬──────────┘
                    │         │
                   Ja        Nein
                    │         │
                    ▼         ▼
       ┌────────────────┐  ┌───────────────┐
       │ Größenprüfung  │  │ Nicht         │
       └────────┬───────┘  │ betroffen     │
                │          └───────────────┘
                ▼
       ┌─────────────────────┐
       │ >= 250 MA ODER      │
       │ >= 50 Mio EUR       │
       │ ODER KRITIS         │
       │ ODER Spec.Services  │
       └──────────┬──────────┘
            │         │
           Ja        Nein
            │         │
            ▼         ▼
    ┌───────────┐  ┌─────────────────────┐
    │ Besonders │  │ >= 50 MA ODER       │
    │ wichtige  │  │ >= 10 Mio EUR?      │
    │ Einricht. │  └──────────┬──────────┘
    └───────────┘        │         │
                        Ja        Nein
                         │         │
                         ▼         ▼
                 ┌───────────┐  ┌───────────┐
                 │ Wichtige  │  │ Nicht     │
                 │ Einricht. │  │ betroffen │
                 └───────────┘  └───────────┘
```

### 16.4 AI Act Risk Classification

```
                    UnifiedFacts
                         │
                         ▼
              ┌─────────────────────┐
              │ Nutzt KI-Systeme?   │
              └──────────┬──────────┘
                    │         │
                   Ja        Nein
                    │         │
                    ▼         ▼
       ┌────────────────┐  ┌───────────────┐
       │ Verbotene      │  │ Nicht         │
       │ Praktik?       │  │ anwendbar     │
       └────────┬───────┘  └───────────────┘
                │
           ┌────┴────┐
          Ja        Nein
           │         │
           ▼         ▼
   ┌────────────┐  ┌─────────────────────┐
   │ UNACCEPT-  │  │ Annex III           │
   │ ABLE       │  │ Hochrisiko-         │
   │ (verboten) │  │ Kategorie?          │
   └────────────┘  └──────────┬──────────┘
                         │         │
                        Ja        Nein
                         │         │
                         ▼         ▼
                 ┌───────────┐  ┌───────────┐
                 │ HIGH_RISK │  │ LIMITED/  │
                 │           │  │ MINIMAL   │
                 └───────────┘  └───────────┘
```

### 16.5 PDF Export

```
┌─────────────────────────────────────────────────────────────────┐
│                      PDF Export Flow                             │
├─────────────────────────────────────────────────────────────────┤
│                                                                   │
│  ManagementObligationsOverview ──────────────────────────────── │
│       │                                                           │
│       ▼                                                           │
│  ┌─────────────────────────────────────────────────────────────┐│
│  │                   PDFExporter                                ││
│  │                   (gofpdf)                                   ││
│  ├─────────────────────────────────────────────────────────────┤│
│  │                                                               ││
│  │  ExportManagementMemo() ─────> PDF (base64)                  ││
│  │    ├── Titel & Metadaten                                     ││
│  │    ├── Executive Summary                                     ││
│  │    ├── Anwendbare Regulierungen                              ││
│  │    ├── Sanktions-Zusammenfassung                             ││
│  │    ├── Pflichten-Tabelle                                     ││
│  │    └── Incident-Deadlines                                    ││
│  │                                                               ││
│  │  ExportMarkdown() ───────────> Markdown (text)               ││
│  │                                                               ││
│  └─────────────────────────────────────────────────────────────┘│
│       │                                                           │
│       ▼                                                           │
│  ExportMemoResponse                                              │
│    ├── Content (base64/text)                                     │
│    ├── ContentType (application/pdf | text/markdown)            │
│    └── Filename                                                  │
│                                                                   │
└─────────────────────────────────────────────────────────────────┘
```

---

## 17. Obligations API-Endpunkte

### 17.1 Assessment

| Method | Endpoint | Beschreibung |
|--------|----------|--------------|
| POST | `/sdk/v1/ucca/obligations/assess` | Pflichten-Assessment erstellen |
| GET | `/sdk/v1/ucca/obligations/:id` | Assessment abrufen |
| GET | `/sdk/v1/ucca/obligations` | Assessments auflisten |

### 17.2 Export

| Method | Endpoint | Beschreibung |
|--------|----------|--------------|
| POST | `/sdk/v1/ucca/obligations/export/memo` | Memo exportieren (gespeichert) |
| POST | `/sdk/v1/ucca/obligations/export/direct` | Direkt-Export ohne Speicherung |

**Request Body (Export):**
```json
{
  "overview": { ... },
  "format": "pdf",      // "pdf" | "markdown"
  "language": "de"
}
```

**Response:**
```json
{
  "content": "JVBERi0xLjQ...",  // base64 für PDF
  "content_type": "application/pdf",
  "filename": "pflichten-memo-2026-01-29.pdf"
}
```

### 17.3 Regulations

| Method | Endpoint | Beschreibung |
|--------|----------|--------------|
| GET | `/sdk/v1/ucca/regulations` | Liste aller Regulierungsmodule |
| GET | `/sdk/v1/ucca/regulations/:id/decision-tree` | Decision Tree für Regulierung |

---

## 18. Dateien des Obligations Framework

### 18.1 Backend (Go)

```
internal/ucca/
├── obligations_framework.go    # Interfaces, Typen, Konstanten
├── obligations_registry.go     # Modul-Registry, EvaluateAll()
├── nis2_module.go              # NIS2 Decision Tree + Pflichten
├── nis2_module_test.go         # NIS2 Tests
├── dsgvo_module.go             # DSGVO Pflichten
├── dsgvo_module_test.go        # DSGVO Tests
├── ai_act_module.go            # AI Act Risk Classification
├── ai_act_module_test.go       # AI Act Tests
├── pdf_export.go               # PDF/Markdown Export
└── pdf_export_test.go          # Export Tests
```

### 18.2 Policy-Dateien (YAML)

```
policies/obligations/
├── nis2_obligations.yaml       # ~15 NIS2-Pflichten
├── dsgvo_obligations.yaml      # ~12 DSGVO-Pflichten
└── ai_act_obligations.yaml     # ~15 AI Act-Pflichten
```

---

*Dokumentation erstellt: 2026-01-29*
*Version: 2.1.0*
