feat: 产品接口暴露lifecycle_phase并做阶段感知状态校验
This commit is contained in:
@ -96,6 +96,8 @@ class WipMatrixDetailRow(BaseModel):
|
||||
material_name: str = "" # 产品名称
|
||||
spec_model: str = ""
|
||||
task_status: str = "" # 当前状态 WIP/PENDING/COMPLETED/ARCHIVED/OUTBOUND
|
||||
# 🔧 生命周期阶段:PRODUCTION(生产制造/发货测试) | AFTER_SALES(出库后返厂售后维修)
|
||||
lifecycle_phase: str = "PRODUCTION"
|
||||
assignee_id: str = ""
|
||||
assignee: str = "" # 负责人中文名
|
||||
duration_hours: float = 0.0 # 已在该工序滞留时长(小时)
|
||||
@ -831,6 +833,7 @@ async def get_wip_matrix_detail(
|
||||
Product.current_location_id,
|
||||
Product.overall_status,
|
||||
Product.status,
|
||||
Product.lifecycle_phase,
|
||||
Task.task_name,
|
||||
Task.assignee_id,
|
||||
Task.status.label("task_status"),
|
||||
@ -855,7 +858,7 @@ async def get_wip_matrix_detail(
|
||||
matched: list[WipMatrixDetailRow] = []
|
||||
raw_names: set[str] = set()
|
||||
|
||||
for pid, serial, ext, mat_name, spec, loc, overall, pstatus, task_name, assignee, tstatus, created, completed, received in rows:
|
||||
for pid, serial, ext, mat_name, spec, loc, overall, pstatus, lifecycle, task_name, assignee, tstatus, created, completed, received in rows:
|
||||
if pid in seen:
|
||||
continue
|
||||
seen.add(pid)
|
||||
@ -915,6 +918,7 @@ async def get_wip_matrix_detail(
|
||||
material_name=mat_name or "",
|
||||
spec_model=spec or "",
|
||||
task_status=tstatus or "",
|
||||
lifecycle_phase=lifecycle or "PRODUCTION",
|
||||
assignee_id=assignee or "",
|
||||
duration_hours=duration,
|
||||
received_at=received_str,
|
||||
|
||||
Reference in New Issue
Block a user