From 54efde77a1be4e746e7d4acefac9cd05e33d1ac0 Mon Sep 17 00:00:00 2001 From: patrick Date: Fri, 18 Sep 2026 21:32:53 +0200 Subject: [PATCH] FDN-14: pruefprotokoll und readme Co-Authored-By: Claude Sonnet 5 --- dms/README.md | 5 +++++ dms/docs/FDN-14-PRUEFPROTOKOLL.md | 34 +++++++++++++++++++++++++++++++ 2 files changed, 39 insertions(+) create mode 100644 dms/docs/FDN-14-PRUEFPROTOKOLL.md diff --git a/dms/README.md b/dms/README.md index 4c74c800..c54f6e99 100644 --- a/dms/README.md +++ b/dms/README.md @@ -24,6 +24,11 @@ App läuft danach auf `:8100` (überschreibbar über liefert Metriken auf `:8101` (`NEXARCH_DMS_WORKER_METRICS_ADDR`). Portbereich des DMS laut `deploy/ports.tsv`: 8100–8199; 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 Aufgaben diff --git a/dms/docs/FDN-14-PRUEFPROTOKOLL.md b/dms/docs/FDN-14-PRUEFPROTOKOLL.md new file mode 100644 index 00000000..2dfbb19c --- /dev/null +++ b/dms/docs/FDN-14-PRUEFPROTOKOLL.md @@ -0,0 +1,34 @@ +# FDN-14 – Prüfprotokoll: Routenpräfix je Modul + +Stand: 2026-09-18. Testhost 192.168.1.131 (`go vet`, `go build ./...`, Tests). Basis: FDN-12 (Skript-Infrastruktur). + +## Umsetzung + +- `internal/routeprefix`: `Validate`, `FromEnv` (`NEXARCH_DMS_APP_ROUTE_PREFIX`, Default `/api/dms/v1`), `Mount` (Untermux + hinter `http.StripPrefix`; Handler registrieren ihre Pfade unverändert ohne Präfix). +- `cmd/app`: `newMux(prefix, metrics)` liefert Wurzel-Mux (`/healthz`, `/metrics`) und Untermux; die fachlichen Routen + (aktuell `POST /retention/destroy-callback`) hängen am Untermux. Fehlerhafter Präfix beendet den Start mit Meldung. +- `downloadapi`: ausgestellte Download-URLs bekommen den Präfix (`SetPathPrefix`, `buildDownloadURL`); sonst wäre die + relative URL `/download?…` hinter dem Präfix nicht erreichbar. +- `deploy/routes.tsv`: Präfix je Modul; `scripts/check-route-prefixes.sh` prüft Format, Eindeutigkeit, Überschneidung + (kein Präfix darf Pfad-Präfix eines anderen sein) und dass `DefaultPrefix` im Code dem Registereintrag entspricht. +- `/healthz` und `/metrics` bleiben bewusst auf Wurzelebene (Betriebs-Endpunkte, keine Fachroute). + +## Prüfungen + +| # | Prüfung | Ergebnis | +|---|---------|----------| +| 1 | Routen unter Präfix antworten, Root-Pfade und fremdes Präfix liefern 404, `/healthz` bleibt (`TestMount_RoutesUnderPrefixOnly`, `TestNewMux_BusinessRoutesOnlyUnderPrefix`); Pfadparameter und Methodenmuster bleiben intakt (`TestMount_PathValuesSurviveStripPrefix`) | bestanden | +| 2 | Präfix per Umgebungsvariable verschiebt alle Routen konsistent, altes Präfix nicht mehr erreichbar; ungültige Werte werden abgelehnt (`TestFromEnv_*`) | bestanden | +| 3 | Prüfskript: Duplikat, verschachtelte Präfixe, ungültige Formate (ohne führenden Slash, `..`, Slash am Ende) und abweichender Code-Default werden erkannt, Repo-Register besteht (`scripts/check-route-prefixes_test.sh`) | bestanden | + +## Offen + +- Die anderen Handler-Pakete (`documentapi`, `folderapi`, `trashapi`, …) sind im `cmd/app` noch nicht verdrahtet; sobald + sie es sind, hängen sie über `RegisterRoutes(api)` automatisch am Präfix. Zum Zeitpunkt dieser Kachel ist nur der + Retention-Rückruf tatsächlich am Präfix. +- Die bei archive registrierte Rückruf-URL muss den Präfix enthalten (README ergänzt); bestehende Registrierungen sind + anzupassen. +- Frontend (`web/`) nutzt eigene Pfade/Proxy-Konfiguration und ist hier nicht angepasst. +- Die Präfixe anderer Module sind im Register reserviert, deren Code prüft dieses Skript nicht. +- nginx-Beispielkonfiguration: `PROXMOX-DEPLOYMENT.md` (Konzept-Repo).