Files
MABEA/backend/app/schemas/dashboard.py
T
patrickandClaude Sonnet 5 15fb8dbb16
CI / backend-tests (push) Failing after 1m40s
CI / frontend-build (push) Successful in 17s
feat(fahrzeug): Fahrzeug-Spezialfelder + 5-stufiger Status (Roadmap Phase 3)
Neue Tabelle fahrzeugdetails (1:1 zu Objekt, additiv/optional): Kennzeichen,
Funkrufname, Baujahr, Kilometerstand, Betriebsstunden, nächste HU/UVV.
objekt_status um 'in_wartung' erweitert (Nutzer-Vorgabe: einsatzbereit/
eingeschränkt/nicht einsatzbereit/in Wartung/außer Dienst - die ersten drei
bleiben weiterhin rein rechnerisch über dashboard.einsatzbereitschaft(),
in_wartung/ausser_dienst sind die beiden manuell gesetzten Zustände).

dashboard.einsatzbereitschaft(): ausser_dienst-Objekte zählen nicht mehr mit,
in_wartung und überfällige HU/UVV sind neue Gründe für "nicht einsatzbereit".

dashboard.bevorstehende_prueftermine() (Kachel 2) zeigt jetzt Geräte- UND
Fahrzeugprüfungen (HU/UVV) in einer Liste (Nutzer-Vorgabe: ein Konzept für
"welche Prüfungen bald fällig sind") - Schema dafür verallgemeinert
(typ/bezeichnung/faelligkeitsdatum statt geräte-spezifischer Felder).

Frontend: Status-Dropdown + Fahrzeugdetails-Formular in ObjektSection
(nur für Objekttypen mit ist_zugfahrzeug=True), Dashboard-Kachel 2 zeigt
gemischte Liste.

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

55 lines
1.4 KiB
Python

import uuid
from datetime import date
from pydantic import BaseModel
class KennzahlenRead(BaseModel):
anzahl_offener_fehlbestaende: int
anzahl_genehmigter_mindermengen: int
anzahl_kuerzlich_erledigter_fehlbestaende: int
anzahl_bevorstehender_ablaufdaten: int
anzahl_problematischer_objekte: int
anzahl_objekte_gesamt: int
class AblaufdatumRead(BaseModel):
objekt_id: int
material_id: int
ablaufdatum: date
verbleibende_tage: int
status: str
class ObjektMangelRead(BaseModel):
objekt_id: int
code: str
name: str
gruende: list[str]
class EinsatzbereitschaftRead(BaseModel):
einsatzbereit: int
eingeschraenkt_einsatzbereit: int
nicht_einsatzbereit: int
gesamt: int
details: list[ObjektMangelRead]
class PrueftermineintragRead(BaseModel):
"""typ='geraet' (Karte 14) oder 'fahrzeug_hu'/'fahrzeug_uvv' (Roadmap Phase
3, Modul Fahrzeuge) - eine Kachel für beide (Nutzer-Vorgabe: "welche
Prüfungen bald fällig sind" ist ein Konzept). Die geraet-spezifischen
Felder sind bei Fahrzeug-Einträgen None."""
typ: str
objekt_id: int
bezeichnung: str
faelligkeitsdatum: date
verbleibende_tage: int
status: str
geraet_instanz_id: uuid.UUID | None = None
objektposition_id: uuid.UUID | None = None
material_id: int | None = None
seriennummer: str | None = None