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

46 lines
2.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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`(背景、风险、修正案与规则)
---
## Shipment 模块补充
- 补齐出货单查询接口:
- `GET /api/v1/shipment/shipments/`出货单列表merchant 隔离 + LimitOffsetPagination
- `GET /api/v1/shipment/shipments/<id>/`出货单详情merchant 隔离)
- 出货单列表序列化器增强:`sales_items``external_finished_products` 字段稳定输出(无数据也返回空数组)
- 更新 `docs/shipment_api.md`:补充“查询出货单(列表/详情)”说明
- 新增 API 测试:覆盖列表/详情的商户隔离与未登录行为