123 lines
4.5 KiB
Python
123 lines
4.5 KiB
Python
"""工艺路线管理 Pydantic Schemas"""
|
|
from pydantic import BaseModel, ConfigDict, Field
|
|
from typing import Optional, List
|
|
|
|
|
|
# Route main table
|
|
class ProcessRouteCreateBody(BaseModel):
|
|
model_config = ConfigDict(populate_by_name=True)
|
|
route_code: str = Field(..., alias="routeCode")
|
|
route_name: str = Field(..., alias="routeName")
|
|
product_type_id: Optional[str] = Field(None, alias="productTypeId")
|
|
version: Optional[str] = Field(None, alias="version")
|
|
remark: Optional[str] = None
|
|
|
|
|
|
class ProcessRouteUpdateBody(BaseModel):
|
|
model_config = ConfigDict(populate_by_name=True)
|
|
route_code: Optional[str] = Field(None, alias="routeCode")
|
|
route_name: Optional[str] = Field(None, alias="routeName")
|
|
product_type_id: Optional[str] = Field(None, alias="productTypeId")
|
|
version: Optional[str] = Field(None, alias="version")
|
|
remark: Optional[str] = None
|
|
|
|
|
|
class SetCurrentBody(BaseModel):
|
|
model_config = ConfigDict(populate_by_name=True)
|
|
route_id: str = Field(..., alias="routeId")
|
|
|
|
|
|
# Step operations
|
|
class StepAddBody(BaseModel):
|
|
model_config = ConfigDict(populate_by_name=True)
|
|
route_id: str = Field(..., alias="routeId")
|
|
process_id: str = Field(..., alias="processId")
|
|
step_order: Optional[int] = Field(None, alias="stepOrder")
|
|
|
|
|
|
class StepCopyBody(BaseModel):
|
|
model_config = ConfigDict(populate_by_name=True)
|
|
step_id: str = Field(..., alias="stepId")
|
|
|
|
|
|
class StepUpdateBody(BaseModel):
|
|
model_config = ConfigDict(populate_by_name=True)
|
|
step_id: str = Field(..., alias="stepId")
|
|
process_code: Optional[str] = Field(None, alias="processCode")
|
|
category_id: Optional[str] = Field(None, alias="categoryId")
|
|
process_name: Optional[str] = Field(None, alias="processName")
|
|
description: Optional[str] = None
|
|
equipment_name: Optional[str] = Field(None, alias="equipmentName")
|
|
estimated_duration: Optional[str] = Field(None, alias="estimatedDuration")
|
|
sop_ids: Optional[str] = Field(None, alias="sopIds")
|
|
|
|
|
|
class StepReorderBody(BaseModel):
|
|
model_config = ConfigDict(populate_by_name=True)
|
|
route_id: str = Field(..., alias="routeId")
|
|
step_ids: List[str] = Field(..., alias="stepIds")
|
|
|
|
|
|
# Step sub-table items
|
|
class StepReagentItem(BaseModel):
|
|
model_config = ConfigDict(populate_by_name=True)
|
|
reagent_code: Optional[str] = Field(None, alias="reagentCode")
|
|
reagent_name: Optional[str] = Field(None, alias="reagentName")
|
|
spec: Optional[str] = None
|
|
standard_usage: Optional[str] = Field(None, alias="standardUsage")
|
|
unit: Optional[str] = None
|
|
is_key_material: Optional[str] = Field("0", alias="isKeyMaterial")
|
|
remark: Optional[str] = None
|
|
|
|
|
|
class StepConsumableItem(BaseModel):
|
|
model_config = ConfigDict(populate_by_name=True)
|
|
consumable_code: Optional[str] = Field(None, alias="consumableCode")
|
|
consumable_name: Optional[str] = Field(None, alias="consumableName")
|
|
spec_model: Optional[str] = Field(None, alias="specModel")
|
|
standard_usage: Optional[str] = Field(None, alias="standardUsage")
|
|
unit: Optional[str] = None
|
|
is_required: Optional[str] = Field("1", alias="isRequired")
|
|
remark: Optional[str] = None
|
|
|
|
|
|
class StepOutputItem(BaseModel):
|
|
model_config = ConfigDict(populate_by_name=True)
|
|
output_type_id: Optional[str] = Field(None, alias="outputTypeId")
|
|
output_name: Optional[str] = Field(None, alias="outputName")
|
|
output_barcode: Optional[str] = Field(None, alias="outputBarcode")
|
|
remark: Optional[str] = None
|
|
|
|
|
|
class StepDataCollectionItem(BaseModel):
|
|
model_config = ConfigDict(populate_by_name=True)
|
|
collection_name: Optional[str] = Field(None, alias="collectionName")
|
|
unit: Optional[str] = None
|
|
order_num: Optional[int] = Field(0, alias="orderNum")
|
|
remark: Optional[str] = None
|
|
|
|
|
|
# Sub-table update bodies (step_id + items[])
|
|
class StepReagentUpdateBody(BaseModel):
|
|
model_config = ConfigDict(populate_by_name=True)
|
|
step_id: str = Field(..., alias="stepId")
|
|
items: List[StepReagentItem] = Field(...)
|
|
|
|
|
|
class StepConsumableUpdateBody(BaseModel):
|
|
model_config = ConfigDict(populate_by_name=True)
|
|
step_id: str = Field(..., alias="stepId")
|
|
items: List[StepConsumableItem] = Field(...)
|
|
|
|
|
|
class StepOutputUpdateBody(BaseModel):
|
|
model_config = ConfigDict(populate_by_name=True)
|
|
step_id: str = Field(..., alias="stepId")
|
|
items: List[StepOutputItem] = Field(...)
|
|
|
|
|
|
class StepDataCollectionUpdateBody(BaseModel):
|
|
model_config = ConfigDict(populate_by_name=True)
|
|
step_id: str = Field(..., alias="stepId")
|
|
items: List[StepDataCollectionItem] = Field(...)
|