diff --git a/backend/app/schemas/cell_product.py b/backend/app/schemas/cell_product.py new file mode 100644 index 000000000..90fc7112e --- /dev/null +++ b/backend/app/schemas/cell_product.py @@ -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 diff --git a/backend/app/schemas/production_task.py b/backend/app/schemas/production_task.py new file mode 100644 index 000000000..5e6b96c10 --- /dev/null +++ b/backend/app/schemas/production_task.py @@ -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 diff --git a/backend/app/schemas/production_work_order.py b/backend/app/schemas/production_work_order.py new file mode 100644 index 000000000..2092ee193 --- /dev/null +++ b/backend/app/schemas/production_work_order.py @@ -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