fix: 售后回流口径统一 — 状态双字段同步、工序名归一、标签配色
产品存在 overall_status 与 status 两个状态字段,此前各写入点各写一份映射、 甚至只改 overall_status 不改 status,导致回流设备(product.status 停留在 OUTBOUND)污染看板统计口径。 - lifecycle.py: 把映射表收敛为单一来源 overall_to_product_status / sync_product_status;新增 normalize_after_sales_step,将售后设备沿用生产 阶段写法的历史工序名(测试/维修)折算到售后区独立工序名 - product_service.py: 删除本地 _OVERALL_TO_STATUS 副本,改用共享函数 - dashboard_service.py: WIP 矩阵补出 lifecycle_phase 列,活跃任务判定 (is_active) 提前到所有终结态判定之前,避免残留 OUTBOUND 被误判为完结 - scripts/fix_product_status.py: 历史数据修复脚本(一次性) - constants/task.ts: 售后工序标签由红色改紫色 —— 红色在本系统是「驳回/危险」 语义色,售后只是另一条流转支线,用红色会让操作员误以为设备报错
This commit is contained in:
@ -12,6 +12,7 @@ from app.core.lifecycle import (
|
||||
is_step_allowed,
|
||||
phase_label,
|
||||
resolve_phase_for_step,
|
||||
sync_product_status,
|
||||
)
|
||||
from app.models.product import Product
|
||||
from app.models.production_order import ProductionOrder
|
||||
@ -506,14 +507,9 @@ async def update_overall_status(
|
||||
)
|
||||
product.lifecycle_phase = phase
|
||||
product.overall_status = status_value
|
||||
# 同步 status 字段,保证与整体状态口径一致(修复"只改整体状态不改 status"的旧缺陷)
|
||||
_OVERALL_TO_STATUS = {
|
||||
"已入库": "ARCHIVED",
|
||||
"在库": "ARCHIVED",
|
||||
"已出库": "OUTBOUND",
|
||||
"待仓库收货": "COMPLETED",
|
||||
}
|
||||
product.status = _OVERALL_TO_STATUS.get(status_value, "WIP")
|
||||
# 同步 status 字段(映射表已上提到 app.core.lifecycle 单一来源,
|
||||
# 供 task_service 的各写入点共用,避免各处各写一份)
|
||||
sync_product_status(product)
|
||||
await db.commit()
|
||||
await db.refresh(product)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user