docs: 归档任务 #187

This commit is contained in:
chengma
2026-08-12 16:26:17 +08:00
parent 9c014efc41
commit 836aad5c26
@@ -0,0 +1,55 @@
# 187 多地址面板只修改已设默认地址
- 类型:缺陷
- 父级大工单:#1
- 所属 MVP / 版本:#2
- 状态:已完成,待用户验收
- 日期:2026-08-12
- Gitea 工单:<http://ilaer.eicp.net:8418/chengma/cmautobuy/issues/187>
## 背景与目标
采购进入包含多条收货地址的面板后,整页存在多个“修改”按钮,旧代码要求全页只有一个候选,因此安全停止。页面还同时暴露 PDD 标题栏返回和 Android 系统导航返回。本任务只修改带唯一“已设默认”标记的地址,并排除系统导航栏。
## 最终方案
- 把地址列表 RecyclerView 的直接子节点作为独立地址卡片。
- 多张地址卡片存在时,定位唯一包含精确“已设默认”文字的卡片,只提取该卡片内部的唯一“修改”。
- 默认卡片可以位于任意行;不按列表顺序选择第一条。
- 没有默认卡片、默认卡片不唯一或默认卡片内“修改”不唯一时安全停止。
- 单地址旧页面继续使用全页唯一“修改”,保持兼容。
- 保存后的地址面板使用相同的默认卡片规则识别。
- 返回目标必须属于 PDD 包并位于页面左上标题栏,排除 Android 系统导航栏。
- 继续沿用 #179 的稳定读取和有界重试,以及 #180 的保存单击和系统浮层限制。
## 改了哪些
- `client/src/pdd_u2_purchase_adapter.py`:增加 PDD 包内文字目标、地址卡片、默认卡片修改和标题栏返回解析。
- `client/test/test_pdd_u2_purchase_adapter.py`:增加多地址最小控件树及默认地址在不同位置、默认缺失/重复、卡片内修改歧义、系统返回共存测试。
## 验收结果
| 验收标准 | 结果 |
|---|---|
| 多地址面板只定位唯一“已设默认”卡片内的修改 | 通过 |
| 默认卡片不在第一行时仍能正确定位 | 通过 |
| 不点击其他地址及其他操作 | 通过 |
| 默认缺失、不唯一或卡片内修改不唯一时停止 | 通过 |
| 单地址旧页面保持兼容 | 通过 |
| 保存后能识别多地址面板 | 通过 |
| 返回只选择 PDD 标题栏并排除系统导航栏 | 通过 |
| 保存、下单和不可逆门禁未修改 | 通过 |
| Client 全量测试通过 | 通过 |
## 测试
- 执行的命令:在 `client` 目录执行 `C:/Python310/python.exe -m unittest discover -s test -p 'test_pdd_u2_purchase_adapter.py'`
- 结果:42 个采购 Adapter 测试全部通过。
- 执行的命令:在 `client` 目录执行 `$env:QT_QPA_PLATFORM='offscreen'; C:/Python310/python.exe -m unittest discover -s test -p 'test_*.py'`
- 结果:460 个 Client 测试全部通过;仅有测试环境 Qt 字体目录警告。
- 固件验证:只读解析本机 `addresses_panel.xml`,得到默认卡片唯一修改目标和 PDD 标题栏唯一返回目标;原始 XML 未提交。
- **没验证到的部分**:未点击真机;未执行真实地址修改、保存、提交订单或其他不可逆操作。
## 相关提交
- `9c014ef` fix: 多地址面板选择默认地址 (#187)