limeng
d45dc19261
fix(发货数据): 清理包裹里残留的订单占位商品行(数量0),件数随之更正 (#815)
- 订单里被替换的原商品、组合装原套装等(数量 0、金额 0/空、item_status=Replaced),
聚水潭销售出库单不显示;占位过滤上线前入库的包裹,之后因"金额对不上保留旧包裹"一直保留着这些行,
导致商品编码多出、件数(1/N)偏大,按件数加收的面单费跟着多算。
- 每次窗口同步后,包裹已有实发商品时删除这些占位行,件数改为实发行数;
首行若是占位行,其上的重量/运费/结算等包裹级字段先挪到保留的首行。
- 同步修正单测 test_view_item_with_unmatched_synthetic_sku_retains_old_package_and_marks_items_pending 的预期:
main 上已上线"新旧条码完全不同视为商品已更正、覆盖旧记录",原用例仍按旧行为断言 2 个保留包裹,与现行逻辑不符。
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014nvGZkg27YMEdhRy6EiUwf
> 开工时标题使用 `WIP: <任务名称>` 并先填写“任务占用与边界”。Codex 完成独立合并前自审后补齐其余内容并移除 `WIP:`。
## 任务占用与边界
- 任务名称:
- 实际开发者:
- 任务来源/团队分工:
- 目标结果:
- 预计修改路径:
- 将写入的公共契约(路由、Controller 方法、Repository、表/视图、`source_key`、`scope`、权限名、菜单键或共享组件):
- 仅复用、明确不修改的公共契约:
- 数据源、表/视图和字段:
- 上游 `source_key` / `scope`:
- 权限名、菜单键或共享组件:
- 明确不修改的范围:
## 开工碰撞检查
- [ ] Codex 已执行 `scripts/codex-task-preflight.ps1`
- [ ] 已检查最新 `main` 和所有远程任务分支
- [ ] 已搜索主线既有页面、接口、Repository 和数据查询
- [ ] 已把“将写入”和“仅复用、不修改”的公共契约分开;仅复用项不作为单独阻断条件
- [ ] 未发现实际写入重叠;或已在下方写明相关分支、具体重叠项和协调结论
相关分支、重叠项与协调结论:
## 实际改动
- 完成内容:
- Codex 实际修改的文件:
- 新增或变更的公共契约:
- 与原计划的差异:
## 验证证据
- 正常流程:
- 空数据/错误输入/无权限场景:
- 受影响旧功能:
- 自动测试及结果:
- 实际页面、接口或只读业务查询结果:
## 风险检查
- [ ] 不涉及金额、权限、审批、数据库迁移、生产配置或数据修复
- [ ] 如涉及上述高风险内容,已在下方写明影响、回滚和所需授权
- [ ] 未提交 `.env`、密码、Token、私钥、真实财务数据、生产日志或构建产物
- [ ] 前端改动符合 `DESIGN.md`;无前端改动则写“不适用”
高风险影响、回滚和授权状态:
## 合并前复查
- [ ] 已重新拉取远程引用并用实际修改范围再次运行碰撞检查
- [ ] PR 不再是 `WIP:`,所有测试结果已经补齐
- [ ] Codex 已重新读取原始需求和验收标准,并逐文件审核 `origin/main...任务分支` 的完整 diff
- [ ] Codex 自审确认无越界修改、重复实现、敏感内容、未处理冲突和未验证结果
- [ ] 合并顺序不会覆盖其他未合并任务
- [ ] 已授权当前任务的 Codex 执行 Squash merge、验证 `main` 并清理任务分支
- [ ] 如涉及生产迁移、数据修复、删除、覆盖配置或部署,已另行取得对应高风险授权
Reviewed-on: #815
2026-11-02 13:19:19 +08:00
..
2026-11-02 13:19:19 +08:00
2026-10-16 22:27:46 +08:00
2026-10-16 22:27:46 +08:00
2026-10-16 21:36:03 +08:00
2026-10-17 12:49:39 +08:00
2026-10-16 22:27:46 +08:00
2026-10-19 17:53:14 +08:00
2026-10-23 19:05:35 +08:00
2026-09-29 10:41:54 +08:00
2026-09-29 17:27:25 +08:00
2026-10-19 17:53:14 +08:00
2026-10-19 17:53:14 +08:00
2026-09-29 17:27:25 +08:00
2026-10-19 14:24:42 +08:00
2026-09-11 12:25:36 +08:00
2026-09-07 11:55:37 +08:00
2026-08-31 18:49:00 +08:00
2026-10-26 09:50:12 +08:00
2026-10-22 10:55:40 +08:00
2026-10-26 09:50:12 +08:00
2026-09-07 11:55:37 +08:00
2026-09-07 22:58:12 +08:00
2026-10-30 20:03:04 +08:00
2026-09-29 11:06:41 +08:00
2026-09-22 19:07:11 +08:00
2026-09-09 10:46:17 +08:00
2026-08-31 16:15:08 +08:00
2026-10-26 20:46:13 +08:00
2026-11-02 11:29:25 +08:00
2026-10-30 15:04:43 +08:00
2026-10-13 13:58:31 +08:00
2026-10-29 22:41:53 +08:00
2026-09-22 10:42:38 +08:00
2026-10-25 17:06:19 +08:00
2026-10-26 14:29:08 +08:00
2026-10-30 20:03:04 +08:00
2026-10-21 11:59:04 +08:00
2026-10-21 17:37:25 +08:00
2026-10-30 20:03:04 +08:00
2026-10-30 20:03:04 +08:00
2026-10-30 23:33:56 +08:00
2026-10-21 11:00:56 +08:00
2026-10-21 10:37:59 +08:00
2026-10-27 18:13:00 +08:00
2026-10-26 22:34:20 +08:00
2026-10-21 11:00:56 +08:00
2026-10-22 10:54:21 +08:00
2026-10-24 20:37:29 +08:00
2026-10-08 13:19:53 +08:00
2026-10-22 10:55:40 +08:00
2026-10-06 22:08:08 +08:00
2026-09-26 22:45:37 +08:00
2026-09-22 16:48:33 +08:00
2026-09-24 11:44:44 +08:00
2026-07-22 12:24:58 +08:00
2026-07-24 13:40:03 +08:00
2026-08-14 13:33:53 +08:00
2026-09-15 09:49:31 +08:00
2026-10-20 19:08:47 +08:00
2026-09-15 11:39:09 +08:00
2026-10-25 17:06:19 +08:00
2026-10-19 15:35:30 +08:00
2026-08-14 13:33:53 +08:00
2026-09-29 11:06:41 +08:00
2026-10-16 23:15:33 +08:00
2026-10-16 23:54:03 +08:00
2026-10-16 22:34:01 +08:00
2026-10-17 00:05:05 +08:00
2026-10-07 14:36:34 +08:00
2026-10-20 10:10:29 +08:00
2026-08-25 15:34:39 +08:00
2026-08-14 15:21:49 +08:00
2026-09-22 14:49:09 +08:00
2026-09-22 18:50:23 +08:00
2026-10-23 21:42:36 +08:00
2026-10-27 18:21:55 +08:00
2026-10-06 18:42:12 +08:00
2026-10-23 21:42:36 +08:00
2026-10-23 21:42:36 +08:00
2026-10-19 17:53:14 +08:00
2026-10-25 20:36:57 +08:00
2026-10-17 21:49:09 +08:00
2026-10-19 10:38:36 +08:00
2026-10-19 10:38:36 +08:00
2026-10-19 11:19:27 +08:00
2026-10-20 17:45:55 +08:00
2026-10-20 17:45:55 +08:00
2026-10-26 09:53:30 +08:00
2026-10-21 11:20:58 +08:00
2026-11-02 10:19:21 +08:00
2026-09-29 11:06:41 +08:00
2026-09-29 11:06:41 +08:00
2026-10-17 08:49:17 +08:00
2026-09-22 14:49:09 +08:00
2026-10-20 09:21:55 +08:00
2026-10-17 09:40:54 +08:00
2026-10-17 12:01:30 +08:00
2026-10-20 17:45:55 +08:00
2026-10-17 08:49:17 +08:00
2026-10-17 09:16:51 +08:00
2026-09-27 17:25:04 +08:00
2026-09-24 10:29:59 +08:00
2026-10-06 23:18:53 +08:00
2026-09-12 20:29:43 +08:00
2026-09-14 13:30:57 +08:00
2026-09-20 22:19:11 +08:00
2026-10-21 10:37:59 +08:00
2026-08-31 18:49:00 +08:00
2026-10-21 10:37:59 +08:00
2026-08-13 15:41:56 +08:00
2026-07-24 13:40:03 +08:00
2026-10-21 10:37:59 +08:00
2026-10-21 10:37:59 +08:00
2026-08-31 18:49:00 +08:00
2026-07-24 13:40:03 +08:00
2026-08-31 18:49:00 +08:00
2026-08-31 18:49:00 +08:00
2026-08-31 18:49:00 +08:00
2026-10-19 17:53:14 +08:00