"""缺料审批 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