VVT: Master library tables (7 catalogs), 500+ seed entries, process templates with instantiation, library API endpoints + 18 tests. Loeschfristen: Baseline catalog, compliance checks, profiling engine, HTML document generator, MkDocs documentation. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
55 lines
2.9 KiB
PL/PgSQL
55 lines
2.9 KiB
PL/PgSQL
-- Migration 066: VVT Process Templates + Activity extensions
|
|
-- Template table + new ref columns on compliance_vvt_activities
|
|
|
|
BEGIN;
|
|
|
|
-- =============================================================================
|
|
-- Process Templates
|
|
-- =============================================================================
|
|
CREATE TABLE IF NOT EXISTS vvt_process_templates (
|
|
id VARCHAR(80) PRIMARY KEY,
|
|
name VARCHAR(300) NOT NULL,
|
|
description TEXT,
|
|
business_function VARCHAR(50),
|
|
purpose_refs JSONB DEFAULT '[]'::jsonb,
|
|
legal_basis_refs JSONB DEFAULT '[]'::jsonb,
|
|
data_subject_refs JSONB DEFAULT '[]'::jsonb,
|
|
data_category_refs JSONB DEFAULT '[]'::jsonb,
|
|
recipient_refs JSONB DEFAULT '[]'::jsonb,
|
|
tom_refs JSONB DEFAULT '[]'::jsonb,
|
|
transfer_mechanism_refs JSONB DEFAULT '[]'::jsonb,
|
|
retention_rule_ref VARCHAR(50),
|
|
typical_systems JSONB DEFAULT '[]'::jsonb,
|
|
protection_level VARCHAR(10) DEFAULT 'MEDIUM',
|
|
dpia_required BOOLEAN DEFAULT FALSE,
|
|
risk_score INTEGER,
|
|
tags JSONB DEFAULT '[]'::jsonb,
|
|
is_system BOOLEAN DEFAULT TRUE,
|
|
tenant_id UUID,
|
|
sort_order INTEGER DEFAULT 0,
|
|
created_at TIMESTAMPTZ DEFAULT NOW(),
|
|
updated_at TIMESTAMPTZ DEFAULT NOW()
|
|
);
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_vvt_process_templates_bf ON vvt_process_templates(business_function);
|
|
CREATE INDEX IF NOT EXISTS idx_vvt_process_templates_system ON vvt_process_templates(is_system);
|
|
|
|
-- =============================================================================
|
|
-- New columns on compliance_vvt_activities (all DEFAULT NULL for backward compat)
|
|
-- =============================================================================
|
|
ALTER TABLE compliance_vvt_activities ADD COLUMN IF NOT EXISTS purpose_refs JSONB DEFAULT NULL;
|
|
ALTER TABLE compliance_vvt_activities ADD COLUMN IF NOT EXISTS legal_basis_refs JSONB DEFAULT NULL;
|
|
ALTER TABLE compliance_vvt_activities ADD COLUMN IF NOT EXISTS data_subject_refs JSONB DEFAULT NULL;
|
|
ALTER TABLE compliance_vvt_activities ADD COLUMN IF NOT EXISTS data_category_refs JSONB DEFAULT NULL;
|
|
ALTER TABLE compliance_vvt_activities ADD COLUMN IF NOT EXISTS recipient_refs JSONB DEFAULT NULL;
|
|
ALTER TABLE compliance_vvt_activities ADD COLUMN IF NOT EXISTS retention_rule_ref VARCHAR(50) DEFAULT NULL;
|
|
ALTER TABLE compliance_vvt_activities ADD COLUMN IF NOT EXISTS transfer_mechanism_refs JSONB DEFAULT NULL;
|
|
ALTER TABLE compliance_vvt_activities ADD COLUMN IF NOT EXISTS tom_refs JSONB DEFAULT NULL;
|
|
ALTER TABLE compliance_vvt_activities ADD COLUMN IF NOT EXISTS linked_loeschfristen_ids JSONB DEFAULT NULL;
|
|
ALTER TABLE compliance_vvt_activities ADD COLUMN IF NOT EXISTS linked_tom_measure_ids JSONB DEFAULT NULL;
|
|
ALTER TABLE compliance_vvt_activities ADD COLUMN IF NOT EXISTS source_template_id VARCHAR(80) DEFAULT NULL;
|
|
ALTER TABLE compliance_vvt_activities ADD COLUMN IF NOT EXISTS risk_score INTEGER DEFAULT NULL;
|
|
ALTER TABLE compliance_vvt_activities ADD COLUMN IF NOT EXISTS art30_completeness JSONB DEFAULT NULL;
|
|
|
|
COMMIT;
|