Vergleich mit InvenTree, Snipe-IT, Grocy, Shelf.nu, Resgrid, KP Front, FleetMS, HiOrg-Server ergibt neue Kacheln (ASSET-010 Custody, FILE-008 Hash-Audit-Journal, FILE-009 Notizen, NOTIF-003, MAINT-007 Tankbuch, ZUST-003 Standort-Scoping, FOUND-007 Import/Export, FOUND-008 Fristen-Dienst, READY-006 Statistik-Dashboard, UI2-006..010) sowie Referenz-Ergänzungen bei bestehenden Lücken. Alle Design- Entscheidungen (Datenmodell, Sicherheitsanforderungen bei ASSET-010) geklärt. Neues Epic 23 (Flutter-Begleit-App, Sondierungs-Prototyp FLUT-001) inkl. geklärtem TLS-Blocker (Domain mabea.perlbach-edv.de mit Let's-Encrypt-Zertifikat statt selbstsigniertem Server-Zertifikat). Alle Kacheln bleiben offen/ungeplant, nur ausgearbeitet, keine Implementierung. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CVgbozhYmuEhiEJHffRXCV
7.5 KiB
Epic 17 — Zuständigkeit
Details zu ZUST-001 … ZUST-003. ZUST-001/002 vollständig, ZUST-003 ergänzt am 2026-09-09
aus Open-Source-Vergleich, noch offen/ungeplant. Übernommen aus
arbeitskarten/01_rollen_zuordnung.md
und arbeitskarten/04_organisationsstruktur.md (Karte 01+04) — beide Karten hatten kein
Gegenstück im ursprünglichen 16-Epic-Backlog (siehe 00_index.md, DECISION REQUIRED Punkt 5
war die Vorgängerlücke, diese hier ist die zweite gefundene Lücke).
ZUST-001 — Objekt/Standort ↔ Verantwortlicher (Zuständigkeit)
- Ziel: Administrator kann Verantwortliche flexibel Standorten und/oder Objekten zuordnen, ohne starre zentrale/dezentrale Struktur vorzugeben.
- Beschreibung: Zuständigkeit ist n:m (Verantwortlicher(e) ↔ Standort und/oder Objekt), kein Hardcoding "eine Wache = ein Verantwortlicher". Ein Objekt kann mehrere Verantwortliche gleichzeitig haben. Zuständigkeit vererbt sich vom Standort automatisch auf alle Objekte an diesem Standort; eine zusätzliche objektspezifische Zuordnung ist eine feinere Ergänzung obendrauf, kein Ersatz — Auswertelogik: ein Benutzer ist für ein Objekt zuständig, wenn ENTWEDER eine Standort-Zeile für dessen Standort ODER eine Objekt-Zeile für das Objekt selbst existiert (Vereinigung, keine Überschreibung).
- Benutzerwert: Verantwortlichkeiten lassen sich so einteilen, wie die Organisation tatsächlich arbeitet, nicht wie ein starres Schema es vorgibt.
- Abhängigkeiten: FOUND-002, ASSET-003
- Datenmodell:
zustaendigkeit(benutzer_id, standort_id NULLABLE, objekt_id NULLABLE) - Backend: CRUD, Auswertelogik (Vereinigung Standort-/Objekt-Zuordnung)
- Frontend: Verwaltungs-UI (Liste + Suche)
- Mobile: keine eigene UI, wirkt sich auf Sichtbarkeit/Priorisierung aus
- QR-Code/Seriennummer/Inventarnummer: nein
- Akte: Verantwortlichkeitsbereich (FILE-004)
- Rechte: Administrator verwaltet
- Audit: Änderung geloggt
- Akzeptanzkriterien: Zuordnung auf Standort-Ebene wirkt auf alle zugehörigen Objekte, zusätzliche Objekt-Zuordnung erweitert statt überschreibt.
- Tests: Vererbungslogik-Test (Standort-Zuordnung + separate Objekt-Zuordnung gleichzeitig).
- DoD: deckt sich 1:1 mit MABEA (
Zustaendigkeit-Tabelle, admin-UI mit Suche bereits produktiv).
ZUST-002 — Objekt ↔ Benutzer/Gruppe (Kontrollzuweisung, freiwillig)
- Ziel: Verantwortliche können Objekte gezielt einer Einzelperson oder Gruppe zuweisen, ohne dass dies eine Pflichtkontrolle erzwingt.
- Beschreibung: Grundsätzlich darf jeder Mitarbeiter jedes Objekt kontrollieren (keine feste Pflichtzuordnung). Zuweisung ist reine Empfehlung/Sichtbarkeit/Priorisierung, kein Zugriffsschutz — Schutz vor Doppelarbeit übernimmt die Objekt-Sperre nach Scan/ Kontrollstart, nicht die Zuweisung.
- Benutzerwert: Klare Orientierung, wer für was zuständig ist, ohne andere auszuschließen (wichtig bei Vertretung/Ausfall).
- Abhängigkeiten: ZUST-001, PERS-003 (Gruppe)
- Datenmodell:
kontrollverantwortung(objekt_id, benutzer_id NULLABLE, gruppe NULLABLE) - Backend: CRUD
- Frontend: Verwaltungs-UI
- Mobile: zugewiesene Objekte ggf. hervorgehoben/priorisiert in der Liste
- QR-Code/Seriennummer/Inventarnummer: nein
- Akte: Verantwortlichkeitsbereich
- Rechte: Administrator/Verantwortliche verwalten, Mitarbeiter sieht alle Objekte
- Audit: Änderung geloggt
- Akzeptanzkriterien: Zuweisung sichtbar/priorisiert, verhindert aber nicht, dass ein anderer Mitarbeiter das Objekt trotzdem kontrolliert.
- Tests: Zuweisungs-CRUD-Test.
- DoD: deckt sich 1:1 mit MABEA (
Kontrollverantwortung-Tabelle, admin-UI bereits produktiv).
ZUST-003 — Standort-Scoping für granulare Berechtigungen (P2, neu, geklärt 2026-09-09)
- Ziel: Custom-Rollen-Berechtigungen (
Berechtigung/Rolle/RolleBerechtigung, Roadmap Phase 6) optional auf einen Standort/Depot einschränken können, statt immer global zu gelten. - Bedarf: bestätigt (2026-09-09) — echte Anforderung, kein rein hypothetisches Feature.
- Beschreibung: Aktuell gilt jede über eine Custom-Rolle vergebene Berechtigung
systemweit — ein Nutzer mit „material.erstellen" darf das an JEDEM Standort, nicht nur
an dem, für den er zuständig ist. Erweiterung: optionales
standort_idan der Benutzer-Rollen-Zuordnung,NULL= weiterhin global (Rückwärtskompatibilität). - Benutzerwert: Ein Materialwart kann Rechte für seinen Standort bekommen, ohne automatisch auch an allen anderen Standorten schreiben zu dürfen — relevant, sobald mehrere Standorte/Depots von unterschiedlichen Personen verantwortet werden.
- Abhängigkeiten: ZUST-001 (bestehendes Standort↔Verantwortlicher-Konzept), das
granulare Rechtesystem (
app/models/permission.py) - Datenmodell (entschieden 2026-09-09): 1:1, einfache Spalte statt
Zwischentabelle —
benutzer_rolle_zuordnung.standort_id(FK, nullable),NULL= global. Begründung: Personen wechseln typischerweise komplett den Standort (dann wird der Wert einfach aktualisiert, kein Neuanlegen/Löschen nötig) statt dauerhaft mehreren Standorten gleichzeitig zugeordnet zu sein. Braucht eine Person doch mehrere Standorte gleichzeitig: einfach eine zweite Rollen-Zuweisung mit anderemstandort_idanlegen (Custom-Rollen sind bereits mehrfach zuweisbar) — kein n:m-Konstrukt nötig, deutlich einfachere Rechteprüfungs-Logik. - Backend: Rechte-Check-Funktion (
require_roles_or_permissiono.ä.) um Standort-Filter erweitern — prüft nicht nur „hat Berechtigung X", sondern „hat Berechtigung X für Standort Y (oder global)" - Frontend:
RolleSection.tsx— Standort-Auswahl bei der Benutzer-Zuordnung ergänzen (optional, Default weiterhin global) - Mobile: kein Unterschied, wirkt sich nur auf Backend-Autorisierung aus
- QR-Code/Seriennummer/Inventarnummer: nein
- Akte: nein direkt
- Rechte: Verwaltung: Administrator
- Audit: Änderung der Standort-Zuordnung geloggt
- Akzeptanzkriterien: Nutzer mit standortgebundenem Recht kann an zugewiesenem
Standort handeln, an anderem Standort wird derselbe Endpunkt korrekt abgelehnt;
bestehende globale Zuordnungen (
standort_id IS NULL) funktionieren unverändert. - Tests: Positivtest (Standort passt), Negativtest (falscher Standort abgelehnt), Regressionstest (bestehende globale Rechte weiterhin uneingeschränkt).
- DoD: offen — beide Design-Entscheidungen geklärt (2026-09-09), bereit für Implementierung. Referenz (Open-Source-Vergleich 2026-09-09): keines der verglichenen Projekte (InvenTree, Snipe-IT, Grocy, Shelf.nu, Resgrid, KP Front, FleetMS) hat ein sauber dokumentiertes Standort-/Objekt-Ebene-Rechtesystem — Snipe-IT nur grobes Company-Scoping, Shelf.nu nur personenbezogene Sichtbarkeits-Toggles. Wäre bei Umsetzung eine echte Differenzierung ggü. allen verglichenen Projekten, kein Nachbau.
MABEA-Ist-Stand-Abgleich (aktualisiert 2026-09-09): ZUST-001/002 sind bereits
vollständig umgesetzt und produktiv (Zustaendigkeit + Kontrollverantwortung, jeweils
mit Admin-UI). Diese Epic-Datei existierte bislang nicht — reine Nachdokumentation von
bereits gebauter Funktion, die im ursprünglichen 16-Epic-Backlog übersehen wurde.
ZUST-003 (Standort-Scoping für Berechtigungen) neu ergänzt am 2026-09-09 aus
Open-Source-Vergleich, offen/ungeplant.
Referenzen
Alte Arbeitskarten (übernommen, Karten-Dateien gelöscht): Karte 01 Rollen&Zuordnung, Karte 04 Organisationsstruktur/Zuständigkeit.