69 lines
3.4 KiB
Markdown
69 lines
3.4 KiB
Markdown
# 124 等待微信中间页返回并准确报告只读核单失败
|
|
|
|
- 类型:缺陷
|
|
- 父级大工单:#1
|
|
- 所属 MVP / 版本:MVP 后续真实采购核单
|
|
- 状态:已完成,待用户验收
|
|
- 日期:2026-08-10
|
|
- Gitea 工单:<http://ilaer.eicp.net:8418/chengma/cmautobuy/issues/124>
|
|
|
|
## 背景与目标
|
|
|
|
真实下单后可能先进入微信登录/支付中间页,约 20 秒后才返回 PDD 待付款页。
|
|
旧代码开始只读核单后只等待约 0.4 秒,页面仍处于过渡状态便报找不到订单
|
|
入口;读取失败又被错误显示成“未找到符合时间范围的订单”。
|
|
|
|
本任务让 Client 在安全截止时间内等待 PDD 待付款页稳定,并把读取失败与
|
|
成功扫描但没有候选订单分开报告。
|
|
|
|
## 最终方案
|
|
|
|
- 控件树能明确识别微信等外部业务包时,直接启动 PDD,不再调用可能阻塞的
|
|
`app_current()`;控件树不明确时才使用该查询兜底。
|
|
- 启动 PDD、只读返回或白名单订单导航后,最多等待 30 秒并持续读取控件树。
|
|
- 过渡页面暂时没有唯一入口时继续等待;返回键和每个白名单导航入口最多操作一次。
|
|
- 页面稳定后继续使用 #122 的单订单多视口读取和严格字段匹配。
|
|
- 验证码、PDD 登录页、风控、用户停止和超时仍安全停止,不点击支付、取消订单,
|
|
也不重新下单。
|
|
- Adapter 读取异常保存为 `unknown`,界面显示具体读取原因;只有成功完成扫描且
|
|
没有候选时才显示“未找到符合条件的订单”。
|
|
- 已进入 `reconcile_manual_review` 的旧任务不自动重置,手动只读重新核单不在本工单范围。
|
|
|
|
## 改了哪些
|
|
|
|
- `client/src/pdd_u2_purchase_reconcile_adapter.py`:增加外部包识别、30 秒过渡
|
|
状态轮询、一次返回与导航保护、可测试时钟。
|
|
- `client/src/purchase_reconcile_service.py`:区分读取异常和空候选,并返回具体错误。
|
|
- `client/test/test_pdd_u2_purchase_reconcile_adapter.py`:覆盖微信返回、过渡页、
|
|
单次返回、超时、取消和安全阻断页面。
|
|
- `client/test/test_purchase_recovery.py`:验证读取失败归类和用户提示。
|
|
|
|
## 验收结果
|
|
|
|
| 验收标准 | 结果 |
|
|
|---|---|
|
|
| 微信中间页返回后最多等待 30 秒 | 通过 |
|
|
| 短暂空白或过渡控件树不立即失败 | 通过 |
|
|
| 页面稳定后继续现有只读订单扫描 | 通过 |
|
|
| 超时、取消、登录、验证和风控安全停止 | 通过 |
|
|
| 读取失败显示具体原因,不再误报时间范围 | 通过 |
|
|
| Client 自动化测试通过 | 通过,354 项 |
|
|
|
|
## 测试
|
|
|
|
- 执行的命令:
|
|
- `C:/Python310/python.exe -m py_compile src/pdd_u2_purchase_reconcile_adapter.py src/purchase_reconcile_service.py`
|
|
- `C:/Python310/python.exe -m unittest discover -s test -p test_pdd_u2_purchase_reconcile_adapter.py -v`
|
|
- `C:/Python310/python.exe -m unittest discover -s test -p test_purchase_recovery.py -v`
|
|
- `C:/Python310/python.exe -m unittest discover -s test -v`
|
|
- `git diff --check`
|
|
- 结果:语法检查通过;定向测试分别通过 11 项和 8 项;完整 Client 测试
|
|
354 项全部通过;差异检查通过。
|
|
- **没验证到的部分**:没有创建新的真实订单验证微信中间页自动返回。已有任务
|
|
`PUR-85b9af23ba5d50a1` 已进入人工核对状态,本任务没有重置它、重新核单、支付、
|
|
取消订单或再次下单。
|
|
|
|
## 相关提交
|
|
|
|
- `4999aa7` fix: 等待微信返回后再只读核单 (#124)
|