duxingchen
d666bbd4ed
feat: 直接完结通道与报表口径收口(后端)
【直接完结:保留动作,剥离状态】
- transfer_task 权限硬拦截:仅 SUPER_ADMIN / SUPERVISOR。判据取签名保护的
operator_role,刻意不用客户端可通过 ?operator_id= 伪造的 operator_id
- 直接完结【不再改写】overall_status —— 它只是任务闭环动作,不改变物理状态。
已出库设备完结后依然是「已出库」,回归 WIP 矩阵的已出库列
- 物理终态保护:create_task / receive_task / transfer_task 三处写入点统一加
_is_physical_terminal 守卫,禁止用任务名覆写 已入库/在库/已出库。
历史缺陷:「发货测试」会把设备的「已出库」标识静默抹掉,跨报表口径随之打架
【位置与工序口径】
- _recalc_product_location:已出库且闲置 → 位置清空(货发走就离场)。
只清「已出库」;已入库/在库的设备确实还在仓库里,位置必须保留
- MOM 出库回调同步清空 current_location_id
- 新增 ProductResponse.current_step:只认活跃主干任务,无活跃任务时返回
宏观终态或空。不再让已 COMPLETED 的历史工序(扫码出库/测试…)冒充"当前工序"
【售后烙印去死锁】
- 拆分 OUTBOUND_QC_STEPS(发货测试) / AFTER_SALES_REPAIR_STEPS(售后维修)
- resolve_phase_for_step 与 _mark_after_sales_if_reactivated 双双改为仅
「售后维修」触发 AFTER_SALES,解除「已出库 + 发货测试」被永久烙印的死锁
- PRODUCTION_OVERALL_STEPS 补入「发货测试」,使出厂质检在生产阶段合法
(否则 _enforce_step_isolation 会把已出库设备的发货测试直接 400)
【游魂收口】
- get_wip_matrix / get_wip_matrix_detail 的 is_terminal 增加"名下再无任何活跃
任务则视同终结态",让被直接完结的生产设备接受时间筛选,不再恒挂在看板上
冒充在制。两处必须一字不差同步,否则会出现"矩阵有数、下钻为空"
2026-09-17 17:05:42 +08:00
..
2026-08-04 17:03:29 +08:00
2026-08-07 11:49:59 +08:00
2026-08-11 15:56:25 +08:00
2026-08-04 17:09:47 +08:00
2026-09-17 17:05:42 +08:00
2026-08-04 17:09:47 +08:00
2026-09-17 17:05:42 +08:00
2026-08-07 11:44:04 +08:00