# Anforderungen (CP-ANF) Verwaltet regulatorische Anforderungen aus DSGVO, AI Act, CRA, NIS2 und weiteren Regulierungen. **Prefix:** `CP-ANF` · **Frontend:** `https://macmini:3007/sdk/anforderungen` **Proxy:** `/api/sdk/v1/compliance/[[...path]]` → `backend-compliance:8002/compliance/...` --- ## Features - Paginierte Anforderungsliste mit Freitextsuche - Filtert nach Regulierung, Anwendbarkeit und Implementierungsstatus - Verknüpfung mit Controls und Audit-Tracking - RAG-Rechtskontext: Holt passende Gesetzestexte aus dem Vector-Store --- ## Rechtsgrundlage | Regulierung | Beispielartikel | |-------------|-----------------| | DSGVO | Art. 5, Art. 24, Art. 32 | | AI Act | Art. 9, Art. 13 | | NIS2 | Art. 21 | | CRA | Art. 13 | --- ## API Endpoints | Methode | Pfad | Beschreibung | |---------|------|--------------| | `GET` | `/compliance/requirements` | Paginierte Liste (`page`, `page_size`, `search`, `is_applicable`) | | `GET` | `/compliance/requirements/{id}` | Einzelne Anforderung + optionaler RAG-Rechtskontext | | `GET` | `/compliance/regulations/{code}/requirements` | Alle Anforderungen einer Regulierung | | `POST` | `/compliance/requirements` | Neue Anforderung anlegen | | `PUT` | `/compliance/requirements/{id}` | Implementierungsstatus, Audit-Notizen aktualisieren | | `DELETE` | `/compliance/requirements/{id}` | Anforderung löschen | ### RAG-Rechtskontext ```http GET /compliance/requirements/{id}?include_legal_context=true ``` Gibt zusätzlich `legal_context[]` mit RAG-Ergebnissen zurück: ```json { "legal_context": [ { "text": "...", "regulation_code": "GDPR", "article": "Art. 32", "score": 0.92, "source_url": "https://eur-lex.europa.eu/..." } ] } ``` ### RAG-Extraktion: Anforderungen automatisch aus Corpus erstellen ```http POST /compliance/extract-requirements-from-rag ``` Durchsucht **alle RAG-Collections** parallel nach Prüfaspekten / Audit-Kriterien und legt automatisch Requirement-Einträge in der DB an. **Request:** ```json { "collections": null, "search_queries": null, "regulation_codes": ["BSI-TR-03161-1", "GDPR"], "max_per_query": 20, "dry_run": true } ``` | Feld | Typ | Standard | Beschreibung | |------|-----|---------|--------------| | `collections` | string[]? | alle | RAG-Collections durchsuchen (`bp_compliance_ce`, `bp_compliance_recht`, ...) | | `search_queries` | string[]? | 5 Standard-Queries | Suchbegriffe (MUSS/SOLL-Prüfaspekte etc.) | | `regulation_codes` | string[]? | alle | Nur bestimmte Regulierungen einschließen | | `max_per_query` | int | 20 | `top_k` pro Suchquery | | `dry_run` | bool | false | `true` = Vorschau ohne DB-Schreibzugriff | **Response:** ```json { "created": 47, "skipped_duplicates": 12, "skipped_no_article": 3, "failed": 0, "collections_searched": ["bp_compliance_ce", "bp_compliance_recht"], "queries_used": ["Prüfaspekt Anforderung MUSS SOLL", "..."], "dry_run": false, "message": "Erstellt: 47, Duplikate übersprungen: 12, ...", "requirements": [ { "regulation_code": "BSI-TR-03161-1", "article": "M.Zugriffsschutz_01", "title": "Implementierung einer Zugangskontrolle", "requirement_text": "...", "source_url": "...", "score": 0.91, "action": "created" } ] } ``` **Deduplication:** Bereits vorhandene `(regulation_code, article)` Kombinationen werden übersprungen — sicheres Mehrfachaufrufen. **Auto-Regulation-Stubs:** Für unbekannte Regulierungscodes werden automatisch Regulation-Stubs angelegt. --- ### Request-Beispiel (POST) ```json { "regulation_id": "uuid-der-regulierung", "article": "Art. 32", "title": "Sicherheit der Verarbeitung", "is_applicable": true, "priority": 1 } ``` ### Response-Felder (RequirementResponse) | Feld | Typ | Beschreibung | |------|-----|--------------| | `id` | string | UUID | | `regulation_code` | string | z.B. "GDPR", "AI_ACT" | | `article` | string | Artikel-Referenz | | `implementation_status` | string | `not_started` / `implemented` / `partial` | | `audit_status` | string | `pending` / `passed` / `failed` | | `last_audit_date` | datetime? | Letztes Audit-Datum | --- ## Frontend **URL:** `https://macmini:3007/sdk/anforderungen` Zeigt eine filterbare Tabelle aller Anforderungen. Detailansicht öffnet sich per Klick und zeigt neben Metadaten optional den RAG-Rechtskontext mit Quellenangabe. --- ## Datenbankschema ```sql compliance_requirements ( id UUID PRIMARY KEY, regulation_id UUID REFERENCES compliance_regulations(id), article VARCHAR, title TEXT, description TEXT, is_applicable BOOLEAN DEFAULT true, priority INTEGER, implementation_status VARCHAR DEFAULT 'not_started', audit_status VARCHAR DEFAULT 'pending', last_audit_date TIMESTAMP, audit_notes TEXT, created_at TIMESTAMP, updated_at TIMESTAMP ) ``` --- ## Tests **Testdatei:** `backend-compliance/tests/test_requirement_routes.py` **Anzahl Tests:** 18 · **Status:** ✅ alle bestanden (Stand 2026-03-05) ```bash cd backend-compliance python3 -m pytest tests/test_requirement_routes.py -v ```