feat(schemas): add production module Pydantic schemas
Create 3 schema files for the production module: - production_work_order.py: work order base, list query, complete - production_task.py: task CRUD, steps, materials, outputs, inputs - cell_product.py: cell product create, update, list query
This commit is contained in:
1 parent
61f217eea5
commit
026b040db5
3 files changed
+155
No files matched your search
@@ -0,0 +1,42 @@
|
||||
from pydantic import BaseModel
|
||||
from typing import Optional
|
||||
from datetime import datetime
|
||||
|
||||
|
||||
class CellProductCreate(BaseModel):
|
||||
product_code: str
|
||||
product_name: str
|
||||
product_type_id: Optional[str] = None
|
||||
spec_id: Optional[str] = None
|
||||
batch_no: Optional[str] = None
|
||||
storage_slot_id: Optional[str] = None
|
||||
product_status: Optional[str] = 'zk'
|
||||
source_type: Optional[str] = 'manual'
|
||||
quantity: Optional[float] = None
|
||||
unit: Optional[str] = None
|
||||
expiry_date: Optional[datetime] = None
|
||||
product_images: Optional[str] = None
|
||||
remark: Optional[str] = None
|
||||
|
||||
|
||||
class CellProductUpdate(BaseModel):
|
||||
product_name: Optional[str] = None
|
||||
product_type_id: Optional[str] = None
|
||||
spec_id: Optional[str] = None
|
||||
batch_no: Optional[str] = None
|
||||
storage_slot_id: Optional[str] = None
|
||||
product_status: Optional[str] = None
|
||||
quantity: Optional[float] = None
|
||||
unit: Optional[str] = None
|
||||
expiry_date: Optional[datetime] = None
|
||||
product_images: Optional[str] = None
|
||||
remark: Optional[str] = None
|
||||
|
||||
|
||||
class CellProductListQuery(BaseModel):
|
||||
page: int = 1
|
||||
page_size: int = 20
|
||||
product_code: Optional[str] = None
|
||||
product_name: Optional[str] = None
|
||||
product_type_id: Optional[str] = None
|
||||
product_status: Optional[str] = None
|
||||
@@ -0,0 +1,93 @@
|
||||
from pydantic import BaseModel
|
||||
from typing import Optional, List
|
||||
from datetime import datetime
|
||||
|
||||
|
||||
class ProductionTaskCreate(BaseModel):
|
||||
work_order_id: str
|
||||
task_name: Optional[str] = None
|
||||
route_id: str
|
||||
description: Optional[str] = None
|
||||
remark: Optional[str] = None
|
||||
|
||||
|
||||
class ProductionTaskListQuery(BaseModel):
|
||||
page: int = 1
|
||||
page_size: int = 20
|
||||
work_order_id: Optional[str] = None
|
||||
task_no: Optional[str] = None
|
||||
task_status: Optional[str] = None
|
||||
|
||||
|
||||
class ProductionTaskUpdate(BaseModel):
|
||||
task_name: Optional[str] = None
|
||||
description: Optional[str] = None
|
||||
remark: Optional[str] = None
|
||||
attachments: Optional[str] = None
|
||||
|
||||
|
||||
class ProductionTaskStatusUpdate(BaseModel):
|
||||
task_status: str
|
||||
|
||||
|
||||
class TaskStepAdd(BaseModel):
|
||||
process_code: Optional[str] = None
|
||||
category_id: Optional[str] = None
|
||||
process_name: Optional[str] = None
|
||||
description: Optional[str] = None
|
||||
equipment_name: Optional[str] = None
|
||||
estimated_duration: Optional[str] = None
|
||||
sop_ids: Optional[str] = None
|
||||
|
||||
|
||||
class TaskStepUpdate(BaseModel):
|
||||
process_name: Optional[str] = None
|
||||
description: Optional[str] = None
|
||||
equipment_name: Optional[str] = None
|
||||
estimated_duration: Optional[str] = None
|
||||
actual_duration: Optional[str] = None
|
||||
sop_ids: Optional[str] = None
|
||||
step_status: Optional[str] = None
|
||||
|
||||
|
||||
class TaskStepMaterialItem(BaseModel):
|
||||
material_code: Optional[str] = None
|
||||
material_name: Optional[str] = None
|
||||
spec: Optional[str] = None
|
||||
spec_model: Optional[str] = None
|
||||
standard_usage: Optional[str] = None
|
||||
actual_usage: Optional[str] = None
|
||||
unit: Optional[str] = None
|
||||
is_key_material: Optional[str] = '0'
|
||||
is_required: Optional[str] = '1'
|
||||
remark: Optional[str] = None
|
||||
|
||||
|
||||
class TaskStepOutputItem(BaseModel):
|
||||
output_type_id: Optional[str] = None
|
||||
output_name: Optional[str] = None
|
||||
output_barcode: Optional[str] = None
|
||||
|
||||
|
||||
class TaskStepDataCollectionItem(BaseModel):
|
||||
collection_name: Optional[str] = None
|
||||
unit: Optional[str] = None
|
||||
collection_value: Optional[str] = None
|
||||
|
||||
|
||||
class TaskInputItem(BaseModel):
|
||||
input_type: str
|
||||
input_id: Optional[str] = None
|
||||
input_code: Optional[str] = None
|
||||
input_name: Optional[str] = None
|
||||
|
||||
|
||||
class TaskOutputItem(BaseModel):
|
||||
cell_product_id: Optional[str] = None
|
||||
storage_slot_id: Optional[str] = None
|
||||
output_name: Optional[str] = None
|
||||
output_barcode: Optional[str] = None
|
||||
quantity: Optional[float] = None
|
||||
unit: Optional[str] = None
|
||||
remark: Optional[str] = None
|
||||
attachments: Optional[str] = None
|
||||
@@ -0,0 +1,20 @@
|
||||
from pydantic import BaseModel
|
||||
from typing import Optional
|
||||
from datetime import datetime
|
||||
|
||||
|
||||
class ProductionWorkOrderBase(BaseModel):
|
||||
remark: Optional[str] = None
|
||||
|
||||
|
||||
class ProductionWorkOrderListQuery(BaseModel):
|
||||
page: int = 1
|
||||
page_size: int = 20
|
||||
work_order_no: Optional[str] = None
|
||||
work_order_status: Optional[str] = None
|
||||
protocol_no: Optional[str] = None
|
||||
sample_code: Optional[str] = None
|
||||
|
||||
|
||||
class ProductionWorkOrderComplete(BaseModel):
|
||||
remark: Optional[str] = None
|
||||
Reference in new issue
Block a user