1
0
forked from erp-dev/erp
Files
erpnew/docs/2026-01-15_summary.md

1.5 KiB
Raw Blame History

2026-01-15 工作日志

背景

发现 PlateOrder(以及同类的 PrintingOrder/PrintingJob)在 PUT/PATCH 更新时允许修改流程相关字段,可能导致:

  • 业务对象的 process 已变更
  • 但已绑定的 BusinessObject.process 仍指向旧流程

从而出现“流程推进/状态展示与当前流程不一致”的严重数据一致性漏洞。


今日完成

  • 修复流程变更导致的 BusinessObject 不匹配漏洞(统一收敛到 stateflow 层处理)
  • 约束更新行为:
    • PrintingJob 不再允许修改 printing_order 绑定关系(返回 400
    • PrintingOrder 修改 process 时:
      • process=None 视为非法(返回 400
      • 只要任意 job 存在“未撤销进度”(has_started=True),整笔订单不允许改流程(返回 400
      • 若所有 jobs 均未开始,则修改订单流程时会同步为其下所有 jobs 重建并重新绑定新的 BusinessObject
    • PlateOrder 修改 process 时:
      • 若存在“未撤销进度”(has_started=True),不允许改流程(返回 400
      • 否则重建并重新绑定新的 BusinessObject(旧 BO 保留不删除)
  • 测试补齐/修正:
    • PlateOrder修改流程会重建 BO存在有效进度时拒绝
    • PrintingOrder有 job 且未开始时改流程会 relink jobs
    • PrintingJob禁止变更 printing_order

文档

  • 新增独立说明文档:docs/business_object_relink_fix.md(背景、风险、修正案与规则)