# Risiken (CP-RSK)

Verwaltet Datenschutz- und KI-Risiken mit Risikobewertung nach Likelihood × Impact.

**Prefix:** `CP-RSK` · **Frontend:** `https://macmini:3007/sdk/risks`
**Proxy:** `/api/sdk/v1/compliance/[[...path]]` → `backend-compliance:8002/compliance/...`

---

## Features

- Risikomatrix (Likelihood × Impact, 5×5)
- Kategorisierung nach Datenschutz, KI, Betrieb, Sicherheit
- Status-Tracking: open / mitigated / accepted / closed
- Restrisiko nach Mitigationsmaßnahmen
- Verknüpfung mit Controls

---

## Rechtsgrundlage

| Artikel | Bezug |
|---------|-------|
| Art. 24 DSGVO | Risikobasierter Ansatz |
| Art. 32 DSGVO | Risikobewertung für Sicherheitsmaßnahmen |
| Art. 35 DSGVO | DSFA bei hohem Risiko |
| Art. 9 AI Act | Risikomanagementsystem für KI |

---

## Risikobewertung

| Stufe | Likelihood × Impact | Farbe |
|-------|---------------------|-------|
| `low` | ≤ 4 | Grün |
| `medium` | 5–9 | Gelb |
| `high` | 10–19 | Orange |
| `critical` | ≥ 20 | Rot |

---

## API Endpoints

| Methode | Pfad | Beschreibung |
|---------|------|--------------|
| `GET` | `/risks` | Liste (`category`, `status`, `risk_level`) |
| `POST` | `/risks` | Neues Risiko anlegen |
| `PUT` | `/risks/{risk_id}` | Risiko aktualisieren (Status, Restrisiko) |
| `DELETE` | `/risks/{risk_id}` | Risiko löschen |
| `GET` | `/risks/matrix` | Risikomatrix (Likelihood × Impact) |

### Risikomatrix-Response

```http
GET /risks/matrix
```

```json
{
  "matrix": {
    "3": { "4": ["RISK-001", "RISK-007"] },
    "1": { "1": [] }
  },
  "risks": [...]
}
```

Die Matrix ist nach `likelihood` (1–5) → `impact` (1–5) → `[risk_ids]` strukturiert.

### Request-Beispiel (POST)

```json
{
  "title": "Unbefugter Datenzugriff durch Dritte",
  "category": "data_privacy",
  "likelihood": 3,
  "impact": 4,
  "description": "Dritte könnten über unsichere APIs auf personenbezogene Daten zugreifen.",
  "mitigation": "Einführung von API-Gateway mit Authentifizierung"
}
```

---

## Frontend

**URL:** `https://macmini:3007/sdk/risks`

Interaktive Risikomatrix als 5×5-Heatmap. Listenansicht mit Status-Badges und Kategorie-Filter. Neue Risiken können über ein Formular angelegt und direkt gemindert werden.

---

## Datenbankschema

```sql
compliance_risks (
  id              UUID PRIMARY KEY,
  risk_id         VARCHAR UNIQUE,        -- z.B. "RISK-001"
  title           TEXT,
  category        VARCHAR,               -- data_privacy/ai/operational/security
  description     TEXT,
  likelihood      INTEGER CHECK (likelihood BETWEEN 1 AND 5),
  impact          INTEGER CHECK (impact BETWEEN 1 AND 5),
  inherent_risk   VARCHAR,               -- low/medium/high/critical
  residual_risk   VARCHAR,
  status          VARCHAR DEFAULT 'open',
  mitigation      TEXT,
  owner           VARCHAR,
  created_at      TIMESTAMP,
  updated_at      TIMESTAMP
)
```

---

## Tests

**Testdatei:** `backend-compliance/tests/test_risk_routes.py`
**Anzahl Tests:** 16 (+ 8 aus Paket 2) · **Status:** ✅ alle bestanden (Stand 2026-03-05)

```bash
cd backend-compliance
python3 -m pytest tests/test_risk_routes.py -v
```
