Files
nexarch/docs/MAI-03-PRUEFPROTOKOLL.md
patrickandClaude Sonnet 5 b7c4bfcc59
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
MAI-03: dsgvo-loeschanfragen-migration
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>
2026-10-14 20:03:57 +00:00

3.2 KiB
Raw Permalink Blame History

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 durch ProcessDeletionRequest geschickt (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 in dsgvo_decision_log geschrieben — kein deletion_requests-Eintrag, also kein aktiver Vorgang.
  • indexed_at-artige Statusfelder der Quelle werden nicht übernommen (SourceRequest kennt nur open/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).