Files
breakpilot-compliance/backend-compliance/migrations/013_obligations.sql
Benjamin Admin a4df3201db
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
feat: Obligations-Modul auf 100% — vollständige CRUD-Implementierung
- 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>
2026-03-03 15:58:50 +01:00

32 lines
1.7 KiB
SQL

-- 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);