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
This commit is contained in:
@@ -0,0 +1,24 @@
|
||||
from datetime import date
|
||||
from decimal import Decimal
|
||||
|
||||
from sqlalchemy import Date, ForeignKey, Integer, Numeric, String
|
||||
from sqlalchemy.orm import Mapped, mapped_column
|
||||
|
||||
from app.db.base import Base
|
||||
|
||||
|
||||
class Fahrzeugdetails(Base):
|
||||
"""Roadmap Phase 3 (Modul "Fahrzeuge"): optionale 1:1-Erweiterung zu Objekt
|
||||
für Fahrzeug-Spezialfelder. Objekt bleibt generisch (Karte 11) - nicht jedes
|
||||
Objekt braucht das, daher eigene Tabelle statt Spalten direkt an Objekt."""
|
||||
|
||||
__tablename__ = "fahrzeugdetails"
|
||||
|
||||
objekt_id: Mapped[int] = mapped_column(ForeignKey("objekt.id"), primary_key=True)
|
||||
kennzeichen: Mapped[str | None] = mapped_column(String)
|
||||
funkrufname: Mapped[str | None] = mapped_column(String)
|
||||
baujahr: Mapped[int | None] = mapped_column(Integer)
|
||||
kilometerstand: Mapped[int | None] = mapped_column(Integer)
|
||||
betriebsstunden: Mapped[Decimal | None] = mapped_column(Numeric)
|
||||
naechste_hu: Mapped[date | None] = mapped_column(Date)
|
||||
naechste_uvv: Mapped[date | None] = mapped_column(Date)
|
||||
@@ -10,6 +10,7 @@ from app.db.base import Base
|
||||
class ObjektStatus(str, enum.Enum):
|
||||
aktiv = "aktiv"
|
||||
ausser_dienst = "ausser_dienst"
|
||||
in_wartung = "in_wartung"
|
||||
|
||||
|
||||
objekt_status_pg = PgEnum(ObjektStatus, name="objekt_status", create_type=False)
|
||||
|
||||
Reference in New Issue
Block a user