CI / Web-Barrierefreiheitspruefung (axe, Tastatur, Reflow, Textabstaende) (push) Canceled after 0s
CI / Web-Barrierefreiheitspruefung (axe, Tastatur, Reflow, Textabstaende) (pull_request) Canceled after 0s
CI / Core-Modul (Build/Vet/Test) (push) Canceled after 0s
CI / DMS Security-Test-Gate (AC5, Merge-Gate) (push) Canceled after 0s
CI / Connect Security-Test-Gate (QA-01 AC4, Merge-Gate) (push) Canceled after 0s
CI / Web (dms-browser) (pull_request) Canceled after 0s
CI / DMS-Modul Supply-Chain-Scan (govulncheck) (push) Canceled after 0s
CI / Web (dms-browser) (push) Canceled after 0s
CI / Web (pdf-viewer) (push) Canceled after 0s
CI / Web (shl) (push) Canceled after 0s
Supply-Chain-Scan (Go) / govulncheck (push) Canceled after 0s
CI / Core-Modul (Build/Vet/Test) (pull_request) Canceled after 0s
CI / DMS Security-Test-Gate (AC5, Merge-Gate) (pull_request) Canceled after 0s
CI / Connect Security-Test-Gate (QA-01 AC4, Merge-Gate) (pull_request) Canceled after 0s
CI / DMS-Modul Supply-Chain-Scan (govulncheck) (pull_request) Canceled after 0s
CI / Web (pdf-viewer) (pull_request) Canceled after 0s
CI / Web (shl) (pull_request) Canceled after 0s
Core-Schnittstellen-Vertragstests / contract-tests (pull_request) Canceled after 0s
Supply-Chain-Scan (Go) / govulncheck (pull_request) Canceled after 0s
Supply-Chain-Scan (npm) / npm-audit (pull_request) Canceled after 0s
Core-Pflichttest-Gate / pflichttest-gate (pull_request) Canceled after 0s
RBAC-Rollenhierarchie-Pflichtgate / rbac-policy-invariant (pull_request) Canceled after 0s
CI / DMS-Modul (Lint/Build/Test/Coverage/Artefakt) (push) Canceled after 0s
CI / DMS-Modul (Lint/Build/Test/Coverage/Artefakt) (pull_request) Canceled after 0s
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
39 lines
1.8 KiB
SQL
39 lines
1.8 KiB
SQL
-- ENG-09: Ereignisvertrag (Tenant-Bindung, Idempotenz) und mandantenweite
|
|
-- Zuordnung von DMS-Ereignissen zu Aufgabe/Genehmigungslauf.
|
|
ALTER TABLE module_events ADD COLUMN tenant_slug TEXT NOT NULL DEFAULT '';
|
|
ALTER TABLE module_events ADD COLUMN dedupe_key TEXT NOT NULL DEFAULT '';
|
|
ALTER TABLE module_events ADD COLUMN event_version INT NOT NULL DEFAULT 1;
|
|
ALTER TABLE module_events ADD COLUMN occurred_at TIMESTAMPTZ NOT NULL DEFAULT now();
|
|
ALTER TABLE module_events ADD COLUMN accepted BOOLEAN NOT NULL DEFAULT true;
|
|
ALTER TABLE module_events ADD COLUMN rejected_reason TEXT;
|
|
ALTER TABLE module_events ADD COLUMN processed_at TIMESTAMPTZ;
|
|
|
|
-- Doppelte Zustellung desselben Ereignisses (mindestens einmal) faellt auf
|
|
-- dieselbe Zeile statt eine zweite anzulegen.
|
|
CREATE UNIQUE INDEX module_events_dedupe_key_idx ON module_events (dedupe_key) WHERE dedupe_key <> '';
|
|
|
|
-- Mandantenweite Zuordnung Ereignis -> Aufgabe/Genehmigungslauf.
|
|
CREATE TABLE event_task_rules (
|
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
module_name TEXT NOT NULL,
|
|
object_type TEXT NOT NULL,
|
|
trigger TEXT NOT NULL,
|
|
kind TEXT NOT NULL CHECK (kind IN ('task', 'approval')),
|
|
assignee_type TEXT NOT NULL,
|
|
assignee_id TEXT NOT NULL,
|
|
title TEXT NOT NULL,
|
|
enabled BOOLEAN NOT NULL DEFAULT true,
|
|
created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
|
|
UNIQUE (module_name, object_type, trigger)
|
|
);
|
|
|
|
-- Nachweis, dass ein Ereignis genau einmal ausgeloest hat; die Zeile
|
|
-- entsteht in derselben Transaktion wie processed_at, damit ein Abbruch
|
|
-- zwischen Aufgabe-Anlegen und Markieren nicht zu einer Dublette fuehrt.
|
|
CREATE TABLE event_dispatch_log (
|
|
event_id UUID PRIMARY KEY REFERENCES module_events(id),
|
|
kind TEXT NOT NULL,
|
|
created_object_id TEXT NOT NULL,
|
|
dispatched_at TIMESTAMPTZ NOT NULL DEFAULT now()
|
|
);
|