docs: 归档任务 #261

This commit is contained in:
chengma
2026-08-18 09:36:46 +08:00
parent ff925286b9
commit a92b8746b2
@@ -0,0 +1,59 @@
# 261 兼容多微信系统选择器并安全返回 PDD 核单
- 类型:缺陷
- 父级大工单:#96
- 所属 MVP / 版本:#97 真实采购首单闭环(不支付)
- 状态:已完成
- 日期:2026-08-18
- Gitea 工单:<http://ilaer.eicp.net:8418/chengma/cmautobuy/issues/261>
## 背景与目标
真实采购提交订单并进入不可逆阶段后,Android 设备安装多个微信时会显示系统应用选择器。原核单流程只尝试启动 PDD,选择器仍覆盖在前台,最终核单超时并转人工。
本次目标是在只读核单阶段严格识别已确认的 Android 微信应用选择器,只按一次返回键回到 PDD,随后继续原有待付款订单核对。不得选择微信、点击支付、重新下单或增加重新核单功能。
## 最终方案
- 使用 `android` 前台包、白名单标题和微信候选三个控件树证据识别应用选择器。
- 使用 `ChooserActivity` 或 `ResolverActivity` 校验已知系统选择器 Activity;未知 Activity 不执行返回操作并安全停止。
- 选择器返回使用独立的一次性门禁,不与原有 PDD 支付页返回门禁共用。
- 按一次返回后允许 PDD 短暂加载;若选择器仍存在,返回明确错误并停止,不重复返回或启动 PDD。
- 保留原外部应用恢复、支付页最多返回一次以及登录、验证和风控停止规则。
最终实现与建单方案一致,没有修改 Admin、数据库、接口、存量任务状态或不可逆标记。
## 改了哪些
- `client/src/pdd_u2_purchase_reconcile_adapter.py`:增加 Android 微信应用选择器识别、Activity 白名单、一次安全返回和失败诊断。
- `client/test/test_pdd_u2_purchase_reconcile_adapter.py`:增加选择器正常关闭、返回后仍存在、未知 Activity 和未知系统页面等脱敏合成控件树测试。
## 验收结果
| 验收标准 | 结果 |
|---|---|
| 严格识别 Android 微信应用选择器后只按一次返回 | 通过 |
| 返回后允许短暂加载并继续识别 PDD 待付款详情 | 通过 |
| 不点击微信、选择器按钮或“去支付” | 通过 |
| 一次返回后选择器仍存在时停止并返回明确错误 | 通过 |
| 未知 Activity 和未知系统页面不执行自动返回 | 通过 |
| 原外部跳转、PDD 支付页一次返回及安全停止规则保持通过 | 通过 |
| 不增加重新核单,不改变存量状态,不重新下单或付款 | 通过 |
## 测试
- 执行的命令:
- `C:/Python310/python.exe -m py_compile src/pdd_u2_purchase_reconcile_adapter.py test/test_pdd_u2_purchase_reconcile_adapter.py`
- `C:/Python310/python.exe -m pytest -q test/test_pdd_u2_purchase_reconcile_adapter.py test/test_purchase_recovery.py test/test_purchase_task_service.py`
- `C:/Python310/python.exe -m pytest -q test`
- 设置 `QT_QPA_PLATFORM=offscreen` 后创建 `MainWindow`。
- 结果:语法检查通过;定向及采购恢复测试 43 项全部通过;离屏界面冒烟输出 `OK`。完整 Client 测试有 2 项与本工单无关的既有失败:工作区版本为 `0.1.2`,更新模块测试仍固定期待 `0.1.0`。
- **没验证到的部分**:未执行真机验证。为避免对已经进入不可逆阶段的订单产生额外操作,本次没有重新提交订单、触发支付或改动存量人工审核任务。
## 遗留问题
- Client 版本号与两项更新模块测试的固定预期不一致,不属于 #261 范围,需要由对应版本发布任务处理。
## 相关提交
- `ff92528` 修复多微信选择器核单返回。