import uuid from datetime import datetime from sqlalchemy import ForeignKey, String from sqlalchemy.dialects.postgresql import TIMESTAMP, UUID from sqlalchemy.orm import Mapped, mapped_column from app.db.base import Base class Lagerbewegung(Base): """Roadmap Phase 4 (Modul Lager): protokolliert Standortwechsel eines Objekts (Rucksack/Gerät/Fahrzeug - der Materialträger, Karte 11). Append- only wie Historie, keine Update/Delete-Operation vorgesehen.""" __tablename__ = "lagerbewegung" id: Mapped[uuid.UUID] = mapped_column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4) objekt_id: Mapped[int] = mapped_column(ForeignKey("objekt.id"), nullable=False) von_standort_id: Mapped[int | None] = mapped_column(ForeignKey("standort.id")) nach_standort_id: Mapped[int] = mapped_column(ForeignKey("standort.id"), nullable=False) benutzer_id: Mapped[int] = mapped_column(ForeignKey("benutzer.id"), nullable=False) zeitpunkt: Mapped[datetime] = mapped_column(TIMESTAMP(timezone=True), nullable=False) grund: Mapped[str | None] = mapped_column(String)