# 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.