feat(archive): RET-05 Modul-Adapter-Schnittstelle (Interface-Freeze)

internal/moduleadapter: Registrierungs-API + Rueckruf-Ausloeser fuer
DMS/Mail, bewusst NUR Archives eigene Seite - keine Modul-Empfaenger-
Implementierung (Nutzervorgabe: Interface zuerst festlegen, damit
DMS/Mail spaeter nicht gegen ein sich noch aenderndes Interface bauen).
Register ist ON-CONFLICT-DO-NOTHING (erneute Registrierung aendert nie
bestehende callback_url), NotifyDestruction echter HTTP-POST mit festem
DestructionNotice-Vertrag. Idempotenz sowohl auf Go- als auch HTTP-
Ebene bewiesen, Rueckruf gegen echten Testendpunkt verifiziert.
This commit is contained in:
sysops
2026-08-30 01:38:57 +02:00
parent b37b790792
commit 19dca43012
7 changed files with 477 additions and 0 deletions
@@ -0,0 +1 @@
DROP TABLE IF EXISTS module_registrations;
@@ -0,0 +1,14 @@
-- RET-05: Modul-Adapter-Schnittstelle. Ein Modul (DMS, Mail, ...)
-- registriert je Objekttyp EINE Rueckruf-Adresse fuer Loeschbestaetigung
-- - Archive kennt danach nur noch module_name/object_type/callback_url,
-- keine Modul-Interna. Mandantenfaehig durch Modell C (physisch
-- isolierte Tenant-DB, TEN-01) - kein tenant_id-Feld noetig, dieselbe
-- Begruendung wie RET-01s retention_objects.
CREATE TABLE IF NOT EXISTS module_registrations (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
module_name TEXT NOT NULL,
object_type TEXT NOT NULL,
callback_url TEXT NOT NULL,
created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
UNIQUE (module_name, object_type)
);