Nutzer-Fund: funkkenner (z.B. OPTA-Nummer) fehlte in fahrzeugdetails komplett - eigenes Feld, nicht dasselbe wie funkrufname (gesprochener Rufname vs. formale Funk-Identifikationsnummer im Digitalfunknetz). Migration 0018, Model/Schema/Frontend-Formular ergänzt. Auch im Kachel- Backlog (arbeitskacheln/05_fleet.md, FLEET-002) nachgezogen. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KC8HYvv6UkCVYheYiTw9DD
28 lines
1.2 KiB
Python
28 lines
1.2 KiB
Python
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)
|
|
# BOS-Digitalfunk-Kennung (z.B. OPTA-Nummer) - eigenes Feld, nicht dasselbe wie
|
|
# funkrufname (gesprochener Rufname vs. formale Funk-Identifikationsnummer).
|
|
funkkenner: 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)
|