15f783fb5efa2b5ff034ee5b7c7203e9b9aff566
Neue Stammdaten-Tabelle einsatzfunktion (Migration 0031), benutzer bekommt optionales einsatzfunktion_id-Feld - analog zu einheit_id modelliert, eine Person hat im Regelfall genau eine primäre Einsatzfunktion. Bewusst getrennt von den technischen App-Rollen (RolleTyp), die nur steuern, was jemand in MABEA tun darf, nicht welche Funktion er im Einsatz hat. CRUD-Endpunkt /einsatzfunktionen nach Kategorie-Muster, Duplikat-Prüfung vorab (Projekt-Konvention). Admin-UI: Auswahl + Inline-Neuanlage in der Benutzerverwaltung (BenutzerSection). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CVgbozhYmuEhiEJHffRXCV
MABEA — Digitales Materialmanagement Rettungsdienst/KatS
Ersetzt papierbasierte Materiallisten (Excel-Rucksacklisten) im Rettungsdienst/Katastrophenschutz durch eine digitale Soll/Ist-Kontrolle mit Rollen, Historie und Eskalation. Fachlich vor Technik entstanden — Konzeptphase in ergebnisse/, laufender Fortschritt gegen echten Code-Stand in arbeitskacheln/00_index.md.
Funktionsumfang
- Digitale Akte je Objekt (Rucksack, Fahrzeug, Gerät, Anhänger) — aggregiert Beladung, Kontrollen, Mängel, Dokumente, Wartung, Historie an einer Stelle
- Soll/Ist-Kontrolle mit Beladungsvorlagen, individuellen Abweichungen, Fach-Zuordnung, QR-/Barcode-Scan zum Objekt- und Positions-Lookup
- Fehlbestandsmanagement: Entstehung, Nachfüllung (auch sofort während der Kontrolle), Mindermengen-Genehmigung mit Historie
- Zentrale Einsatzbereitschafts-Engine — begründete Ampel (bereit/eingeschränkt/unbekannt/nicht bereit) aus Fehlbeständen, Mängeln, Prüf-/Wartungsfristen, Fahrzeug-HU/UVV
- Mängel-Ticketsystem mit Priorität und Status
- Wartung: Wartungspläne, Intervalle, Wartungsaufträge je Objekttyp
- Warehouse: Lagerort-Hierarchie, Lagerplätze, Bestand, Materialbewegungen
- Beladungsplanung per Klick-Zuordnung (kein Drag&Drop — touch-tauglich)
- Personal & Qualifikationen: Einheiten-Hierarchie, Qualifikationstypen/-nachweise, "wer darf dieses Fahrzeug fahren"
- Ausgabe/Rückgabe personenbezogener Materialien/Leihgeräte
- Dokumentenverwaltung: Upload mit fester Kategorie (Prüfprotokoll/Wartungsbericht/Bedienungsanleitung/Rechnung/Zulassungsdokument), SHA-256-Duplikat-Erkennung, Online-Ansicht im Browser, typbasierte Zugriffsrechte (Rechnungen nur für Verantwortliche)
- Globale Suche (Strg/⌘+K) über Objektnamen/-codes und geführte Materialien, per PostgreSQL-Trigram-Index
- Benachrichtigung & Eskalation bei lange offenen Fehlbeständen
- Zuständigkeiten flexibel Standorten/Objekten zuweisbar (kein starres zentral/dezentral)
- Verantwortlichen-Dashboard — frei anordenbares und größenveränderbares Kachel-Raster, Status-Monitor-Modus für Wandbildschirme
- PWA mit Offline-Queue — Kontroll-Eingaben werden bei fehlender Verbindung lokal gepuffert und automatisch nachgereicht
- Granulares Rechte-System zusätzlich zu den vier Basisrollen (Mitarbeiter/Materialverantwortlicher/Leitungsverantwortlicher/Administration)
- Dark Mode, Command Palette, zentrale Statuskomponenten
Vollständiger, gegen den Code abgeglichener Stand je Einzelfunktion: arbeitskacheln/00_index.md. Nutzer-Anleitung: docs/BENUTZERHANDBUCH.md.
Techstack
- Backend: Python/FastAPI, SQLAlchemy (async), Alembic-Migrationen, PostgreSQL, JWT-Auth,
slowapiRate-Limiting - Frontend: React 18 + Vite + TypeScript, PWA (
vite-plugin-pwa), Tailwind CSS v4, handgebaute shadcn/ui-artige Primitives,react-grid-layoutfürs Dashboard - Tests: pytest (Backend, gegen echte Postgres-Testdatenbank) + Vitest/Testing Library (Frontend-Unit-Tests) + Playwright (Frontend-E2E, aktuell nicht in CI)
- Hosting: eigener Linux-Server, nginx + systemd, kein Docker-Zwang
Projektstruktur
backend/ FastAPI-App (app/api/v1/endpoints, app/models, app/services, app/schemas)
backend/alembic/ Migrationen, fortlaufend nummeriert
backend/tests/ pytest-Suite
frontend/ React-PWA (src/pages, src/components, src/styles/global/*)
frontend/e2e/ Playwright-Tests (gemockte API)
arbeitskacheln/ Backlog (Epics/Kacheln, Status-Spalte = Code-Abgleich)
ergebnisse/ Fachkonzept-Ergebnisse aus der Klärungsphase
docs/ Nutzer-Doku
Entwicklung
Backend:
cd backend
python3 -m venv .venv && .venv/bin/pip install -e ".[dev]"
.venv/bin/alembic upgrade head
.venv/bin/uvicorn app.main:app --reload
Frontend:
cd frontend
npm install
npm run dev # Dev-Server
npm run test # Vitest Unit-Tests
npm run build # Typecheck + Produktions-Build
Beide Teile brauchen eine lokale .env/PostgreSQL-Instanz — siehe backend/example.env.
Languages
Python
58.3%
TypeScript
35.4%
Dart
3.9%
CSS
1.8%
Shell
0.5%