Neues Wartungskonzept: Wartungsplan+Position+Intervall (zeit/km/ Betriebsstunden, kombinierbar - fällig sobald ein Kriterium erreicht ist), Wartungsauftrag mit intern/externer Werkstatt, Status offen/ in_arbeit/erledigt, Kosten, Historie, Dokument-Anhang. Ad-hoc-Aufträge ohne Plan möglich (z.B. kleinere Reparatur). Admin-Tab "Wartungspläne". Objektakte-Redesign (Epic 21, Nutzer-Feedback "wirkt nicht modern"): CSS-Grid statt Karten-Stapel, einspaltig mobil, zweispaltig ab 900px; Fahrzeug-Objekte zeigen Wartung/Fahrzeugdaten prominent, Geräte/ Rucksäcke die Beladung. Dabei gefundene Lücke: Beladung (Soll/Ist je Position) fehlte in der Akte komplett, nur über eine laufende Kontrolle sichtbar - jetzt eigene Karte. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CVgbozhYmuEhiEJHffRXCV
151 lines
6.6 KiB
Markdown
151 lines
6.6 KiB
Markdown
# Epic 10 — Maintenance
|
|
|
|
Details zu MAINT-001 … MAINT-006 (vollständig).
|
|
|
|
---
|
|
|
|
## MAINT-001 — Wartungspläne
|
|
|
|
- **Ziel:** Definierte Wartungsvorgaben je AssetType/Asset.
|
|
- **Beschreibung:** Wartungsplan-Stammdaten mit Bezug zu AssetType, Liste vorgesehener
|
|
Wartungsarten (z.B. „Ölwechsel", „Filterwechsel").
|
|
- **Benutzerwert:** Standardisierte Wartungsvorgaben statt Herstellerhandbuch jedes Mal
|
|
nachschlagen.
|
|
- **Abhängigkeiten:** ASSET-002
|
|
- **Datenmodell:** `wartungsplan` (id, asset_type_id, name), `wartungsplan_position`
|
|
(plan_id, wartungsart, beschreibung)
|
|
- **Backend:** CRUD
|
|
- **Frontend:** Verwaltung
|
|
- **Mobile:** Anzeige
|
|
- **QR-Code/Seriennummer/Inventarnummer:** nein
|
|
- **Akte:** Wartungsbereich
|
|
- **Rechte:** Materialwart/Administrator
|
|
- **Audit:** Änderung geloggt
|
|
- **Akzeptanzkriterien:** Wartungsplan mit mehreren Positionen anlegen.
|
|
- **Tests:** CRUD-Test.
|
|
- **DoD:** umgesetzt (2026-09-06). `wartungsplan`/`wartungsplan_position` je
|
|
Objekttyp, `POST/GET /wartungsplaene`, Admin-Tab "Wartungspläne".
|
|
|
|
## MAINT-002 — Wartungsintervalle
|
|
|
|
- **Ziel:** Wann eine Wartungsposition fällig wird (zeit-, km- oder
|
|
betriebsstundenabhängig).
|
|
- **Beschreibung:** Intervall-Typ (Zeit/km/Betriebsstunden) + Wert, nutzt ASSET-009 für
|
|
den Zähler-Abgleich.
|
|
- **Benutzerwert:** Automatische Fälligkeitsberechnung statt Herstellervorgabe manuell im
|
|
Kopf behalten.
|
|
- **Abhängigkeiten:** MAINT-001, ASSET-009
|
|
- **Datenmodell:** `wartungsintervall` (wartungsplan_position_id, typ:
|
|
zeit/km/betriebsstunden, wert)
|
|
- **Backend:** Fälligkeitsberechnung, kombiniert ggf. mehrere Kriterien („je nachdem was
|
|
zuerst eintritt")
|
|
- **Frontend:** Intervall-Einstellung
|
|
- **Mobile:** Anzeige
|
|
- **QR-Code/Seriennummer/Inventarnummer:** nein
|
|
- **Akte:** Wartungsbereich
|
|
- **Rechte:** Materialwart/Administrator
|
|
- **Audit:** Änderung geloggt
|
|
- **Akzeptanzkriterien:** alle drei Intervall-Typen einzeln und kombiniert korrekt
|
|
berechnet.
|
|
- **Tests:** Berechnungstest je Typ + Kombinationstest („je nachdem was zuerst
|
|
eintritt").
|
|
- **DoD:** umgesetzt (2026-09-06), abgewandelt: `wartungsintervall` (zeit/km/
|
|
betriebsstunden je Position, mehrere kombinierbar). Statt eines eigenen
|
|
Zähler-Abgleich-Konzepts (ASSET-009 existiert in MABEA nicht) werden die
|
|
bereits vorhandenen `Fahrzeugdetails.kilometerstand`/`betriebsstunden`
|
|
genutzt — für Geräte ohne Fahrzeugdetails wirkt nur das Zeit-Intervall.
|
|
`GET /objekte/{id}/faellige-wartungen` berechnet je Position, welches
|
|
Kriterium zuerst eintritt; nie durchgeführt gilt immer als fällig. Getestet:
|
|
alle drei Typen einzeln + Kombination ("km vor Zeit fällig").
|
|
|
|
## MAINT-003 — Wartungsauftrag
|
|
|
|
- **Ziel:** Konkrete Durchführung einer fälligen Wartung beauftragen/nachverfolgen.
|
|
- **Beschreibung:** Auftrag mit Status (offen/in Arbeit/erledigt), zugeordnet zu
|
|
Wartungsplan-Position + Asset.
|
|
- **Benutzerwert:** Werkstattauftrag nachvollziehbar statt Zettelwirtschaft.
|
|
- **Abhängigkeiten:** MAINT-002
|
|
- **Datenmodell:** `wartungsauftrag` (id, asset_id, wartungsplan_position_id, status,
|
|
erstellt_am, erledigt_am, durchgefuehrt_von)
|
|
- **Backend:** CRUD + Statuswechsel
|
|
- **Frontend:** Auftragsliste/-formular
|
|
- **Mobile:** Statuswechsel im Feld
|
|
- **QR-Code:** Scan Asset zeigt offene Aufträge
|
|
- **Seriennummer/Inventarnummer:** nein
|
|
- **Akte:** Wartungsbereich
|
|
- **Rechte:** Materialwart/Administrator erstellt, Werkstatt/Fahrzeugwart erledigt
|
|
- **Audit:** Statuswechsel geloggt
|
|
- **Akzeptanzkriterien:** Auftrag anlegen, Status durchlaufen bis erledigt.
|
|
- **Tests:** Statuswechsel-Test.
|
|
- **DoD:** umgesetzt (2026-09-06). `wartungsauftrag` (Objekt + optional
|
|
Geräte-Instanz + optional Wartungsplan-Position — auch ad-hoc ohne Plan,
|
|
z.B. "kleinere Reparatur"), Status offen/in_arbeit/erledigt, **werkstatt_intern
|
|
+ werkstatt_name** (beantwortet die Nutzerfrage nach externer Werkstatt),
|
|
Kosten optional. Zyklus offen→in_arbeit→erledigt getestet, inkl. ad-hoc-
|
|
Auftrag ohne Plan.
|
|
|
|
## MAINT-004 — Wartungshistorie
|
|
|
|
- **Ziel:** Nachvollziehen, welche Wartungen wann durchgeführt wurden.
|
|
- **Beschreibung:** Liste erledigter Wartungsaufträge je Asset.
|
|
- **Benutzerwert:** Wartungsnachweis (auch für Garantie/Weiterverkauf relevant).
|
|
- **Abhängigkeiten:** MAINT-003, FOUND-006
|
|
- **Datenmodell:** keins neu (aus MAINT-003-Daten)
|
|
- **Backend:** Abfrage je Asset
|
|
- **Frontend:** Anzeige in der Akte
|
|
- **Mobile:** Anzeige
|
|
- **QR-Code/Seriennummer/Inventarnummer:** nein
|
|
- **Akte:** Historien-/Wartungsbereich
|
|
- **Rechte:** wie Lese-Recht
|
|
- **Audit:** zeigt Audit-relevante Daten
|
|
- **Akzeptanzkriterien:** chronologische Liste korrekt.
|
|
- **Tests:** Anzeigetest.
|
|
- **DoD:** umgesetzt (2026-09-06). Kein neuer Endpunkt nötig -
|
|
`GET /wartungsauftraege?objekt_id=` liefert offene+erledigte, Akte zeigt
|
|
beide getrennt in der neuen "Wartung"-Sektion.
|
|
|
|
## MAINT-005 — Ersatzteile/Kosten (P3)
|
|
|
|
- **Ziel:** Welche Teile/Kosten bei einer Wartung angefallen sind.
|
|
- **Beschreibung:** Ersatzteilliste + Kostenfeld je Wartungsauftrag.
|
|
- **Benutzerwert:** Kostenübersicht/Budgetplanung.
|
|
- **Abhängigkeiten:** MAINT-003
|
|
- **Datenmodell:** `wartungsauftrag_teil` (auftrag_id, bezeichnung, menge, kosten)
|
|
- **Backend:** CRUD
|
|
- **Frontend:** Positionsliste im Auftrag
|
|
- **Mobile:** Erfassung
|
|
- **QR-Code/Seriennummer/Inventarnummer:** nein
|
|
- **Akte:** Wartungsbereich
|
|
- **Rechte:** Materialwart/Administrator
|
|
- **Audit:** Änderung geloggt
|
|
- **Akzeptanzkriterien:** Teile/Kosten erfassen, Summe korrekt.
|
|
- **Tests:** Summen-Test.
|
|
- **DoD:** **P3 — kann zurückgestellt werden**, kein MVP-Bestandteil.
|
|
|
|
## MAINT-006 — Wartungsdokument-Anbindung
|
|
|
|
- **Ziel:** Wartungsbericht/Rechnung an den Auftrag anhängen.
|
|
- **Beschreibung:** Nutzt DOC-001, `entitaet_typ=wartungsauftrag`.
|
|
- **Benutzerwert:** Beleg griffbereit.
|
|
- **Abhängigkeiten:** MAINT-003, DOC-001
|
|
- **Datenmodell:** keins neu
|
|
- **Backend:** keins zusätzlich
|
|
- **Frontend:** Dokumente-Panel am Auftrag
|
|
- **Mobile:** Anzeige
|
|
- **QR-Code/Seriennummer/Inventarnummer:** nein
|
|
- **Akte:** Wartungsbereich
|
|
- **Rechte:** wie DOC-001
|
|
- **Audit:** wie DOC-001
|
|
- **Akzeptanzkriterien:** Dokument anhängen.
|
|
- **Tests:** Integrationstest.
|
|
- **DoD:** umgesetzt (2026-09-06). `entitaet_typ=wartungsauftrag` zur Whitelist
|
|
ergänzt, `DokumentePanel` in der Wartung-Sektion der Akte je Auftrag.
|
|
|
|
---
|
|
|
|
**MABEA-Ist-Stand-Abgleich (aktualisiert 2026-09-06):** MAINT-001..004+006
|
|
vollständig umgesetzt — echtes Wartungskonzept existiert jetzt (Wartungspläne,
|
|
Intervalle, Werkstattaufträge intern/extern, Historie, Dokument-Anhang).
|
|
MAINT-005 (Ersatzteile/Kosten-Detailliste) bleibt bewusst zurückgestellt (P3) —
|
|
Kosten als einzelnes Feld am Auftrag reicht für den MVP.
|