FDN-14: pruefprotokoll und readme

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
patrickandClaude Sonnet 5 committed 2026-09-18 21:32:53 +02:00
1 parent bba98f6d38
commit 54efde77a1
2 files changed
+39

No files matched your search

+5
View File
@@ -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
+34
View File
@@ -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).