Initial FastAPI + SQLite + Alembic

This commit is contained in:
ShaBle
2026-02-06 17:06:35 +01:00
commit 465aa0f1c1
29 changed files with 826 additions and 0 deletions

View File

@@ -0,0 +1,10 @@
from enum import Enum
class AssetStatus(str, Enum):
WARENEINGANG = "WARENEINGANG"
SICHTPRUEFUNG = "SICHTPRUEFUNG"
WARTESCHLANGE = "WARTESCHLANGE"
IN_BEARBEITUNG = "IN_BEARBEITUNG"
QUALITAETSKONTROLLE = "QUALITAETSKONTROLLE"
WARENAUSGANG = "WARENAUSGANG"

View File

@@ -0,0 +1,24 @@
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}",
)