Files
SCGL/backend/app/schemas/approval.py

63 lines
1.6 KiB
Python
Raw Normal View History

"""缺料审批 Schema
核心原则
- 所有写操作仅在 pms_db 中进行
- 绝对禁止对 inventory_db 进行任何写操作
- 物料信息仅从 inventory_db 查询获取不进行写操作
"""
from pydantic import BaseModel, Field
from datetime import datetime
from app.models.production import ApprovalStatus
class ApprovalCreate(BaseModel):
"""创建缺料审批申请"""
work_order_id: int = Field(..., description="工单ID")
missing_material_id: int = Field(..., description="缺失物料ID")
required_qty: int = Field(gt=0, description="需要补充的数量")
reason: str | None = Field(None, max_length=500, description="申请原因")
class ApprovalStatusUpdate(BaseModel):
"""审批状态更新"""
status: ApprovalStatus = Field(
...,
description="新状态APPROVED 或 REJECTED"
)
class ApprovalResponse(BaseModel):
"""基础缺料审批响应"""
id: int
work_order_id: int
missing_material_id: int
required_qty: int
reason: str | None
status: ApprovalStatus
created_at: datetime
class Config:
from_attributes = True
class ApprovalDetailResponse(BaseModel):
"""带详情的缺料审批响应
包含
- 工单编号
- 物料名称
- 其他基本信息
"""
id: int
work_order_id: int
work_order_no: str = Field(..., description="工单编号")
missing_material_id: int
material_name: str = Field(..., description="物料名称")
required_qty: int
reason: str | None
status: ApprovalStatus
created_at: datetime
class Config:
from_attributes = True