Iteration 1 (Laeufe 1.1-1.5 gegen den Wegwerf-Cluster auf Host 204): - I-1 (Lauf 1.1, MAP-01/MAP-03): Export erwartete tenants.domain und users.name, die Altsysteme fuehren tenant_domains bzw. users.username. Behoben ueber Export-Sichten (Schritt EXP-01) statt Aenderung der MAP-Pakete. - I-2 (Lauf 1.2, MAP-02/MAP-03): einseitige Mandanten (nur in einem Altsystem) wurden von InsertCandidates verworfen und von usermatch uebersprungen und waeren nie migriert worden. Jetzt pending in der Map (Freigabe bleibt Pflicht), Benutzer als einseitige Kandidaten. - I-3 (Lauf 1.3, COR-03): dokumentierte archivmail-Rollen domain_admin, auditor, domain_auditor ohne Core-Rolle. Ergaenzt (Pruefer -> user), superadmin bleibt fail-closed. - I-4 (Lauf 1.4, TAR-01 -> MAI-03): retention_objects ohne data_subject_ref, offene DSGVO-Anfragen liefen ins Leere. TAR-01 uebernimmt die betroffene Person aus der Quelle. Lauf 1.5 lief vollstaendig durch. Protokolle unter docs/cut-01/iteration-1. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
NEXARCH DMS
Dokumentenmanagement-Modul von NEXARCH. Vereint die Stärken von
paperless-ngx, Alfresco, Docspell und ecoDMS, vermeidet deren bekannte
Schwächen (siehe known-issues-archivdms.md im dms-kanban/-Ordner).
Identität, Rechte, Mandantenverwaltung, Authentifizierung, UI-Shell,
API-Grundgerüst und Benachrichtigungen kommen aus NEXARCH Core (siehe
../ bzw. ../../core-kanban/) — dieses Modul implementiert nur die
DMS-eigene Logik.
Setup
Voraussetzung: Go 1.22+.
cd dms
make install # baut App und Worker
make run # startet beide (Strg+C beendet beide)
App läuft danach auf :8600 (überschreibbar über
NEXARCH_DMS_APP_LISTEN_ADDR), GET /healthz liefert den Status. Der Worker
liefert Metriken auf :8601 (NEXARCH_DMS_WORKER_METRICS_ADDR). Portbereich des
DMS laut deploy/ports.tsv: 8600–8699; Prüfung: scripts/check-port-defaults.sh.
Fachliche Routen (z. B. POST /retention/destroy-callback) liegen unter dem Präfix
/api/dms/v1 (NEXARCH_DMS_APP_ROUTE_PREFIX, Register deploy/routes.tsv, Prüfung
scripts/check-route-prefixes.sh); nur /healthz und /metrics bleiben auf Wurzelebene. Die bei archive
registrierte Rückruf-URL (NEXARCH_DMS_APP_RETENTION_CALLBACK_URL) muss den Präfix enthalten.
Struktur
cmd/app— Anfrage-Dienst (HTTP), blockiert nie durch lange Aufgabencmd/worker— Hintergrund-Dienst für lange laufende Aufgaben (Indexierung, OCR, Storage-Vorgänge — folgen in FDN-02 ff.)internal/shared— von App und Worker gemeinsam genutzter Code
Prüfungen
make fmt # gofmt-Verstöße brechen ab
make lint # golangci-lint
make test # go test ./...
Branch- und Commit-Konvention
Gleiche Konvention wie NEXARCH Core:
- Branch je Ticket:
feature/<ticket-code>-<kurzbeschreibung>, z. B.feature/fdn-02-datenmodell-migrationen - Commit-Nachricht beginnt mit dem Ticket-Code, z. B.
FDN-02: datenmodell & migrationen - Ein Ticket = ein Branch. Schrittweise committen, Branch pushen, dann anhalten (kein Merge, kein Deploy durch die bearbeitende Person selbst).
- Deutschsprachige Oberflächentexte, englischsprachige Bezeichner im Code.
- Keine Zugangsdaten/Schlüssel/Verbindungszeichenfolgen im Code — ausschließlich über Umgebungsvariablen.