feat: Obligations-Modul auf 100% — vollständige CRUD-Implementierung
All checks were successful
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) Successful in 35s
CI / test-python-backend-compliance (push) Successful in 38s
CI / test-python-document-crawler (push) Successful in 25s
CI / test-python-dsms-gateway (push) Successful in 21s
All checks were successful
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) Successful in 35s
CI / test-python-backend-compliance (push) Successful in 38s
CI / test-python-document-crawler (push) Successful in 25s
CI / test-python-dsms-gateway (push) Successful in 21s
- Backend: compliance_obligations Tabelle (Migration 013) - Backend: obligation_routes.py — GET/POST/PUT/DELETE + Stats-Endpoint - Backend: obligation_router in __init__.py registriert - Frontend: obligations/page.tsx — ObligationModal, ObligationDetail, ObligationCard, alle Buttons verdrahtet - Proxy: PATCH-Methode in compliance catch-all route ergänzt - Tests: 39/39 Obligation-Tests (Schemas, Helpers, Business Logic) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
31
backend-compliance/migrations/013_obligations.sql
Normal file
31
backend-compliance/migrations/013_obligations.sql
Normal file
@@ -0,0 +1,31 @@
|
||||
-- Migration 013: Compliance Obligations Tracking
|
||||
-- Standalone obligation items (DSGVO/AI-Act Pflichten-Verwaltung)
|
||||
-- Derived from UCCA assessments or created manually
|
||||
|
||||
SET search_path TO compliance, core, public;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS compliance_obligations (
|
||||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||||
tenant_id UUID NOT NULL DEFAULT '9282a473-5c95-4b3a-bf78-0ecc0ec71d3e',
|
||||
title TEXT NOT NULL,
|
||||
description TEXT,
|
||||
source TEXT NOT NULL DEFAULT 'DSGVO', -- 'DSGVO', 'AI Act', 'NIS2', etc.
|
||||
source_article TEXT, -- e.g. 'Art. 35', 'Art. 9'
|
||||
deadline TIMESTAMPTZ,
|
||||
status TEXT NOT NULL DEFAULT 'pending', -- pending|in-progress|completed|overdue
|
||||
priority TEXT NOT NULL DEFAULT 'medium', -- critical|high|medium|low
|
||||
responsible TEXT,
|
||||
linked_systems JSONB DEFAULT '[]'::jsonb,
|
||||
-- Link to UCCA assessment (if auto-derived)
|
||||
assessment_id UUID,
|
||||
rule_code TEXT, -- UCCA rule code if derived
|
||||
notes TEXT,
|
||||
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
||||
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
||||
);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_obligations_tenant ON compliance_obligations(tenant_id);
|
||||
CREATE INDEX IF NOT EXISTS idx_obligations_status ON compliance_obligations(status);
|
||||
CREATE INDEX IF NOT EXISTS idx_obligations_priority ON compliance_obligations(priority);
|
||||
CREATE INDEX IF NOT EXISTS idx_obligations_deadline ON compliance_obligations(deadline) WHERE deadline IS NOT NULL;
|
||||
CREATE INDEX IF NOT EXISTS idx_obligations_created ON compliance_obligations(created_at DESC);
|
||||
Reference in New Issue
Block a user