diff --git a/arbeitskacheln/00_index.md b/arbeitskacheln/00_index.md index b86c745..842d423 100644 --- a/arbeitskacheln/00_index.md +++ b/arbeitskacheln/00_index.md @@ -222,6 +222,7 @@ eigenes Modul (MAINT-\*, MABEA hat nur Prüfung, keine Wartung)**. | `11_defects.md` | DEFECT-001 … DEFECT-005 (vollständig) | | `12_personnel.md` | PERS-001 … PERS-007 (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. diff --git a/arbeitskacheln/14_documents.md b/arbeitskacheln/14_documents.md new file mode 100644 index 0000000..00a2edc --- /dev/null +++ b/arbeitskacheln/14_documents.md @@ -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.