Files
LagerFastApi/fastapi_demo/app/domain/transitions.py
2026-02-06 17:06:35 +01:00

25 lines
943 B
Python

from fastapi import HTTPException
from fastapi_demo.app.domain.status import AssetStatus
# Erlaubte Übergänge (Transition Matrix)
ALLOWED_TRANSITIONS: dict[AssetStatus, set[AssetStatus]] = {
AssetStatus.WARENEINGANG: {AssetStatus.SICHTPRUEFUNG},
AssetStatus.SICHTPRUEFUNG: {AssetStatus.WARTESCHLANGE},
AssetStatus.WARTESCHLANGE: {AssetStatus.IN_BEARBEITUNG},
AssetStatus.IN_BEARBEITUNG: {AssetStatus.QUALITAETSKONTROLLE},
AssetStatus.QUALITAETSKONTROLLE: {
AssetStatus.WARENAUSGANG,
AssetStatus.IN_BEARBEITUNG,
}, # z.B. Nacharbeit
AssetStatus.WARENAUSGANG: set(),
}
def ensure_transition_allowed(from_status: AssetStatus, to_status: AssetStatus) -> None:
allowed = ALLOWED_TRANSITIONS.get(from_status, set())
if to_status not in allowed:
raise HTTPException(
status_code=409,
detail=f"Transition nicht erlaubt: {from_status} -> {to_status}",
)