feat(objekt): Zugfahrzeug-Flag am Objekttyp + Leitungs-Dashboard-Kacheln
Objekttyp.ist_zugfahrzeug (Migration 0011) grenzt die Fahrzeug-Zuordnung serverseitig auf tatsächliche Zugfahrzeuge ein (422 bei Verstoß), Frontend filtert die Fahrzeug-Dropdowns entsprechend. Neue Dashboard-Endpunkte /dashboard/einsatzbereitschaft und /dashboard/prueftermine plus DashboardPage mit drei Kacheln (Einsatzbereitschaft, Prüftermine, Ablaufdaten). Aktive Mindermengen-Genehmigung zählt als "eingeschränkt einsatzbereit", nicht als voll einsatzbereit (U2/Karte 08). Neue FehlbestandListePage: Fehlbestände eigenständig nachfüllen/Mindermenge genehmigen, ohne komplette Kontrolle des Objekts zu starten (Backend existierte bereits, nur das Frontend fehlte). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KC8HYvv6UkCVYheYiTw9DD
This commit is contained in:
@@ -1,7 +1,10 @@
|
||||
import uuid
|
||||
from datetime import date
|
||||
|
||||
from pydantic import BaseModel
|
||||
|
||||
from app.models.geraet_instanz import GeraetStatus
|
||||
|
||||
|
||||
class KennzahlenRead(BaseModel):
|
||||
anzahl_offener_fehlbestaende: int
|
||||
@@ -18,3 +21,31 @@ class AblaufdatumRead(BaseModel):
|
||||
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):
|
||||
geraet_instanz_id: uuid.UUID
|
||||
objekt_id: int
|
||||
objektposition_id: uuid.UUID
|
||||
material_id: int
|
||||
material_name: str
|
||||
seriennummer: str
|
||||
geraet_status: GeraetStatus
|
||||
naechste_pruefung: date
|
||||
verbleibende_tage: int
|
||||
status: str
|
||||
|
||||
@@ -54,6 +54,7 @@ class ObjekttypCreate(BaseModel):
|
||||
bereich_id: int
|
||||
kategorie_id: int | None = None
|
||||
name: str
|
||||
ist_zugfahrzeug: bool = False
|
||||
|
||||
|
||||
class ObjekttypRead(ObjekttypCreate):
|
||||
@@ -65,6 +66,7 @@ class ObjekttypUpdate(BaseModel):
|
||||
bereich_id: int | None = None
|
||||
kategorie_id: int | None = None
|
||||
name: str | None = None
|
||||
ist_zugfahrzeug: bool | None = None
|
||||
|
||||
|
||||
class FachCreate(BaseModel):
|
||||
|
||||
Reference in New Issue
Block a user