CI / Web-Barrierefreiheitspruefung (axe, Tastatur, Reflow, Textabstaende) (push) Canceled after 0s
CI / Web-Barrierefreiheitspruefung (axe, Tastatur, Reflow, Textabstaende) (pull_request) Canceled after 0s
Supply-Chain-Scan (Go) / govulncheck (push) Canceled after 0s
CI / DMS Security-Test-Gate (AC5, Merge-Gate) (push) Canceled after 0s
CI / Core-Modul (Build/Vet/Test) (push) Canceled after 0s
CI / Connect Security-Test-Gate (QA-01 AC4, Merge-Gate) (push) 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
Archive-Pflichttest-Gate / pflichttest-gate (pull_request) 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 (dms-browser) (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
Offene DSGVO-Loeschanfragen aus archivmail werden ueber die bestehende CMP-07-Entscheidungslogik (dsgvorequest.ProcessDeletionRequest) als aktiver Vorgang migriert, abgeschlossene Anfragen nur als historischer Audit-Eintrag in dsgvo_decision_log, ohne neuen aktiven Vorgang. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
3.2 KiB
3.2 KiB
MAI-03 – Prüfprotokoll: DSGVO-Löschanfragen-Migration
Umsetzung
Neues Paket archive/internal/dsgvorequestmigration (Muster TAR-01/
retentionmigration: abstrakte Source-Schnittstelle für archivmail,
Migrator.MigrateAll, kein Umbau angrenzender Pakete).
- Offene Anfrage (
StatusOpen) →dsgvorequest.ProcessDeletionRequest(CMP-07) wird direkt aufgerufen — keine zweite Prüf-/Entscheidungs- logik, der bestehende Workflow erzeugt den aktiven Vorgang (deletion_requests, Vier-Augen-Freigabe) und protokolliert jede Einzelentscheidung (dsgvo_decision_log). - Abgeschlossene Anfrage (
StatusCompleted) → NICHT erneut durchProcessDeletionRequestgeschickt (würde für noch vorhandene, abgelaufene Objekte fälschlich einen neuen aktiven Vorgang anstoßen), sondern je aktuell gespeichertem Objekt der betroffenen Person (dpreport.SubjectReport) direkt ein Audit-Eintrag indsgvo_decision_loggeschrieben — keindeletion_requests-Eintrag, also kein aktiver Vorgang. indexed_at-artige Statusfelder der Quelle werden nicht übernommen (SourceRequestkennt nuropen/completed).
Prüfungen (echter Postgres-Testcluster, Host 204, TEST_TENANT_DSN)
| # | Prüfung | Ergebnis |
|---|---|---|
| 1 | Jede offene Löschanfrage ist nach Migration als aktiver Vorgang vorhanden (Akzeptanzkriterium 1) | bestanden – TestMigrateAll_OpenRequestBecomesActiveDeletionRequest: offene Anfrage erzeugt genau 1 Zeile in deletion_requests für das zugehörige Objekt |
| 2 | Jede abgeschlossene Anfrage ist nur als historischer Audit-Eintrag auffindbar, nicht als aktiver Vorgang (Akzeptanzkriterium 2) | bestanden – TestMigrateAll_CompletedRequestIsHistoricalOnly: abgeschlossene Anfrage erzeugt 0 Zeilen in deletion_requests, aber genau 1 auffindbaren Eintrag in dsgvo_decision_log |
| 3 | Zeilenzahl offener Anfragen nach Migration deckungsgleich mit Quelle (Pflichtprüfung 1) | bestanden – TestMigrateAll_RowCountMatchesSourceForOpenRequests: 20 synthetische offene Anfragen in Quelle, nach Migration exakt 20 Zeilen in deletion_requests |
| 4 | Stichprobe abgeschlossener Anfragen als Audit-Eintrag auffindbar (Pflichtprüfung 2) | bestanden – in Prüfung 2 enthalten (direkter Datenbank-Lookup auf dsgvo_decision_log nach retention_object_id+data_subject_ref) |
Build/Test-Ergebnis (Host 204)
cd archive && go build ./... -> clean
cd archive && go vet ./internal/dsgvorequestmigration/... -> clean
cd archive && go test ./internal/dsgvorequestmigration/... -v -p 1
-> PASS (3/3 Tests)
cd archive && go test ./... -p 1
-> alle Pakete bestanden bis auf internal/reconcile
(TestListDBStorageKeys_ReadsRealFileRevisions, vorbestehender
Fehlschlag durch gemeinsam genutzten Datei-Zustand auf dem
Testhost, unabhängig von dieser Änderung — Paket nicht berührt)
Nicht umgesetzt / bewusst ausgelassen
- Keine echte archivmail-SQL-Anbindung (
Source-Implementierung gegen die archivmail-Datenbank) — wie bei MAI-02/TAR-01 bleibt dies eine abstrakte Schnittstelle, Tests nutzen ausschließlich synthetische Fixtures (DSGVO: keine echten archivmail-Daten als Testfixtures).