VER-08: Technische Durchsetzung Append-only fuer das Versionierungs-/Ereignisprotokoll #30
Closed
patrick
wants to merge 0 commits from
feature/ver-08-technische-durchsetzung-append-only-f-r-das-versionierungs-ereignisprotokoll into main
pull from: feature/ver-08-technische-durchsetzung-append-only-f-r-das-versionierungs-ereignisprotokoll
merge into: scripte:main
scripte:main
scripte:feat/ai-cls08-mehrsprachig
scripte:feat/ai-cls09-herkunftsmarkierung
scripte:feat/ai-eng09-gemini
scripte:chore/ai-kanban-security-folgetickets
scripte:feat/ai-titel-korrespondent
scripte:feat/dms-backup-s3
scripte:feat/dms-s3-verdrahten
scripte:docs/alfresco-vergleich
scripte:refactor/common-batch-2
scripte:refactor/common-modul-pilot
scripte:fix/dms-httpharden-normalize
scripte:feature/shl-02-pagecontainer-dedup
scripte:test/dedup-fakekek-testutil
scripte:feature/nav-01-mail-postfach-registry-eintrag
scripte:feature/sec-08-09-rbac-cmis-audit
scripte:feature/shl-04-globale-modul-navigation
scripte:chore/mail-kanban-security-folgetickets
scripte:chore/dms-kanban-security-folgetickets
scripte:chore/core-kanban-security-folgetickets
scripte:chore/archive-kanban-security-folgetickets
scripte:chore/workflow-kanban-security-folgetickets
scripte:chore/connect-kanban-security-folgetickets
scripte:feature/qa-08-barrierefreiheits-audit-workflow
scripte:feature/tsk-04-aufgaben-oberflaeche-workflow
scripte:feature/qa-08-barrierefreiheits-audit-connect
scripte:feature/int-18-smtp-gateway-weiterleitung-an-feste-adresse-dms
scripte:docs/rollout-131-vorbereitung
scripte:feature/met-08-facturx-zugferd-szenarien-validator-dms
scripte:feature/qa-15-sicherheitspruefung-gesamtprojekt
scripte:fix/testrun-2026-09-21-dms
scripte:feature/cmp-07-dsgvo-loeschantrag-recht-auf-loeschung
scripte:feature/cmp-06-vier-augen-freigabe-fuer-loeschungen
scripte:feature/cmp-02-dsgvo-datenschutz-berichte
scripte:feature/ret-03-loeschworkflow-und-aufbewahrungssperre-legal-hold
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Prüfungen
Direkte Analogie zum bereits vorhandenen Core-Pendant AUD-07 (gleiche nexarch_app-Gruppenrolle, gleiches Trigger-Muster), angewendet auf audit_log (VER-05) statt audit_events.
Keine Regression: go build/vet/gofmt sauber, go test ./... -p 1 PASS (inkl. unveraenderter bestehender audittrail-Tests).
Offen: die vier neuen Tests liefen in dieser Sitzung nicht durch (Testrollen-Zugangsdaten auf 131 seit VER-03 defekt) — Details siehe dms/docs/VER-08-PRUEFPROTOKOLL.md.
🤖 Generated with Claude Code
internal/documentapi: neue Backend-Voraussetzung, die DOC-01/DOC-04 noch nicht hatten - GET /documents/{id}/content liefert den entschluesselten Originalinhalt der aktuellen Revision, Content-Type ausschliesslich ueber Magic-Bytes, Content-Disposition: inline (kein Download-Zwang), volle HTTP-Range-Unterstuetzung ueber http.ServeContent (Standardbibliothek) - darueber laedt PDF.js grosse Dokumente automatisch seitenweise nach. web/pdf-viewer: Next.js/React/TypeScript, PDF.js ausschliesslich auf Canvas gerendert (kein iframe, siehe "Bekannte Fehler vermeiden"). Worker laeuft aus public/pdf.worker.min.mjs (npm run copy-pdf-worker, Teil von predev/prebuild) - bewusst NICHT ueber ein externes CDN, damit die Anwendung vollstaendig offline/lokal lauffaehig bleibt. lib/viewerState.ts kapselt Seiten-/Zoom-Navigation und Tastaturbedienung als reine, DOM-unabhaengige Funktionen (Akzeptanzkriterium 2), Suche nutzt PDF.js' eigene Textextraktion. Pruefungen: 1. 300-seitiges PDF oeffnet im Zeitbudget - echter pdfjs-dist-Ladetest gegen den echten Backend-Dienst: 247ms (Budget 5000ms) 2. Viewer per Tastatur bedienbar - 15 Vitest-Tests fuer Pfeiltasten/Zoom/ Suche-Fokus, inkl. Ignorieren waehrend im Suchfeld getippt wird 3. Speicherverbrauch im Browser - OFFEN, kein Headless-Browser in dieser Umgebung verfuegbar (gleiche Einschraenkung wie bei ANA-02) SHL-01 (Core-Board, eigener Branch-Strang mit gemeinsamer Basis) sauber gemergt - kein Dateiueberschneidungs-Konflikt (web/shl vs. dms/). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>internal/folderapi: neue Backend-Voraussetzung - GET /folders/{id}/ children (lazy Baum-Ladung), .../breadcrumb (ueber DOC-09s Materialized Path), .../documents (Dokumentenliste, whitelisted Sortierspalten). folder.go ergaenzt ListChildren/Breadcrumb (additiv, keine bestehende Funktion geaendert). web/dms-browser: Next.js/React/TypeScript. Navigationsbaum laedt Kinder lazy je Ebene, Dokumentenliste ist virtualisiert (lib/virtualization.ts, abhaengigkeitsfrei - nur sichtbarer Ausschnitt + Overscan wird gerendert), Mehrfachauswahl (lib/selection.ts: Klick/Strg/Umschalt), Tastatur- navigation im Baum (lib/treeKeyboard.ts). Aktueller Ordner steckt in der URL (Catch-all-Route /browse/[[...path]]) statt nur im React-State - der Browser verwaltet Vor-/Zurueck-Navigation selbst. Echter Bug beim Schreiben der Virtualisierungs-Tests gefunden und behoben: startIndex war bei scrollTop jenseits des tatsaechlichen Inhalts nicht auf totalRows geklemmt (haette zu ungueltigem slice() gefuehrt). Pruefungen: 1. Liste mit 10.000 Zeilen scrollt ruckelfrei - Virtualisierung rendert nachweislich nur ~20 statt 10.000 Zeilen 2. Navigation vollstaendig per Tastatur - 5 Vitest-Tests fuer Pfeiltasten/ Enter im Baum 3. Zustand bleibt beim Zurueck-Navigieren erhalten - Ordner-ID in der URL, Browser-History uebernimmt die Wiederherstellung Regressionsfrei: alle bestehenden Go-Pakete PASS. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>Diff-Endpunkt (GET /documents/{id}/diff) im versioningapi-Handler, Diff-Seite mit freier Revisionswahl, Farbe+Symbol je Aenderung und Sprung zur naechsten Aenderung im dms-browser-Frontend. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>Pull request closed