Files
bellsystems-cp/backend/manufacturing/models.py

62 lines
1.3 KiB
Python

from pydantic import BaseModel, Field
from typing import Optional, List
from enum import Enum
class BoardType(str, Enum):
vs = "vs" # Vesper
vp = "vp" # Vesper+
vx = "vx" # VesperPro
BOARD_TYPE_LABELS = {
"vs": "Vesper",
"vp": "Vesper+",
"vx": "VesperPro",
}
class MfgStatus(str, Enum):
manufactured = "manufactured"
flashed = "flashed"
provisioned = "provisioned"
sold = "sold"
claimed = "claimed"
decommissioned = "decommissioned"
class BatchCreate(BaseModel):
board_type: BoardType
board_version: str = Field(..., pattern=r"^\d{2}$", description="2-digit zero-padded version, e.g. '01'")
quantity: int = Field(..., ge=1, le=100)
class BatchResponse(BaseModel):
batch_id: str
serial_numbers: List[str]
board_type: str
board_version: str
created_at: str
class DeviceInventoryItem(BaseModel):
id: str
serial_number: str
hw_type: str
hw_version: str
mfg_status: str
mfg_batch_id: Optional[str] = None
created_at: Optional[str] = None
owner: Optional[str] = None
assigned_to: Optional[str] = None
class DeviceInventoryListResponse(BaseModel):
devices: List[DeviceInventoryItem]
total: int
class DeviceStatusUpdate(BaseModel):
status: MfgStatus
note: Optional[str] = None