docs: 归档任务 #261
This commit is contained in:
@@ -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` 修复多微信选择器核单返回。
|
||||
Reference in New Issue
Block a user