feat(cmp): vendor-agnostic consent data model — 13 new fields
Build + Deploy / build-admin-compliance (push) Successful in 2m28s
Build + Deploy / build-backend-compliance (push) Successful in 3m48s
Build + Deploy / build-ai-sdk (push) Failing after 45s
Build + Deploy / build-developer-portal (push) Successful in 1m28s
Build + Deploy / build-tts (push) Successful in 1m48s
Build + Deploy / build-document-crawler (push) Successful in 48s
Build + Deploy / build-dsms-gateway (push) Successful in 34s
Build + Deploy / build-dsms-node (push) Successful in 20s
CI / branch-name (push) Has been skipped
Build + Deploy / trigger-orca (push) Has been skipped
CI / guardrail-integrity (push) Has been skipped
CI / loc-budget (push) Failing after 24s
CI / secret-scan (push) Has been skipped
CI / go-lint (push) Has been skipped
CI / python-lint (push) Has been skipped
CI / nodejs-lint (push) Has been skipped
CI / nodejs-build (push) Successful in 3m1s
CI / dep-audit (push) Has been skipped
CI / sbom-scan (push) Has been skipped
CI / test-go (push) Failing after 49s
CI / test-python-backend (push) Successful in 45s
CI / test-python-document-crawler (push) Successful in 31s
CI / test-python-dsms-gateway (push) Successful in 27s
CI / validate-canonical-controls (push) Successful in 18s
Build + Deploy / build-admin-compliance (push) Successful in 2m28s
Build + Deploy / build-backend-compliance (push) Successful in 3m48s
Build + Deploy / build-ai-sdk (push) Failing after 45s
Build + Deploy / build-developer-portal (push) Successful in 1m28s
Build + Deploy / build-tts (push) Successful in 1m48s
Build + Deploy / build-document-crawler (push) Successful in 48s
Build + Deploy / build-dsms-gateway (push) Successful in 34s
Build + Deploy / build-dsms-node (push) Successful in 20s
CI / branch-name (push) Has been skipped
Build + Deploy / trigger-orca (push) Has been skipped
CI / guardrail-integrity (push) Has been skipped
CI / loc-budget (push) Failing after 24s
CI / secret-scan (push) Has been skipped
CI / go-lint (push) Has been skipped
CI / python-lint (push) Has been skipped
CI / nodejs-lint (push) Has been skipped
CI / nodejs-build (push) Successful in 3m1s
CI / dep-audit (push) Has been skipped
CI / sbom-scan (push) Has been skipped
CI / test-go (push) Failing after 49s
CI / test-python-backend (push) Successful in 45s
CI / test-python-document-crawler (push) Successful in 31s
CI / test-python-dsms-gateway (push) Successful in 27s
CI / validate-canonical-controls (push) Successful in 18s
Extend banner consent records with consent_method, banner_version, banner_config_hash, geo, page_url, referrer, device info, session_id and consent_scope for full Art. 7 DSGVO proof with any tracking vendor. Migration 107, backward-compatible (all fields nullable). Admin detail modal shows tracking context, device info and technical data. Fix pre-existing str|None → Optional[str] for Python 3.9 compat. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,69 @@
|
||||
-- Migration 107: Vendor-agnostische Felder fuer Banner-Consents
|
||||
-- Erweitert compliance_banner_consents um Felder die fuer beliebige
|
||||
-- Tracking-Anbieter (GA4, Matomo, HubSpot etc.) benoetigt werden.
|
||||
-- Alle Felder nullable → backward-compatible.
|
||||
|
||||
-- Consent-Methode: wie hat der User entschieden
|
||||
ALTER TABLE compliance_banner_consents
|
||||
ADD COLUMN IF NOT EXISTS consent_method TEXT;
|
||||
-- "accept_all" / "reject_all" / "custom_selection"
|
||||
|
||||
-- Banner-Version + Config-Hash zum Zeitpunkt des Consents (Art. 7(1) DSGVO)
|
||||
ALTER TABLE compliance_banner_consents
|
||||
ADD COLUMN IF NOT EXISTS banner_version INTEGER;
|
||||
|
||||
ALTER TABLE compliance_banner_consents
|
||||
ADD COLUMN IF NOT EXISTS banner_config_hash TEXT;
|
||||
|
||||
-- Geo-Daten fuer EWR-Only-Logik
|
||||
ALTER TABLE compliance_banner_consents
|
||||
ADD COLUMN IF NOT EXISTS geo_country TEXT;
|
||||
|
||||
ALTER TABLE compliance_banner_consents
|
||||
ADD COLUMN IF NOT EXISTS geo_region TEXT;
|
||||
|
||||
-- Geltungsbereich: "page" / "domain" / "cross-domain"
|
||||
ALTER TABLE compliance_banner_consents
|
||||
ADD COLUMN IF NOT EXISTS consent_scope TEXT DEFAULT 'domain';
|
||||
|
||||
-- Tracking-Kontext
|
||||
ALTER TABLE compliance_banner_consents
|
||||
ADD COLUMN IF NOT EXISTS page_url TEXT;
|
||||
|
||||
ALTER TABLE compliance_banner_consents
|
||||
ADD COLUMN IF NOT EXISTS referrer TEXT;
|
||||
|
||||
-- Device-Informationen (parsed aus User-Agent im Frontend)
|
||||
ALTER TABLE compliance_banner_consents
|
||||
ADD COLUMN IF NOT EXISTS device_type TEXT;
|
||||
-- "mobile" / "desktop" / "tablet"
|
||||
|
||||
ALTER TABLE compliance_banner_consents
|
||||
ADD COLUMN IF NOT EXISTS browser TEXT;
|
||||
|
||||
ALTER TABLE compliance_banner_consents
|
||||
ADD COLUMN IF NOT EXISTS os TEXT;
|
||||
|
||||
ALTER TABLE compliance_banner_consents
|
||||
ADD COLUMN IF NOT EXISTS screen_resolution TEXT;
|
||||
|
||||
-- Session-basierte Zuordnung
|
||||
ALTER TABLE compliance_banner_consents
|
||||
ADD COLUMN IF NOT EXISTS session_id TEXT;
|
||||
|
||||
-- Audit-Log ebenfalls erweitern (consent_method fuer Nachweis)
|
||||
ALTER TABLE compliance_banner_consent_audit_log
|
||||
ADD COLUMN IF NOT EXISTS consent_method TEXT;
|
||||
|
||||
ALTER TABLE compliance_banner_consent_audit_log
|
||||
ADD COLUMN IF NOT EXISTS page_url TEXT;
|
||||
|
||||
-- Index auf consent_method fuer Reporting
|
||||
CREATE INDEX IF NOT EXISTS idx_banner_consent_method
|
||||
ON compliance_banner_consents (consent_method)
|
||||
WHERE consent_method IS NOT NULL;
|
||||
|
||||
-- Index auf session_id fuer Session-Lookup
|
||||
CREATE INDEX IF NOT EXISTS idx_banner_consent_session
|
||||
ON compliance_banner_consents (session_id)
|
||||
WHERE session_id IS NOT NULL;
|
||||
Reference in New Issue
Block a user