CMP-07: dsgvo-loeschantrag-recht-auf-loeschung
- dpreport.SubjectRecord additiv um RetentionObjectID erweitert (CMP-02, bestehendes Verhalten unveraendert) - migrations/0011_dsgvo_decision_log: vollstaendiges Protokoll jeder Einzelentscheidung - archive/internal/dsgvorequest.ProcessDeletionRequest: ruft ausschliesslich CMP-02 (Suche), RET-03 (Sperrpruefung), CMP-06 (Freigabe) auf - keine zweite Aufbewahrungs-/Freigabelogik (vermeidet den im Ticket dokumentierten archivmail-Fehler) - 3 Tests real bestanden: gemischter Datenbestand (1 Loeschung + 1 Ablehnung, Loeschung vollstaendig bis zur tatsaechlichen Vernichtung durchgefuehrt), Legal Hold blockiert trotz abgelaufener Frist, Mandantentrennung real ueber zwei physisch getrennte Tenant-DBs - Migration real auf dms_tenant_test angewendet Pruefungen siehe archive/docs/CMP-07-PRUEFPROTOKOLL.md
This commit is contained in:
@@ -0,0 +1,15 @@
|
||||
-- CMP-07: vollständiges, dauerhaftes Protokoll JEDER Einzelentscheidung
|
||||
-- eines DSGVO-Löschantrags (Akzeptanzkriterium 4) - gelöscht UND
|
||||
-- abgelehnt, je Objekt einzeln, nicht nur eine Sammelentscheidung.
|
||||
CREATE TABLE IF NOT EXISTS dsgvo_decision_log (
|
||||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||||
data_subject_ref TEXT NOT NULL,
|
||||
retention_object_id UUID NOT NULL REFERENCES retention_objects(id) ON DELETE RESTRICT,
|
||||
object_type TEXT NOT NULL,
|
||||
object_reference TEXT NOT NULL,
|
||||
outcome TEXT NOT NULL CHECK (outcome IN ('deletion_requested', 'rejected', 'already_deleted')),
|
||||
reason TEXT NOT NULL,
|
||||
decided_at TIMESTAMPTZ NOT NULL DEFAULT now(),
|
||||
decided_by TEXT NOT NULL
|
||||
);
|
||||
CREATE INDEX IF NOT EXISTS idx_dsgvo_decision_log_subject ON dsgvo_decision_log (data_subject_ref);
|
||||
Reference in New Issue
Block a user