From a50a9810ee778734c8d4903b3e8819a8a35fe162 Mon Sep 17 00:00:00 2001 From: Benjamin Admin Date: Mon, 2 Mar 2026 12:46:11 +0100 Subject: [PATCH] =?UTF-8?q?feat:=20Analyse-Module=20auf=20100%=20=E2=80=94?= =?UTF-8?q?=20Backend-Wiring,=20Proxy-Route,=20DELETE-Endpoints?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 7 Analyse-Module (Requirements, Controls, Evidence, Risk Matrix, AI Act, Audit Checklist, Audit Report) von ~35% auf 100% gebracht: - Catch-all Proxy-Route /api/sdk/v1/compliance/[[...path]] erstellt - DELETE-Endpoints fuer Risks und Evidence im Backend hinzugefuegt - Alle 7 Frontend-Seiten ans Backend gewired (Fetch, PUT, POST, DELETE) - Mock-Daten durch Backend-Daten ersetzt, Templates als Fallback - Loading-Skeletons und Error-Banner hinzugefuegt - AI Act: Add-System-Form + assess-risk API-Integration - Audit Report: API-Pfade von /api/admin/ auf /api/sdk/v1/compliance/ korrigiert Co-Authored-By: Claude Opus 4.6 --- .../app/(sdk)/sdk/ai-act/page.tsx | 248 ++++++++++++++++-- .../app/(sdk)/sdk/audit-checklist/page.tsx | 194 ++++++++++---- .../app/(sdk)/sdk/audit-report/page.tsx | 12 +- .../app/(sdk)/sdk/controls/page.tsx | 124 +++++++-- .../app/(sdk)/sdk/evidence/page.tsx | 232 +++++++++++++--- .../app/(sdk)/sdk/requirements/page.tsx | 125 +++++++-- admin-compliance/app/(sdk)/sdk/risks/page.tsx | 137 +++++++++- .../sdk/v1/compliance/[[...path]]/route.ts | 127 +++++++++ .../compliance/api/evidence_routes.py | 24 ++ .../compliance/api/risk_routes.py | 18 ++ 10 files changed, 1066 insertions(+), 175 deletions(-) create mode 100644 admin-compliance/app/api/sdk/v1/compliance/[[...path]]/route.ts diff --git a/admin-compliance/app/(sdk)/sdk/ai-act/page.tsx b/admin-compliance/app/(sdk)/sdk/ai-act/page.tsx index 4ca76bb..df43284 100644 --- a/admin-compliance/app/(sdk)/sdk/ai-act/page.tsx +++ b/admin-compliance/app/(sdk)/sdk/ai-act/page.tsx @@ -18,13 +18,14 @@ interface AISystem { status: 'draft' | 'classified' | 'compliant' | 'non-compliant' obligations: string[] assessmentDate: Date | null + assessmentResult: Record | null } // ============================================================================= -// MOCK DATA +// INITIAL DATA // ============================================================================= -const mockAISystems: AISystem[] = [ +const initialSystems: AISystem[] = [ { id: 'ai-1', name: 'Kundenservice Chatbot', @@ -35,6 +36,7 @@ const mockAISystems: AISystem[] = [ status: 'classified', obligations: ['Transparenzpflicht', 'Kennzeichnung als KI-System'], assessmentDate: new Date('2024-01-15'), + assessmentResult: null, }, { id: 'ai-2', @@ -46,6 +48,7 @@ const mockAISystems: AISystem[] = [ status: 'non-compliant', obligations: ['Risikomanagementsystem', 'Datenlenkung', 'Technische Dokumentation', 'Menschliche Aufsicht', 'Transparenz'], assessmentDate: new Date('2024-01-10'), + assessmentResult: null, }, { id: 'ai-3', @@ -57,17 +60,7 @@ const mockAISystems: AISystem[] = [ status: 'compliant', obligations: [], assessmentDate: new Date('2024-01-05'), - }, - { - id: 'ai-4', - name: 'Neue KI-Anwendung', - description: 'Noch nicht klassifiziertes System', - classification: 'unclassified', - purpose: 'In Evaluierung', - sector: 'Unbestimmt', - status: 'draft', - obligations: [], - assessmentDate: null, + assessmentResult: null, }, ] @@ -107,7 +100,113 @@ function RiskPyramid({ systems }: { systems: AISystem[] }) { ) } -function AISystemCard({ system }: { system: AISystem }) { +function AddSystemForm({ + onSubmit, + onCancel, +}: { + onSubmit: (system: Omit) => void + onCancel: () => void +}) { + const [formData, setFormData] = useState({ + name: '', + description: '', + purpose: '', + sector: '', + classification: 'unclassified' as AISystem['classification'], + status: 'draft' as AISystem['status'], + obligations: [] as string[], + }) + + return ( +
+

Neues KI-System registrieren

+
+
+ + setFormData({ ...formData, name: e.target.value })} + placeholder="z.B. Dokumenten-Scanner" + className="w-full px-4 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-purple-500 focus:border-transparent" + /> +
+
+ +