patrickandClaude Sonnet 5 2dd7e574e6
CI / backend-tests (push) Failing after 2m16s
CI / frontend-build (push) Successful in 26s
feat(identity): IDENT-005 Hersteller/Modell-Stammdaten
Neue Tabellen hersteller/modell (Migration 0030), CRUD-Endpunkte
(/hersteller, /modelle) nach bestehendem Kategorie-Muster, inkl. 409 bei
Duplikaten (IntegrityError abgefangen wie in personal.py). geraet_instanz
bekommt optionales modell_id-Feld - verknüpft eine konkrete Geräteinstanz
(mit Seriennummer, IDENT-004) mit ihrem Hersteller/Modell.

Ergänzt Material.hersteller (bleibt unverändert als Freitext) um eine
normalisierte Variante gezielt für Geräte mit Seriennummer - keine
Datenmigration bestehender Freitext-Werte (Scope dieser Kachel).

Bewusst kein neues Admin-UI-Screen für die Pflege (Scope-Grenze der
Kachel) - Hersteller/Modell aktuell nur über die API verwaltbar.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CVgbozhYmuEhiEJHffRXCV
2026-09-08 14:51:15 +02:00

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, slowapi Rate-Limiting
  • Frontend: React 18 + Vite + TypeScript, PWA (vite-plugin-pwa), Tailwind CSS v4, handgebaute shadcn/ui-artige Primitives, react-grid-layout fü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.

S
Description
No description provided
Readme
4.6 MiB
Languages
Python 58%
TypeScript 35.3%
Dart 4.1%
CSS 2%
Shell 0.5%