Files
patrickandClaude Sonnet 5 27c249993a
CI / backend-tests (push) Failing after 1m53s
CI / frontend-build (push) Successful in 17s
feat(fahrzeug): Funkkenner-Feld ergänzt (BOS-Digitalfunk-Kennung)
Nutzer-Fund: funkkenner (z.B. OPTA-Nummer) fehlte in fahrzeugdetails komplett
- eigenes Feld, nicht dasselbe wie funkrufname (gesprochener Rufname vs.
formale Funk-Identifikationsnummer im Digitalfunknetz).

Migration 0018, Model/Schema/Frontend-Formular ergänzt. Auch im Kachel-
Backlog (arbeitskacheln/05_fleet.md, FLEET-002) nachgezogen.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KC8HYvv6UkCVYheYiTw9DD
2026-09-05 15:37:32 +02:00

148 lines
7.1 KiB
Markdown

# Epic 05 — Fleet
Details zu FLEET-001 … FLEET-006 (vollständig).
---
## FLEET-001 — Fahrzeugtypen
- **Ziel:** Fahrzeugspezifische Typebene oberhalb AssetType.
- **Beschreibung:** Fahrzeugtyp-Stammdaten (z.B. „GW-San", „MTW"), verweist auf AssetType.
- **Benutzerwert:** Vorlage für Fahrzeug-Anlage, ähnliche Fahrzeuge gruppiert.
- **Abhängigkeiten:** ASSET-002
- **Datenmodell:** `fahrzeugtyp` (id, asset_type_id, ...) oder Erweiterungsfelder an
`asset_type`
- **Backend:** CRUD
- **Frontend:** Verwaltung
- **Mobile:** Anzeige
- **QR-Code/Seriennummer/Inventarnummer:** nein
- **Akte:** Stammdatenbereich
- **Rechte:** Materialwart/Administrator
- **Audit:** Änderung geloggt
- **Akzeptanzkriterien:** Fahrzeugtyp anlegen, Verknüpfung zu AssetType.
- **Tests:** CRUD-Test.
- **DoD:** mind. ein Fahrzeugtyp angelegt.
## FLEET-002 — Fahrzeuge (Kennzeichen/Funkrufname/Funkkenner)
- **Nachtrag (Nutzer-Fund):** Funkkenner (BOS-Digitalfunk-Kennung, z.B. OPTA-Nummer) fehlte
— ist ein eigenes Feld, nicht dasselbe wie Funkrufname (gesprochener Rufname wie
„Florian München 1/44" vs. formale Funk-Identifikationsnummer im Digitalfunknetz).
- **Ziel:** Fahrzeug-Spezialfelder am Asset.
- **Beschreibung:** Kennzeichen, Fahrgestellnummer, Funkrufname, Funkkenner als
1:1-Erweiterungstabelle zu Asset.
- **Benutzerwert:** Fahrzeuge sind die wichtigste Ressourcenklasse im Rettungsdienst — eigene
Kennfelder sind Pflicht.
- **Abhängigkeiten:** ASSET-003, FLEET-001
- **Datenmodell:** `fahrzeugdetails` (asset_id, kennzeichen, fahrgestellnummer,
funkrufname, funkkenner)
- **Backend:** CRUD/Upsert
- **Frontend:** Formular
- **Mobile:** Anzeige
- **QR-Code:** Kennzeichen kann Klartext-Fallback auf dem Label sein
- **Seriennummer/Inventarnummer:** ergänzend, siehe Asset-Kernfelder
- **Akte:** Fahrzeug-spezifischer Stammdatenbereich
- **Rechte:** Materialwart/Administrator
- **Audit:** Änderung geloggt
- **Akzeptanzkriterien:** Felder setzen/anzeigen funktioniert.
- **Tests:** CRUD-Test.
- **DoD:** deckt sich mit MABEA `fahrzeugdetails` (bereits umgesetzt, diente hier als
Vorbild).
## FLEET-003 — Kilometerstand (Fahrzeug-Anwendung von ASSET-009)
- **Korrektur (Nutzer-Fund):** ursprünglich hier fälschlich als fahrzeug-eigenes
Datenmodell geplant. Betriebsstunden brauchen auch Nicht-Fahrzeuge (Stromerzeuger,
Pumpen) — der generische Zähler-Mechanismus ist jetzt **ASSET-009**. Diese Kachel ist
nur noch die Fahrzeug-spezifische Anwendung davon (Zählertyp=kilometer, UI-Einbindung in
die Fahrzeug-Akte).
- **Ziel:** Kilometerstand des Fahrzeugs im Kontroll-/Rückkehr-Ablauf erfassbar machen.
- **Beschreibung:** Fahrzeug nutzt ASSET-009 mit `zaehler_typ=kilometer`, kein eigenes
Feld/Endpoint mehr nötig.
- **Benutzerwert:** Grundlage für kilometerabhängige Wartungsplanung (MAINT-002).
- **Abhängigkeiten:** FLEET-002, **ASSET-009**
- **Datenmodell:** keins zusätzlich (nutzt ASSET-009)
- **Backend:** keins zusätzlich
- **Frontend:** Eingabefeld bei Kontrolle/Rückkehr, eingebettet in Fahrzeug-Akte
- **Mobile:** Eingabe im Feld (nach Fahrt)
- **QR-Code/Seriennummer/Inventarnummer:** nein
- **Akte:** Stammdatenbereich
- **Rechte:** wie ASSET-009
- **Audit:** wie ASSET-009
- **Akzeptanzkriterien:** Kilometerstand-Eingabe am Fahrzeug nutzt denselben validierten
Mechanismus wie ein Betriebsstunden-Gerät.
- **Tests:** Integrationstest (Fahrzeug als Anwendungsfall von ASSET-009).
- **DoD:** funktioniert, keine Fahrzeug-spezifische Sonderlogik mehr nötig.
## FLEET-004 — Fahrzeugstatus (5-stufig)
- **Ziel:** Fahrzeug-spezifische Verfeinerung von ASSET-004.
- **Beschreibung:** einsatzbereit/eingeschränkt/nicht einsatzbereit/in Wartung/außer Dienst
— die ersten drei rechnerisch aus der Readiness-Engine (READY-002), die letzten zwei
manuell gesetzt.
- **Benutzerwert:** Differenziertere Aussage als der generische Asset-Status.
- **Abhängigkeiten:** FLEET-002, READY-002
- **Datenmodell:** kein Extra-Feld nötig, wenn ASSET-004 generisch genug +
Readiness-Overlay reicht — sonst eigenes Statusfeld
- **Backend:** Statuswechsel + Readiness-Kopplung
- **Frontend:** Status-Anzeige/-Dropdown
- **Mobile:** Anzeige
- **QR-Code/Seriennummer/Inventarnummer:** nein
- **Akte:** Stammdatenbereich
- **Rechte:** manuelle Zustände (Wartung/außer Dienst) nur Materialwart/Administrator
- **Audit:** Statuswechsel geloggt
- **Akzeptanzkriterien:** 5 Zustände korrekt unterscheidbar, rechnerischer vs. manueller
Anteil klar getrennt.
- **Tests:** Statustest je Zustand.
- **DoD:** deckt sich vollständig mit MABEA (bereits umgesetzt: `ObjektStatus` inkl.
`in_wartung` + Readiness-Berechnung im Dashboard).
## FLEET-005 — Fahrzeug-Dokumente
- **Ziel:** Fahrzeugpapiere/Zulassung digital anhängen.
- **Beschreibung:** Nutzt DOC-001 generisch, hier nur die Fach-Kopplung/Anzeige in der
Fahrzeug-Akte.
- **Benutzerwert:** Zulassungsbescheinigung/Versicherungsnachweis griffbereit.
- **Abhängigkeiten:** FLEET-002, DOC-001
- **Datenmodell:** keins neu (nutzt Dokument-Polymorphie)
- **Backend:** keins zusätzlich
- **Frontend:** Dokumente-Panel in der Fahrzeug-Akte
- **Mobile:** Anzeige
- **QR-Code/Seriennummer/Inventarnummer:** nein
- **Akte:** Dokumentenbereich
- **Rechte:** wie DOC-001
- **Audit:** wie DOC-001
- **Akzeptanzkriterien:** Dokument an Fahrzeug hochladen/anzeigen.
- **Tests:** Integrationstest mit DOC-001.
- **DoD:** entspricht MABEA (DokumentePanel bereits generisch wiederverwendbar,
funktioniert unverändert für Fahrzeuge).
## FLEET-006 — Fahrzeug-Einsatzhistorie (Platzhalter, P3)
- **Ziel:** Welche Einsätze ein Fahrzeug gefahren ist.
- **Beschreibung:** Platzhalter-Kachel — echte Umsetzung hängt vom noch nicht entworfenen
Operations-Epic ab.
- **Benutzerwert:** Nutzungsnachweis/Auslastungsstatistik.
- **Abhängigkeiten:** FLEET-002, OPS-002
- **Datenmodell / Backend / Frontend / Mobile / QR / SN / Inv / Akte / Rechte / Audit:**
TBD — nicht sinnvoll spezifizierbar vor OPS-001/002.
- **Akzeptanzkriterien:** TBD.
- **Tests:** TBD.
- **DoD:** **DECISION REQUIRED:** diese Kachel bleibt bewusst Platzhalter, erst bei
tatsächlichem Angehen des Operations-Epics neu aufsetzen statt jetzt blind zu spezifizieren.
---
**MABEA-Ist-Stand-Abgleich:** FLEET-001/002/004/005 sind praktisch 1:1 in MABEA vorhanden
(Objekttyp mit `ist_zugfahrzeug`, `fahrzeugdetails`-Tabelle, 5-stufiger `ObjektStatus`,
generisches DokumentePanel). **FLEET-003/ASSET-009 zeigen eine echte Lücke:** MABEA führt
Kilometerstand/Betriebsstunden NUR an `fahrzeugdetails` (fahrzeug-gebunden), es gibt keinen
generischen Zähler-Mechanismus für Geräte wie Stromerzeuger/Pumpen (`GeraetInstanz` hat kein
Betriebsstunden-Feld) — und selbst der Fahrzeug-Kilometerstand hat **keine
Rückwärtslauf-Validierung** (reiner Zahlen-Input). Beides zusammen: ASSET-009 wäre in MABEA
kein reiner Nachzug, sondern verlangt (a) ein neues generisches Zählerfeld an Objekt/
GeraetInstanz und (b) eine bisher fehlende Validierungsregel. FLEET-006 ist in MABEA (noch)
nicht relevant, da kein Operations-Epic existiert. **FLEET-002-Nachtrag:** `funkkenner`
fehlte in MABEAs `fahrzeugdetails` komplett (nur `funkrufname` vorhanden) — echte, kleine
Feld-Lücke, wird direkt nachgezogen (siehe Commit).