# 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.