feat: Phase 3 manufacturing + firmware management
This commit is contained in:
61
backend/manufacturing/models.py
Normal file
61
backend/manufacturing/models.py
Normal file
@@ -0,0 +1,61 @@
|
||||
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
|
||||
Reference in New Issue
Block a user