Files
cmautobuy/docs/task/119-下单后自动进入只读核单闭环.md
T
2026-08-10 19:19:02 +08:00

68 lines
3.1 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.
# #119 下单后等待5秒自动进入只读核单闭环
- 工单号:#119
- 类型:缺陷修复
- 父级:#1 Client 拼多多任务采集与采购客户端
- 版本:Client 真实采购安全闭环
- 状态:待用户验收
- 日期:2026-08-10
- Gitea:<http://ilaer.eicp.net:8418/chengma/cmautobuy/issues/119>
- 实现提交:`b789b50`
## 背景与目标
真实采购点击一次下单按钮后,任务虽然已经保存为只准核单,但服务返回
`manual_review`,导致 Client 停止自动获取。下一轮只读核单不会自动开始,手机
可能一直停留在微信登录或支付页面。
目标是在不放松防重复下单门禁的前提下,让“下单后等待5秒 → 自动进入下一轮
只读核单”形成闭环。
## 最终方案
下单点击或点击结果不确定,并成功保存 `reconcile_purchase` 后,服务返回专用的
`reconcile_pending` 结果。UI 收到结果后保持自动获取运行,等待 5000 ms 再启动
下一轮。Dispatcher 现有优先级保证下一轮先处理待核单采购任务,不领取新任务。
等待期间用户可以停止自动获取,定时器会被取消;数据库中的不可逆标记和
`reconcile_purchase` 状态继续生效,下次恢复仍然只能核单。5秒仅用于页面跳转
缓冲,不能用来认定订单创建成功。
实现与工单方案一致;没有修改数据库、Admin 接口、核单匹配规则或结果格式。
## 改了哪些文件
- `client/src/purchase_task_service.py`:下单后返回 `reconcile_pending`。
- `client/src/pdd_ui_event.py`:5秒后调度下一轮只读核单。
- `client/test/test_purchase_task_service.py`:验证成功和异常点击均进入待核单。
- `client/test/test_task_dispatcher.py`:验证结果类型向协调层传递。
- `client/test/test_pdd_ui_event.py`:验证5秒调度及停止取消。
- `docs/client/06-quality-security.md`:记录稳定的下单后自动核单规则。
## 验收结果
- [x] 下单点击前仍先持久化不可逆标记。
- [x] 下单按钮最多点击一次,异常也不重新下单。
- [x] 保存 `reconcile_purchase` 后返回 `reconcile_pending`。
- [x] Client 等待5秒后自动启动下一轮。
- [x] Dispatcher 下一轮优先处理只读核单。
- [x] 等待期间用户停止会取消下一轮,任务仍保留为待核单。
- [x] 核单成功继续沿用 SQLite、Outbox 和 Admin 上报流程。
- [ ] 等待用户使用真机采购任务验证微信登录/支付页面后的自动核单。
## 测试
从 `client` 目录执行:
```powershell
C:/Python310/python.exe -m unittest discover -s test -p "test_purchase_task_service.py"
C:/Python310/python.exe -m unittest discover -s test -p "test_task_dispatcher.py"
C:/Python310/python.exe -m unittest discover -s test -p "test_pdd_ui_event.py"
C:/Python310/python.exe -m unittest discover -s test -p "test_*.py"
```
结果:服务层11项、Dispatcher 12项、PDD UI事件46项、Client全量343项通过。
未验证到的部分:没有操作真实手机,没有执行真实下单、微信登录或支付;需要用户
真机确认5秒后能够从外部页面进入现有只读订单核对流程。