Files
MABEA/arbeitskacheln/06_inventory.md
T
patrickandClaude Sonnet 5 2bd97aa435
CI / backend-tests (push) Failing after 1m57s
CI / frontend-build (push) Successful in 18s
docs: alte arbeitskarten (Karte 01-14) gegen arbeitskacheln-Backlog abgeglichen
7 Karten (02,03,06,09,10,11,14) inhaltlich bereits abgedeckt - gelöscht.
7 Karten (01,04,05,07,08,12,13) enthielten nicht erfasste Inhalte:
- neues Epic 17 Zuständigkeit (Karte 01+04)
- neues Epic 18 Notifications/Eskalation (Karte 05+12)
- neues Epic 19 Satelliten-Server (Karte 13, zurückgestellt)
- INV-006 ergänzt um Sofort-Nachfüllung (Karte 07) + Mindermengen-Gültigkeit (Karte 08)

arbeitskarten/ ist damit aufgelöst, nur Index mit Verweis auf arbeitskacheln bleibt.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CVgbozhYmuEhiEJHffRXCV
2026-09-05 17:06:42 +02:00

188 lines
9.4 KiB
Markdown

# Epic 06 — Inventory
Details zu INV-001 … INV-007 (vollständig).
---
## INV-001 — Materialarten/Kategorien
- **Ziel:** Grobe Materialarten-Gliederung innerhalb Inventory.
- **Beschreibung:** Unterscheidet sich von ASSET-001 durch Fachlichkeit (Medizin/
Sanitätsmaterial/Funk/Strom/...) statt technischer Asset-Kategorie — **Entscheidung:
ASSET-001 wiederverwenden**, keine Doppelstruktur.
- **Benutzerwert:** Konsistente Kategorien app-weit statt zwei parallele Systeme.
- **Abhängigkeiten:** ASSET-001
- **Datenmodell:** keins neu (Wiederverwendung von `asset_category`)
- **Backend/Frontend/Mobile:** keins zusätzlich
- **QR-Code/Seriennummer/Inventarnummer:** nein
- **Akte:** nein direkt
- **Rechte:** wie ASSET-001
- **Audit:** wie ASSET-001
- **Akzeptanzkriterien:** keine doppelte Kategorie-Verwaltung im UI.
- **Tests:** keine zusätzlichen.
- **DoD:** Entscheidung dokumentiert (kein neuer Code nötig) — MABEA macht das bereits so
(Material nutzt dieselbe Kategorie/Bereich-Struktur wie Objekte).
## INV-002 — Einzelgeräte (SN-pflichtig)
- **Ziel:** Materialtyp, der als Asset (nicht Consumable) geführt wird, mit Pflicht-SN.
- **Beschreibung:** Kennzeichnung am AssetType („materialtyp=geraet_sn"), erzwingt
SN-Erfassung bei Instanzanlage.
- **Benutzerwert:** Geräte wie Pulsoxymeter/Defibrillator korrekt als Einzelstücke mit
Prüfhistorie führen.
- **Abhängigkeiten:** ASSET-003, IDENT-004
- **Datenmodell:** `asset_type.materialtyp` (enum: standard/ablauf_charge/geraet_sn)
- **Backend:** Validierung SN-Pflicht bei diesem Typ
- **Frontend:** Formular passt sich Materialtyp an
- **Mobile:** Erfassung im Feld
- **QR-Code:** eigener QR je Instanz (IDENT-006)
- **Seriennummer:** hier Pflichtfeld
- **Inventarnummer:** ergänzend
- **Akte:** Stammdatenbereich
- **Rechte:** Materialwart+
- **Audit:** Änderung geloggt
- **Akzeptanzkriterien:** Anlage ohne SN bei diesem Typ wird abgelehnt.
- **Tests:** Validierungstest.
- **DoD:** deckt sich mit MABEA `materialtyp=geraet_sn` + `GeraetInstanz` (bereits
umgesetzt).
## INV-003 — Verbrauchsmaterial (Mengen)
- **Ziel:** Mengenbasierte Führung statt Einzel-Instanz.
- **Beschreibung:** Consumable-Bestand als Zahl+Einheit statt Liste von Objekten.
- **Benutzerwert:** Verbandsmaterial/Medikamente ohne unnötigen Verwaltungsaufwand pro
Stück.
- **Abhängigkeiten:** ASSET-008
- **Datenmodell:** `bestand` (consumable_id, standort_id, menge, einheit)
- **Backend:** Mengenanpassung (Zu-/Abgang)
- **Frontend:** Mengenfeld statt Instanzliste
- **Mobile:** Mengenerfassung bei Kontrolle
- **QR-Code:** nein direkt
- **Seriennummer:** entfällt
- **Inventarnummer:** ggf. je Charge (INV-004), nicht je Stück
- **Akte:** vereinfachte Bestandsansicht
- **Rechte:** Mitarbeiter darf melden, Materialwart verwaltet Struktur
- **Audit:** Mengenänderung geloggt
- **Akzeptanzkriterien:** Menge erhöhen/verringern, negative Menge unmöglich.
- **Tests:** Grenzwerttest (0, negativ abgelehnt).
- **DoD:** deckt sich mit MABEA `Objektposition.istmenge`
(materialtyp=standard/ablauf_charge).
## INV-004 — Chargenverwaltung
- **Ziel:** Mehrere Chargen desselben Verbrauchsmaterials unterscheidbar führen.
- **Beschreibung:** Chargennummer + Ablaufdatum je Teilbestand statt nur am Gesamtbestand.
- **Benutzerwert:** Rückrufaktionen chargen-genau möglich, unterschiedliche Ablaufdaten pro
Charge korrekt abgebildet.
- **Abhängigkeiten:** INV-003
- **Datenmodell:** `charge` (consumable_bestand_id, chargennummer, ablaufdatum, menge)
- **Backend:** CRUD je Charge
- **Frontend:** Chargen-Liste je Verbrauchsmaterial
- **Mobile:** Erfassung bei Wareneingang
- **QR-Code:** nein
- **Seriennummer:** entfällt
- **Inventarnummer:** Chargennummer ist eine Art Sub-Identität
- **Akte:** Bestandsverlauf-Detailebene
- **Rechte:** Materialwart+
- **Audit:** Änderung geloggt
- **Akzeptanzkriterien:** mehrere Chargen mit unterschiedlichem Ablaufdatum gleichzeitig
führbar.
- **Tests:** Mehrfach-Chargen-Test.
- **DoD:** **echte MABEA-Lücke:** MABEA führt `chargennummer`+`ablaufdatum` nur EINFACH je
Objektposition (ein Wert, keine Liste) — mehrere Chargen gleichzeitig an derselben Position
sind aktuell NICHT abbildbar. Diese Kachel wäre in MABEA kein reiner Nachzug, sondern ein
Datenmodell-Umbau (1:1 → 1:n).
## INV-005 — Ablaufdaten & Warnschwellen
- **Ziel:** Frühwarnung vor Ablauf von Verbrauchsmaterial/Chargen.
- **Beschreibung:** Warnschwelle (Tage vor Ablauf) je Material oder global konfigurierbar,
Statusberechnung (gültig/bald ablaufend/abgelaufen).
- **Benutzerwert:** Materialwart erkennt rechtzeitig, bevor Material abläuft, kann
rotieren/nachbestellen.
- **Abhängigkeiten:** INV-004
- **Datenmodell:** `warnzeitraum_tage` (an Material oder global als Default) — Status wird
berechnet, nicht gespeichert
- **Backend:** Berechnungsfunktion + Endpoint „bevorstehende Ablaufdaten"
- **Frontend:** Dashboard-Kachel/Liste
- **Mobile:** Anzeige
- **QR-Code/Seriennummer/Inventarnummer:** nein
- **Akte:** Bestandsverlauf-Detailebene
- **Rechte:** wie Lese-Recht (Verantwortliche)
- **Audit:** nein (reine Berechnung)
- **Akzeptanzkriterien:** korrekte Einteilung gültig/bald_ablaufend/abgelaufen nach
Schwelle.
- **Tests:** Schwellenwert-Tests (Randfälle: genau am Schwellenwert, exakt heute).
- **DoD:** deckt sich mit MABEA (`bevorstehende_ablaufdaten()`, Dashboard-Kachel) — bereits
vollständig umgesetzt.
## INV-006 — Mindestbestände & Fehlbestandserkennung
- **Ziel:** Automatische Erkennung, wenn Ist < Soll.
- **Beschreibung:** Sollmenge je Material/Ort, Vergleich mit Istmenge, automatischer
Fehlbestand-Vorgang bei Abweichung. Sonderfall Sofort-Nachfüllung (übernommen aus
`arbeitskarten/07_sofort_nachfuellung.md`, Karte 07): füllt die Besatzung eine
Fehlmenge noch während der laufenden Kontrolle direkt aus dem Lager nach, entsteht der
Fehlbestand-Vorgang trotzdem und wird im selben Moment als erledigt markiert — kein
"verschwindet spurlos", Statuswechsel offen→erledigt muss auch innerhalb derselben
Kontrollsitzung möglich sein, mit vollständiger Zeitstempel-Historie.
- **Benutzerwert:** Kern der ganzen Bestandskontrolle — keine manuelle Dauerüberwachung
nötig.
- **Abhängigkeiten:** INV-003, LOAD-001 (Soll kommt oft aus dem Beladungsplan)
- **Datenmodell:** `fehlbestand` (material_id, ort_id, sollmenge, istmenge, fehlmenge,
status, entstanden_am)
- **Backend:** Erkennungslogik bei Kontrolle/Bestandsänderung
- **Frontend:** Fehlbestand-Liste, Nachfüll-Aktion
- **Mobile:** Nachfüllen im Feld
- **QR-Code/Seriennummer/Inventarnummer:** nein
- **Akte:** eigener Bereich bzw. Teil des Bestandsverlaufs
- **Rechte:** Melden/Nachfüllen: Mitarbeiter+; Mindermenge genehmigen: Verantwortliche.
Genehmigte Mindermenge (übernommen aus `arbeitskarten/08_mindermenge_gueltigkeit.md`,
Karte 08) gilt automatisch nur bis zur nächsten Kontrolle des betroffenen Objekts — kein
festes Ablaufdatum, kein unbefristetes Gelten. Bei nächster Kontrolle wird die Ist-Menge
neu erfasst; besteht die Abweichung weiterhin, muss neu entschieden werden (neue
Genehmigung oder Fehlbestand wieder aktiv).
- **Audit:** Entstehung/Erledigung geloggt
- **Akzeptanzkriterien:** Abweichung erzeugt Fehlbestand automatisch, Nachfüllung
reduziert Fehlmenge korrekt, bei 0 automatisch erledigt — auch wenn Entstehung und
Erledigung in derselben Kontrollsitzung liegen.
- **Tests:** Erkennungstest, Nachfüll-Test, Mindermenge-Sonderfall, Sofort-Nachfüllung
innerhalb derselben Kontrollsitzung.
- **DoD:** deckt sich 1:1 mit MABEA (Fehlbestand-Kernmodul inkl. Mindermenge-Genehmigung
und Sofort-Nachfüllung-Sonderfall) — eines der am weitesten ausgereiften Module im
gesamten Projekt, bereits vollständig umgesetzt.
## INV-007 — Ausgabe/Rückgabe
- **Ziel:** Verbrauchsmaterial/Leihgeräte gezielt an Person/Einsatz ausgeben und
zurücknehmen, nicht nur pauschal Bestand ändern.
- **Beschreibung:** Ausgabevorgang mit Empfänger (Person/Einheit/Einsatz), Rückgabe
schließt den Vorgang, offene Ausgaben bleiben sichtbar.
- **Benutzerwert:** Nachvollziehbarkeit „wer hat was gerade" — z.B. Leihgeräte, Schlüssel,
Funkgeräte.
- **Abhängigkeiten:** INV-003
- **Datenmodell:** `ausgabe` (material_id/asset_id, menge, empfaenger_id, ausgegeben_am,
rueckgabe_am, status offen/zurück)
- **Backend:** Ausgabe-/Rückgabe-Endpunkte
- **Frontend:** Ausgabe-Formular, Liste offener Ausgaben
- **Mobile:** Ausgabe im Feld erfassen
- **QR-Code:** Scan des Assets kann Ausgabevorgang direkt starten
- **Seriennummer/Inventarnummer:** Anzeige, keine neue Logik
- **Akte:** Bewegungs-/Historienbereich — „aktuell ausgegeben an" als Sonderfall von
Standort (Person statt Lagerplatz)
- **Rechte:** Mitarbeiter+ für Ausgabe/Rückgabe
- **Audit:** jeder Vorgang geloggt
- **Akzeptanzkriterien:** Ausgabe erzeugt offenen Vorgang, Rückgabe schließt ihn,
überfällige Rückgaben erkennbar.
- **Tests:** Ausgabe-/Rückgabe-Test, Überfällig-Test.
- **DoD:** mind. ein vollständiger Ausgabe-Rückgabe-Zyklus getestet.
---
**MABEA-Ist-Stand-Abgleich:** INV-001…003 sowie INV-005/006 vollständig vorhanden — INV-006
(Fehlbestand+Mindermenge) ist sogar eines der am weitesten ausgereiften Module im gesamten
Projekt. **INV-004 (echter struktureller Umbau, siehe oben) und INV-007 (Ausgabe/Rückgabe)
fehlen komplett:** MABEA kennt nur Standortzuordnung von Objekten (Lagerbewegung), aber kein
personenbezogenes Ausleih-Konzept für Verbrauchsmaterial/Einzelteile — „wer hat gerade das
Funkgerät" ist aktuell nicht beantwortbar.