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}", )