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,49 @@
|
||||
"""Fahrzeug-Spezialfelder (Roadmap Phase 3: BOS-Ressourcenplattform-Anforderung
|
||||
Modul 2 "Fahrzeuge"). Kennzeichen/Funkrufname/Kilometerstand/Betriebsstunden/
|
||||
Baujahr/HU/UVV als optionale 1:1-Erweiterung zu Objekt (nicht jeder Objekttyp
|
||||
braucht das, nur Zugfahrzeuge - additiv, kein eigener Fahrzeug-Objekttyp
|
||||
erzwungen, Karte 11 bleibt gültig).
|
||||
|
||||
Zusätzlich objekt_status um 'in_wartung' erweitert (Nutzer-Vorgabe: 5-stufiger
|
||||
Fahrzeug-Status). ALTER TYPE ... ADD VALUE muss außerhalb der laufenden
|
||||
Transaktion committen (Postgres-Einschränkung), daher AUTOCOMMIT-Block.
|
||||
|
||||
Revision ID: 0014_fahrzeugdetails
|
||||
Revises: 0013_mangel
|
||||
Create Date: 2026-09-05
|
||||
"""
|
||||
from typing import Sequence, Union
|
||||
|
||||
from alembic import op
|
||||
|
||||
revision: str = "0014_fahrzeugdetails"
|
||||
down_revision: Union[str, None] = "0013_mangel"
|
||||
branch_labels: Union[str, Sequence[str], None] = None
|
||||
depends_on: Union[str, Sequence[str], None] = None
|
||||
|
||||
|
||||
def upgrade() -> None:
|
||||
with op.get_context().autocommit_block():
|
||||
op.execute("ALTER TYPE objekt_status ADD VALUE IF NOT EXISTS 'in_wartung'")
|
||||
|
||||
op.execute(
|
||||
"""
|
||||
CREATE TABLE fahrzeugdetails (
|
||||
objekt_id INTEGER PRIMARY KEY REFERENCES objekt(id),
|
||||
kennzeichen TEXT,
|
||||
funkrufname TEXT,
|
||||
baujahr INTEGER,
|
||||
kilometerstand INTEGER,
|
||||
betriebsstunden NUMERIC,
|
||||
naechste_hu DATE,
|
||||
naechste_uvv DATE
|
||||
)
|
||||
"""
|
||||
)
|
||||
|
||||
|
||||
def downgrade() -> None:
|
||||
op.execute("DROP TABLE fahrzeugdetails")
|
||||
# 'in_wartung' aus dem ENUM zu entfernen ist in Postgres nicht direkt möglich
|
||||
# (kein ALTER TYPE ... DROP VALUE) - bewusst nicht rückgängig gemacht, siehe
|
||||
# Muster in 0001_initial_schema (dort ebenfalls nur DROP TYPE als Ganzes).
|
||||
Reference in New Issue
Block a user