Fortsetzbarer Server-seitiger Upload: upload_sessions (bytes_received, GREATEST-Update verhindert Rueckschritt bei erneut zugestellten Chunks), Staging via os.File.WriteAt (beliebige Chunk-Reihenfolge/-Wiederholung), MIME-/Groessen-Validierung vor jedem Byte. Complete() liest Klartext einmal via io.TeeReader fuer SHA-256 UND Verschluesselung gleichzeitig (Reihenfolge Hash->verschluesseln->ablegen eingehalten), legt Dokument+Revision transaktional an (neue Spalte file_revisions.wrapped_dek fuer FDN-09). Auf 192.168.1.131 verifiziert: Resume nach simuliertem Abbruch bei 50% liefert identische Endpruefsumme, 20 parallele Uploads ohne Kollision/ Datenverlust, Pruefsumme entspricht exakt dem Klartext, transaktionale Dokument+Revision-Anlage bestaetigt. Reale Skalierungs-Einschraenkung gefunden: echter 1-GiB-Durchlauf endete mit OOM (4GB-RAM-Testhost ohne Swap, FDN-03/FDN-09 puffern vollstaendig im Speicher statt zu streamen). Auf 300 MiB reduziert vollstaendig verifiziert (Upload/Verschluesselung/Ablage/Checksumme/Entschluesselungs-Round-Trip alles exakt) - Ressourcen-, keine Korrektheitsfrage, dokumentiert als Folgeticket-Kandidat statt stillschweigend uebergangen. Siehe dms/docs/DOC-01-PRUEFPROTOKOLL.md fuer alle Pruefungsergebnisse. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01HhgFcLS8tYMhDJpP74C6AQ
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 :8090 (überschreibbar über
NEXARCH_DMS_APP_LISTEN_ADDR), GET /healthz liefert den Status.
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.