docs: Documents-Epic komplettiert (DOC-001..005)
CI / backend-tests (push) Failing after 1m53s
CI / frontend-build (push) Successful in 18s

DOC-001 (Upload-Grundgerüst) vollständig und solide in MABEA umgesetzt.
DOC-002..005 (Dokumenttypen, Versionierung, Original/Kopie-Kennzeichnung,
dokumentbezogene Zugriffsrechte) fehlen komplett, bewusst P2 - blockieren
nicht den praktischen Alltagsnutzen des bestehenden Moduls.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KC8HYvv6UkCVYheYiTw9DD
This commit is contained in:
2026-09-05 15:50:54 +02:00
co-authored by Claude Sonnet 5
parent c5d689deca
commit dcba53c453
2 changed files with 129 additions and 1 deletions
+2 -1
View File
@@ -222,6 +222,7 @@ eigenes Modul (MAINT-\*, MABEA hat nur Prüfung, keine Wartung)**.
| `11_defects.md` | DEFECT-001 … DEFECT-005 (vollständig) | | `11_defects.md` | DEFECT-001 … DEFECT-005 (vollständig) |
| `12_personnel.md` | PERS-001 … PERS-007 (vollständig) | | `12_personnel.md` | PERS-001 … PERS-007 (vollständig) |
| `13_readiness.md` | READY-001 … READY-005 (vollständig) | | `13_readiness.md` | READY-001 … READY-005 (vollständig) |
| `14_documents.md` | DOC-001 … DOC-005 (vollständig) |
Restliche Kacheln (DOC, MOBILE, OPS): nur Zeile in der Tabelle oben, Details folgen nach Restliche Kacheln (MOBILE, OPS): nur Zeile in der Tabelle oben, Details folgen nach
Freigabe. Freigabe.
+127
View File
@@ -0,0 +1,127 @@
# Epic 14 — Documents
Details zu DOC-001 … DOC-005 (vollständig).
---
## DOC-001 — Dokument-Grundgerüst (Upload)
- **Ziel:** Datei-Upload/-Speicherung, polymorph an beliebige Ressource koppelbar.
- **Beschreibung:** Whitelist erlaubter MIME-Types, server-generierter Dateiname
(Path-Traversal-Schutz), lokale Ablage.
- **Benutzerwert:** Zulassungsdokumente/Fotos/Prüfprotokolle digital griffbereit statt
Papier.
- **Abhängigkeiten:** FILE-001
- **Datenmodell:** `dokument` (id, entitaet_typ, entitaet_id, dateiname, speicherpfad,
mime_type, groesse_bytes, beschreibung, hochgeladen_von, hochgeladen_am)
- **Backend:** POST/GET/DELETE Endpunkte
- **Frontend:** Upload-Panel wiederverwendbar
- **Mobile:** Foto direkt von Kamera hochladbar
- **QR-Code/Seriennummer/Inventarnummer:** nein
- **Akte:** Dokumentenbereich
- **Rechte:** Hochladen Mitarbeiter+, Löschen Materialwart+
- **Audit:** Upload/Löschen nicht zwingend im generischen Audit-Log (Datei-Metadaten sind
über hochgeladen_von/-am bereits selbsterklärend)
- **Akzeptanzkriterien:** Upload/Download/Löschen funktioniert, unerlaubte Dateitypen
werden abgelehnt.
- **Tests:** Upload-Test, Ablehnungstest, Download-Inhaltstest.
- **DoD:** deckt sich 1:1 mit MABEA (Dokumente-Modul bereits umgesetzt inkl. Whitelist
PDF/JPEG/PNG/WebP, generisches DokumentePanel).
## DOC-002 — Dokumenttypen
- **Ziel:** Dokumente kategorisieren (Anleitung/Prüfbescheinigung/Rechnung/
Zulassungsdokument/...).
- **Beschreibung:** Typ-Feld am Dokument, aus fester Liste oder Stammdaten.
- **Benutzerwert:** Filterbarkeit („zeig mir nur Zulassungsdokumente").
- **Abhängigkeiten:** DOC-001
- **Datenmodell:** `dokument.dokumenttyp` (enum oder FK auf Stammdaten)
- **Backend:** Filter-Parameter
- **Frontend:** Typ-Auswahl beim Upload, Filter in der Liste
- **Mobile:** Typ-Auswahl
- **QR-Code/Seriennummer/Inventarnummer:** nein
- **Akte:** Dokumentenbereich
- **Rechte:** wie DOC-001
- **Audit:** nein zusätzlich
- **Akzeptanzkriterien:** Filter nach Typ liefert korrekte Teilmenge.
- **Tests:** Filtertest.
- **DoD:** MABEA hat nur `beschreibung` als Freitext, keine strukturierte Typisierung —
echte Lücke, aber klein (P2).
## DOC-003 — Versionierung
- **Ziel:** Neue Version eines Dokuments hochladen, ohne die alte zu verlieren.
- **Beschreibung:** Versionskette (`vorgaenger_dokument_id`), aktuelle Version markiert.
- **Benutzerwert:** „Zulassung 2025" durch „Zulassung 2026" nachvollziehbar ersetzt, alte
Version bleibt für die Historie einsehbar.
- **Abhängigkeiten:** DOC-001
- **Datenmodell:** `dokument.vorgaenger_dokument_id`, `dokument.ist_aktuell`
- **Backend:** Neue-Version-Endpunkt (setzt alte Version auf `ist_aktuell=false`)
- **Frontend:** „Neue Version hochladen"-Aktion, Versionshistorie anzeigen
- **Mobile:** Anzeige
- **QR-Code/Seriennummer/Inventarnummer:** nein
- **Akte:** Dokumentenbereich zeigt standardmäßig nur die aktuelle Version, Verlauf
aufklappbar
- **Rechte:** wie DOC-001
- **Audit:** neue Version wird geloggt
- **Akzeptanzkriterien:** neue Version verdrängt alte aus der Standardansicht, Verlauf
bleibt abrufbar.
- **Tests:** Versionskettentest.
- **DoD:** komplett neu in MABEA — aktuell wird eine neue Datei nur als komplett neues,
unabhängiges Dokument hochgeladen, keine Versionskette.
## DOC-004 — Original-vs-Kopie-Kennzeichnung
- **Ziel:** Kennzeichnen, ob die digitale Kopie das (evtl. rechtlich erforderliche)
Original ersetzt oder nur eine Referenz ist.
- **Beschreibung:** Flag/Enum
`original_vorhanden`/`digitale_kopie_vorhanden`/`dokument_fehlt`/`ersetzt_durch_referenz`
— System behauptet an keiner Stelle automatisch, die digitale Kopie erledige eine
rechtliche Originalpflicht (explizite Ursprungs-Anforderung).
- **Benutzerwert:** Rechtssicherheit — niemand verlässt sich fälschlich auf ein Foto vom
Prüfsiegel als Ersatz fürs Original.
- **Abhängigkeiten:** DOC-001
- **Datenmodell:** `dokument.status_kennzeichnung` (enum)
- **Backend:** Feld setzen
- **Frontend:** Kennzeichnung beim Upload/Anzeige mit Warnhinweis, wenn nur Kopie
vorhanden
- **Mobile:** Anzeige
- **QR-Code/Seriennummer/Inventarnummer:** nein
- **Akte:** Dokumentenbereich
- **Rechte:** wie DOC-001
- **Audit:** Änderung geloggt
- **Akzeptanzkriterien:** Kennzeichnung sichtbar, System macht an keiner Stelle eine
rechtliche Ersatz-Behauptung.
- **Tests:** Anzeige-/Warnhinweistest.
- **DoD:** komplett neu in MABEA — Dokumente werden aktuell ohne jede rechtliche
Einordnung behandelt (neutral „Datei da", weder als Original noch als Kopie markiert).
## DOC-005 — Zugriffsrechte je Dokument
- **Ziel:** Manche Dokumente (z.B. sensible Berichte) nicht für jeden sichtbar machen.
- **Beschreibung:** Optionales Rechte-Feld je Dokument (Rolle/Berechtigung erforderlich
zum Anzeigen), Default = wie Ressourcen-Leserecht.
- **Benutzerwert:** Feingranulare Vertraulichkeit statt Alles-oder-nichts.
- **Abhängigkeiten:** DOC-001, FOUND-004
- **Datenmodell:** `dokument.erforderliche_berechtigung` (optional, FK auf
Berechtigung/Rolle)
- **Backend:** Zugriffsprüfung beim Download
- **Frontend:** Sichtbarkeits-Einstellung beim Upload
- **Mobile:** Zugriffsprüfung
- **QR-Code/Seriennummer/Inventarnummer:** nein
- **Akte:** Dokumentenbereich (eingeschränkte Dokumente ggf. ausgeblendet statt Fehler)
- **Rechte:** ist Gegenstand dieser Kachel
- **Audit:** Zugriffsversuch auf gesperrtes Dokument könnte geloggt werden (P3-Detail)
- **Akzeptanzkriterien:** Dokument mit Einschränkung ist für nicht-berechtigte Nutzer
nicht abrufbar.
- **Tests:** Zugriffstest mit/ohne Berechtigung.
- **DoD:** komplett neu in MABEA — aktuell haben alle Dokumente dieselbe pauschale
Sichtbarkeit (Rollen-Gate nur global fürs Hochladen/Löschen, nicht je Dokument).
---
**MABEA-Ist-Stand-Abgleich:** DOC-001 ist vollständig und solide umgesetzt (inkl.
Sicherheits-Whitelist gegen Path-Traversal, generisch wiederverwendbares Panel). DOC-002…005
fehlen alle komplett, sind aber bewusst als P2 eingestuft — keine dieser vier Lücken
blockiert den praktischen Alltagsnutzen des bestehenden Dokumente-Moduls, sie verfeinern
nur Kategorisierung, Historisierung, rechtliche Klarheit und Vertraulichkeit.