Files
MABEA/arbeitskacheln/17_zustaendigkeit.md
T
patrickandClaude Sonnet 5 9c6426190e docs(arbeitskacheln): Open-Source-/HiOrg-Vergleich ausgewertet, 14 neue Kacheln ausgearbeitet
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
2026-09-10 00:49:32 +02:00

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_id an 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 Zwischentabellebenutzer_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 anderem standort_id anlegen (Custom-Rollen sind bereits mehrfach zuweisbar) — kein n:m-Konstrukt nötig, deutlich einfachere Rechteprüfungs-Logik.
  • Backend: Rechte-Check-Funktion (require_roles_or_permission o.ä.) 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.