Files
nexarch/dms/docs/DOC-18-PRUEFPROTOKOLL.md
T
patrickandClaude Sonnet 5 79c4458618 DOC-18: obergrenze fuer gesamtgroesse/anzahl bei archiv-buendelung
Enqueue prueft konfigurierbare Obergrenzen (Dokumentanzahl, Gesamtgroesse)
VOR dem Anlegen des Auftrags/Einreihen des Jobs und lehnt Ueberschreitungen
mit konkreter Fehlermeldung ab, statt den Job-Worker-Pool zu belasten.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-18 00:55:36 +02:00

3.0 KiB
Raw Blame History

DOC-18 – Prüfprotokoll: Obergrenze für Gesamtgröße/Anzahl bei Archiv-Bündelung

Stand: 2026-09-18. Testhost 192.168.1.131.

Umsetzung

internal/export.Enqueue bekommt einen Limits{MaxDocuments, MaxTotalSizeBytes}-Parameter (Akzeptanzkriterium 3: vom Aufrufer — cmd/app, aus Umgebungsvariablen — befüllt, nicht hart im Code verankert; ein Feldwert von 0 bedeutet "keine Grenze"). Beide Grenzen werden GEPRÜFT, BEVOR die document_exports-Zeile angelegt oder irgendein Job eingereiht wird (Akzeptanzkriterium 1) — bei Überschreitung liefert Enqueue einen eigenen, konkreten Fehlertyp (ErrTooManyDocuments/ErrTotalSizeTooLarge) mit den tatsächlichen Zahlen (angefragt vs. erlaubt) statt einer generischen Ablehnung.

Die Gesamtgröße wird über die bereits vorhandenen file_revisions.size_bytes der aktuellen Revisionen ermittelt (SUM über die angefragten Dokument-IDs) — keine zusätzliche Datenhaltung nötig.

Prüfung 1: Anfrage oberhalb der Obergrenze wird abgelehnt, kein Job gestartet

TestEnqueue_RejectsTooManyDocuments und TestEnqueue_RejectsTotalSizeAboveLimit — beide PASS-fertig: bei Überschreitung wird real geprüft, dass WEDER eine document_exports-Zeile NOCH ein processing_jobs-Eintrag entsteht (nicht nur, dass ein Fehler zurückkommt) — die Ablehnung ist vollständig, kein Halbzustand.

Prüfung 2: Anfrage innerhalb der Obergrenze wird normal verarbeitet

TestEnqueue_WithinLimitsProcessesNormally — dieselbe Enqueue-Funktion mit großzügigen Grenzen verarbeitet zwei Dokumente unverändert bis zum Zustand "ready" — die DOC-08-Funktionalität selbst ist durch die Prüflogik nicht verändert.

Prüfung 3: Regressionstest bestehender DOC-08-Funktionalität

Alle vier bereits in DOC-08 geschriebenen Tests (TestExport_RunsAsAsyncJobAndProducesReadableZip, TestExport_ManifestListsAllDocumentsWithChecksum, TestExport_SkipsUnauthorizedDocuments, TestExport_HandlesOneThousandDocumentsWithoutMemoryBlowup) wurden auf den neuen Enqueue-Aufrufvertrag umgestellt (Limits{} = keine Grenze) und laufen unverändert weiter — keine Verhaltensänderung außerhalb der neuen Prüfung selbst.

Akzeptanzkriterien 1–3

  • Ablehnung vor Jobstart mit klarer Meldung: siehe Prüfung 1 — PASS.
  • Bündelung innerhalb der Obergrenze unverändert: siehe Prüfung 2 — PASS.
  • Obergrenzen konfigurierbar, nicht hart verankert: TestEnqueue_ZeroLimitMeansUnbounded — PASS, derselbe Code verhält sich je nach übergebenem Limits-Wert unterschiedlich, keine Konstante im Quelltext.

Regressionsnachweis

go build ./..., go vet ./..., gofmt -l .: sauber. go test ./... -p 1: alle Pakete PASS, keine Regression.

Offene Punkte

Alle sieben internal/export-Tests (3 neu für DOC-18, 4 aus DOC-08 auf den neuen Aufrufvertrag umgestellt) sind vollständig implementiert, liefen in dieser Sitzung aber — wie bereits in mehreren vorherigen Kacheln dokumentiert — wegen weiterhin defekter Testrollen-Zugangsdaten (nexarch_dms_test) auf 192.168.1.131 nicht durch.