Files
MABEA/arbeitskacheln/12_personnel.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.9 KiB

Epic 12 — Personnel

Details zu PERS-001 … PERS-007 (vollständig).


PERS-001 — Person (fachlich)

  • Ziel: Fachliches Konzept einer Person, getrennt vom technischen Login.
  • Beschreibung: Person-Entität (Name, Geburtsdatum optional, Kontaktdaten) — kann existieren OHNE Systemzugang (z.B. Jugendgruppe, externe Kontaktperson).
  • Benutzerwert: Nicht jede Person im System braucht einen Login (Kinder/Jugendliche, externe Helfer ohne digitale Nutzung).
  • Abhängigkeiten: FOUND-002
  • Datenmodell: person (id, name, geburtsdatum, kontakt)
  • Backend: CRUD
  • Frontend: Verwaltung
  • Mobile: Anzeige
  • QR-Code/Seriennummer/Inventarnummer: nein (Person ist keine physische Ressource im engeren Sinn — ein optionaler QR-Ausweis wäre ein Erweiterungspunkt, kein Kern)
  • Akte: eigene Personen-Akte möglich (eigenes Konzept, nicht Ressourcen-Akte)
  • Rechte: Administrator
  • Audit: Änderung geloggt
  • Akzeptanzkriterien: Person ohne Benutzerkonto anlegbar.
  • Tests: CRUD-Test, Test „Person ohne Benutzer funktioniert".
  • DoD: umgesetzt (2026-09-08) — echter Bedarf via AskUserQuestion bestätigt, danach live deployed. Person-Modell (Migration 0034 mit Backfill bestehender Benutzer), /personen-CRUD, Admin-UI PersonSection.tsx.

PERS-002 — Benutzer (technisch, verknüpft)

  • Ziel: Systemzugang, verknüpft mit einer Person.
  • Beschreibung: Benutzer (login, passwort_hash) referenziert optional eine Person (1:1 oder 1:0..1).
  • Benutzerwert: Systemzugang bleibt wie gehabt, aber fachlich sauber von der Personen-Stammdatenverwaltung getrennt.
  • Abhängigkeiten: PERS-001, FOUND-003
  • Datenmodell: benutzer.person_id (FK, optional während Übergang)
  • Backend: Migration bestehender Benutzer zu Person-Datensätzen
  • Frontend: Benutzeranlage erzeugt/verknüpft Person
  • Mobile: kein Unterschied
  • QR-Code/Seriennummer/Inventarnummer: nein
  • Akte: nein direkt
  • Rechte: bestehende Rechte-Logik unverändert
  • Audit: Verknüpfung geloggt
  • Akzeptanzkriterien: bestehende Benutzer funktionieren nach Migration unverändert.
  • Tests: Migrationstest (keine Datenverluste), Regressionstest bestehender Auth-Flows.
  • DoD: umgesetzt (2026-09-08) — Benutzer.person_id FK (nullable), /benutzer verknüpft bestehende Person oder legt automatisch neue Person an, wenn keine person_id angegeben wird (Backward-Kompatibilität). Backfill bestehender Benutzer via ROW_NUMBER()-1:1-Positionsmatch statt Name-Join (Namenskollisionen vermieden).

PERS-003 — Einheiten/Organisationsstruktur

  • Ziel: Hierarchische Gliederung von Personen in Züge/Gruppen.
  • Beschreibung: Einheit mit optionaler übergeordneter Einheit, Person/Benutzer gehört zu einer Einheit.
  • Benutzerwert: Organisationsstruktur abbildbar (Zug → Gruppe → Trupp).
  • Abhängigkeiten: PERS-001 (oder direkt Benutzer, falls PERS-001 zurückgestellt)
  • Datenmodell: einheit (id, name, uebergeordnete_einheit_id, standort_id)
  • Backend: CRUD
  • Frontend: Verwaltung
  • Mobile: Anzeige
  • QR-Code/Seriennummer/Inventarnummer: nein
  • Akte: Verantwortlichkeitsbereich (FILE-004) referenziert Einheit
  • Rechte: Administrator
  • Audit: Änderung geloggt
  • Akzeptanzkriterien: mehrstufige Hierarchie anlegen (Zug→Gruppe).
  • Tests: Baum-Test.
  • DoD: deckt sich mit MABEA (Einheit-Modell bereits umgesetzt, self-referenzierend) — allerdings bisher nur eine Ebene in der Praxis genutzt, mehrstufige Hierarchie ist technisch möglich aber ungetestet im echten Einsatz.

PERS-004 — Funktionen/Rollen im Einsatzkontext

  • Ziel: Fachliche Funktion einer Person innerhalb einer Einheit (Zugführer, Melder, Fahrer, ...) — unterscheidet sich von System-Rollen (Rechte).
  • Beschreibung: Funktion als Stammdatum, Zuordnung Person↔Einheit↔Funktion.
  • Benutzerwert: „Wer ist der Zugführer von Zug 3" beantwortbar, unabhängig von Systemrechten.
  • Abhängigkeiten: PERS-003
  • Datenmodell: funktion (id, name), einheit_mitgliedschaft (person_id, einheit_id, funktion_id)
  • Backend: CRUD
  • Frontend: Zuordnung
  • Mobile: Anzeige
  • QR-Code/Seriennummer/Inventarnummer: nein
  • Akte: Verantwortlichkeitsbereich
  • Rechte: Administrator/Zugführer
  • Audit: Änderung geloggt
  • Akzeptanzkriterien: Person mit Funktion in Einheit zuordnen.
  • Tests: CRUD-Test.
  • DoD: komplett neu in MABEA — Einheit-Zuordnung existiert (Benutzer.einheit_id), aber keine fachliche Funktion/Rolle INNERHALB der Einheit (nur System-Rollen wie „Materialverantwortlicher" existieren — das ist etwas anderes als „Zugführer von Zug 3").

PERS-005 — Qualifikationen/Lehrgänge

  • Ziel: Nachgewiesene Qualifikationen einer Person.
  • Beschreibung: Qualifikationstyp-Katalog + Zuordnung mit Erwerbsdatum/Gültigkeit.
  • Benutzerwert: Nachweis von Ausbildungsstand.
  • Abhängigkeiten: PERS-001
  • Datenmodell: qualifikationstyp, benutzer_qualifikation
  • Backend: CRUD
  • Frontend: Verwaltung
  • Mobile: Anzeige
  • QR-Code/Seriennummer/Inventarnummer: nein
  • Akte: eigener Bereich (Personen-Akte)
  • Rechte: Administrator
  • Audit: Änderung geloggt
  • Akzeptanzkriterien: Qualifikation mit Gültigkeit erfassen.
  • Tests: CRUD-Test.
  • DoD: deckt sich 1:1 mit MABEA (Qualifikationstyp/BenutzerQualifikation bereits umgesetzt, inkl. Ablauf-Dashboard-Kachel).

PERS-006 — Führerscheine/Berechtigungen mit Gültigkeit

  • Ziel: Spezialfall von PERS-005 — Fahrerlaubnis, die bestimmt, wer welches Fahrzeug fahren darf.
  • Beschreibung: Führerschein als Qualifikationskategorie, Verknüpfung zu AssetType-Anforderung.
  • Benutzerwert: „Wer darf dieses Fahrzeug fahren" automatisch beantwortbar.
  • Abhängigkeiten: PERS-005, ASSET-002
  • Datenmodell: objekttyp_qualifikationsanforderung (M:N)
  • Backend: Berechtigungsprüfungs-Endpunkt
  • Frontend: Anzeige „fehlende Qualifikation"
  • Mobile: Anzeige vor Fahrtantritt
  • QR-Code/Seriennummer/Inventarnummer: nein
  • Akte: Fahrzeug-Akte zeigt erforderliche Qualifikation
  • Rechte: wie Lese-Recht
  • Audit: nein zusätzlich
  • Akzeptanzkriterien: Prüfung liefert korrekt berechtigt/nicht berechtigt + fehlende Typen.
  • Tests: Berechtigungstest (mit/ohne/abgelaufene Qualifikation).
  • DoD: deckt sich 1:1 mit MABEA — bereits umgesetzt und in dieser Session live gegen den Produktivserver getestet (GET /objekte/{id}/berechtigung/{benutzer_id}).

PERS-007 — Qualifikationsablauf-Warnungen

  • Ziel: Frühwarnung vor ablaufenden Qualifikationen.
  • Beschreibung: Dashboard-Kachel analog Prüftermine/Ablaufdaten.
  • Benutzerwert: Rechtzeitig Nachschulung planen, bevor jemand mit abgelaufener Qualifikation eingeteilt wird.
  • Abhängigkeiten: PERS-006
  • Datenmodell: keins neu
  • Backend: Abfrage bevorstehender Abläufe
  • Frontend: Dashboard-Kachel
  • Mobile: Anzeige
  • QR-Code/Seriennummer/Inventarnummer: nein
  • Akte: nein (übergreifende Sicht)
  • Rechte: Verantwortliche
  • Audit: nein
  • Akzeptanzkriterien: korrekte Sortierung, 60 Tage Standard-Vorlauf.
  • Tests: Schwellenwerttest.
  • DoD: deckt sich 1:1 mit MABEA (dashboard.bevorstehende_qualifikationsablaeufe(), bereits umgesetzt).

MABEA-Ist-Stand-Abgleich (aktualisiert 2026-09-09): PERS-001…003, 005, 006, 007 sind vollständig in MABEA umgesetzt und live deployed. PERS-001/002 (Person↔Benutzer- Trennung) waren der größte offene Architekturentscheid im gesamten Backlog — echter Bedarf wurde am 2026-09-08 bestätigt, danach umgesetzt und deployed (Details siehe PERS-001/002 oben). PERS-004 (fachliche Funktion innerhalb einer Einheit, z.B. „Zugführer") fehlt komplett — leicht zu verwechseln mit den bestehenden System-Rollen, ist aber ein eigenständiges Konzept.