feat(wartung): MAINT-005 Ersatzteile/Kosten je Wartungsauftrag
Neue Tabelle wartungsauftrag_teil (Migration 0033), CRUD-Endpunkte
/wartungsauftraege/{id}/teile, UI-Panel in WartungSection.tsx mit
Summenanzeige. Backlog Epic 22 (UI-Redesign Runde 2, Kacheln UI2-001..005)
als geplant ergänzt, Umsetzung folgt separat.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CVgbozhYmuEhiEJHffRXCV
This commit is contained in:
@@ -195,7 +195,7 @@ vergeben statt geraten.
|
||||
| MAINT-002 | Maintenance | Wartungsintervalle | P2 | S | MEDIUM | MAINT-001, ASSET-009 | ✅ (`services/wartung.py` referenziert MAINT-002, Zeit-/km-/Betriebsstunden-Intervalle) |
|
||||
| MAINT-003 | Maintenance | Wartungsauftrag | P2 | M | MEDIUM | MAINT-002 | ✅ (`Wartungsauftrag`, `wartungsauftraege`-Endpunkte) |
|
||||
| MAINT-004 | Maintenance | Wartungshistorie | P2 | S | LOW | MAINT-003, FOUND-006 | ✅ (Wartungsauftrag-Status/Erledigen-Verlauf, `WartungsplanSection.tsx`) |
|
||||
| MAINT-005 | Maintenance | Ersatzteile/Kosten | P3 | M | MEDIUM | MAINT-003 | ⬜ (kein Ersatzteil-/Kosten-Feld gefunden) |
|
||||
| MAINT-005 | Maintenance | Ersatzteile/Kosten | P3 | M | MEDIUM | MAINT-003 | ✅ (`WartungsauftragTeil`, Migration 0033, `/wartungsauftraege/{id}/teile`-CRUD, UI in `WartungSection.tsx`) |
|
||||
| MAINT-006 | Maintenance | Wartungsdokument-Anbindung | P2 | XS | LOW | MAINT-003, DOC-001 | ✅ (Dokument polymorph, deckt Wartungsauftrag ab) |
|
||||
| DEFECT-001 | Defects | Mangelmeldung + Foto | P1 | M | LOW | ASSET-003, DOC-001 | ✅ (`mangel.py`, `MangelListePage.tsx`, Dokument-Anhang möglich) |
|
||||
| DEFECT-002 | Defects | Priorität & Status-Workflow | P1 | S | LOW | DEFECT-001 | ✅ (`MangelStatus`, `MangelPrioritaet` Enums) |
|
||||
@@ -307,10 +307,13 @@ eigenes Modul (MAINT-\*, MABEA hat nur Prüfung, keine Wartung)**.
|
||||
| `18_notifications.md` | NOTIF-001 … NOTIF-002 (vollständig, nachträglich ergänzt) |
|
||||
| `19_satelliten_server.md` | SAT-001 (Platzhalter, nachträglich ergänzt, bewusst zurückgestellt) |
|
||||
| `20_ui_redesign.md` | UI-001 … UI-008 (vollständig umgesetzt, 2026-09-06) |
|
||||
| `21_akte_redesign.md` | AKTE-001 … AKTE-003 (vollständig umgesetzt, 2026-09-06) |
|
||||
| `22_ui_redesign_v2.md` | UI2-001 … UI2-005 (offen, ergänzt 2026-09-08, Grundlage: Subagenten-Analyse ai-coding-starter-kit-v2) |
|
||||
|
||||
**Alle 20 Epics durchgegangen** (16 ursprüngliche + 17 Zuständigkeit/18 Notifications/19
|
||||
Satelliten-Server/20 UI-Redesign, nachträglich ergänzt). Detaillierungsphase
|
||||
abgeschlossen (2026-09-05), UI-Redesign-Epic ergänzt (2026-09-06).
|
||||
**Alle 22 Epics durchgegangen** (16 ursprüngliche + 17 Zuständigkeit/18 Notifications/19
|
||||
Satelliten-Server/20 UI-Redesign/21 Akte-Redesign/22 UI-Redesign Runde 2, nachträglich
|
||||
ergänzt). Detaillierungsphase abgeschlossen (2026-09-05), UI-Redesign-Epic ergänzt
|
||||
(2026-09-06), Runde 2 ergänzt (2026-09-08).
|
||||
|
||||
## Nachtrag: Externe Roadmap-Bewertung Shelf/Resgrid/Emergency Mgmt (2026-09-05)
|
||||
|
||||
|
||||
@@ -0,0 +1,107 @@
|
||||
# Epic 22 — UI-Redesign Runde 2 (Patterns aus ai-coding-starter-kit-v2)
|
||||
|
||||
Ausgangspunkt: Subagenten-Analyse von `gitea.perlbach24.de/scripte/ai-coding-starter-kit-v2`
|
||||
(2026-09-08), reines shadcn/ui-Komponenten-Skelett (Vite/React/TS, Tailwind v3, Radix,
|
||||
react-hook-form+zod). Kein Framework-Wechsel, kein Neubau — Epic 20 (UI-001..008) bleibt
|
||||
Grundlage, hier werden zusätzliche, im Code konkret nachgewiesene Lücken geschlossen.
|
||||
**Kein kompletter Frontend-Neubau** — bewusste Entscheidung, siehe Chat 2026-09-08.
|
||||
|
||||
---
|
||||
|
||||
## UI2-001 — Granularere Design-Tokens (Card/Popover/Sidebar)
|
||||
|
||||
- **Ziel:** Card-/Popover-/Sidebar-Hintergründe über eigene Tokens statt generischem
|
||||
`--color-primary`/`bg-white`.
|
||||
- **Beschreibung:** `--color-card`, `--color-card-foreground`, `--color-popover` etc.
|
||||
in `frontend/src/styles/global/tokens.css` ergänzen (Light+Dark), bestehende
|
||||
Komponenten schrittweise umstellen.
|
||||
- **Benutzerwert:** Konsistentere Flächenhierarchie, einfacheres Dark-Mode-Feintuning.
|
||||
- **Abhängigkeiten:** UI-001 (bereits erledigt)
|
||||
- **Backend:** keins
|
||||
- **Frontend:** `styles/global/tokens.css`
|
||||
- **Rechte:** keine Änderung
|
||||
- **Akzeptanzkriterien:** neue Tokens vorhanden, mind. Card-Komponente nutzt sie statt
|
||||
Hardcoded-Werten.
|
||||
- **Tests:** keine (reines Styling).
|
||||
- **DoD:** offen.
|
||||
|
||||
## UI2-002 — AdminPage Sidebar/Sheet-Umschaltung
|
||||
|
||||
- **Ziel:** Touch-taugliche Navigation für AdminPage-Tabs — Desktop Sidebar, Mobile
|
||||
Sheet-Overlay statt aktuellem Tab-Leisten-Umbruch.
|
||||
- **Beschreibung:** Pattern aus Starter-Kit (`useIsMobile`-Hook + Radix-Dialog-Sheet),
|
||||
MABEA hat bereits `useIsDesktop` — Umschaltung analog, kein natives Drag&Drop.
|
||||
- **Benutzerwert:** Bessere Bedienbarkeit auf Tablet im Feld.
|
||||
- **Abhängigkeiten:** UI2-001
|
||||
- **Backend:** keins
|
||||
- **Frontend:** `AdminPage.tsx`, ggf. neue `components/ui/sheet.tsx`
|
||||
- **Mobile:** Priorität — Zielgerät Tablet
|
||||
- **Rechte:** keine Änderung
|
||||
- **Akzeptanzkriterien:** AdminPage-Tabs auf schmalem Viewport über Sheet erreichbar,
|
||||
bestehende Tab-Inhalte unverändert.
|
||||
- **Tests:** keine neuen (reines UI/Routing).
|
||||
- **DoD:** offen.
|
||||
|
||||
## UI2-003 — Formular-Feld-Komposition
|
||||
|
||||
- **Ziel:** Wiederverwendbarer Feld-Baustein (Label+Input+Fehlermeldung) statt
|
||||
individueller State-Verdrahtung pro Feld in Formularen.
|
||||
- **Beschreibung:** Leichtgewichtiges `FormField`-Pattern (kein react-hook-form/zod
|
||||
nötig, MABEA nutzt bereits einfache `useState`-Formulare — nur Layout/Fehler-
|
||||
Darstellung vereinheitlichen), zuerst in `ObjektAnlegenFormular.tsx` und
|
||||
`ObjekttypSection.tsx` angewendet.
|
||||
- **Benutzerwert:** Einheitliche Fehlerdarstellung, weniger Boilerplate bei neuen
|
||||
Formularen.
|
||||
- **Abhängigkeiten:** UI2-001
|
||||
- **Backend:** keins
|
||||
- **Frontend:** neue `components/ui/form-field.tsx`, `ObjektAnlegenFormular.tsx`,
|
||||
`ObjekttypSection.tsx` darauf umgestellt
|
||||
- **Rechte:** keine Änderung
|
||||
- **Akzeptanzkriterien:** beide Formulare nutzen den neuen Baustein, Verhalten
|
||||
unverändert.
|
||||
- **Tests:** bestehende Vitest-Tests bleiben grün.
|
||||
- **DoD:** offen.
|
||||
|
||||
## UI2-004 — Skeleton-Loading für Dashboard-Kacheln
|
||||
|
||||
- **Ziel:** Skeleton-Platzhalter statt Spinner/nichts beim Nachladen von
|
||||
Dashboard-Kacheln.
|
||||
- **Beschreibung:** Einfache `animate-pulse`-Komponente (`components/ui/skeleton.tsx`),
|
||||
in Dashboard-Tiles während Ladezustand eingesetzt.
|
||||
- **Benutzerwert:** Wahrgenommene Ladezeit sinkt, weniger Layout-Sprung.
|
||||
- **Abhängigkeiten:** UI2-001
|
||||
- **Backend:** keins
|
||||
- **Frontend:** neue `components/ui/skeleton.tsx`, Dashboard-Tiles (`*Tile.tsx`)
|
||||
- **Rechte:** keine Änderung
|
||||
- **Akzeptanzkriterien:** sichtbarer Skeleton-Zustand vor Dateneintreffen, kein
|
||||
Layout-Sprung beim Einblenden der echten Daten.
|
||||
- **Tests:** keine neuen.
|
||||
- **DoD:** offen.
|
||||
|
||||
## UI2-005 — Scrollbarer Table-Wrapper für Materiallisten
|
||||
|
||||
- **Ziel:** Materiallisten/Kontroll-Tabellen brechen auf schmalem Tablet-Viewport
|
||||
nicht das Seiten-Layout, sondern scrollen innerhalb eines eigenen Containers.
|
||||
- **Beschreibung:** Gemeinsamer Table-Wrapper (`overflow-x: auto`) statt Ad-hoc-Lösung
|
||||
je Seite, zuerst in `KontrollPage.tsx`-Listen angewendet.
|
||||
- **Benutzerwert:** Kein horizontales Seiten-Scrollen mehr auf kleinen Screens.
|
||||
- **Abhängigkeiten:** UI2-001
|
||||
- **Backend:** keins
|
||||
- **Frontend:** `KontrollPage.tsx` bzw. betroffene Listen-Komponenten
|
||||
- **Mobile:** Priorität — Tablet-Ziel
|
||||
- **Rechte:** keine Änderung
|
||||
- **Akzeptanzkriterien:** Tabelle scrollt intern, Seite selbst nie horizontal.
|
||||
- **Tests:** keine neuen.
|
||||
- **DoD:** offen.
|
||||
|
||||
---
|
||||
|
||||
**Reihenfolge (empfohlen, nicht blockierend zwischen 002-005):** UI2-001 zuerst
|
||||
(Basis für alle), danach UI2-002..005 in beliebiger Reihenfolge nach Nutzerpriorität.
|
||||
|
||||
**Nicht-Ziele:** kein Wechsel auf react-hook-form/zod/Radix, kein kompletter
|
||||
Frontend-Neubau, keine Breaking Changes an bestehender Fachlogik/API.
|
||||
|
||||
## Referenzen
|
||||
Subagenten-Analyse `ai-coding-starter-kit-v2`, Chat 2026-09-08 (kein Frontend-Neubau,
|
||||
Patterns schrittweise als Kacheln übernehmen).
|
||||
Reference in New Issue
Block a user