# 272 采购尺码候选扫描面板状态恢复 - 类型:缺陷 - 父级大工单:#96(Client Epic #1) - 所属 MVP / 版本:#253 采购运行时 AI 规格纠偏闭环 - 状态:待验收 - 日期:2026-08-18 - Gitea 工单:http://ilaer.eicp.net:8418/chengma/cmautobuy/issues/272 ## 背景与目标 采购直接选择目标尺码失败后,需要只读遍历页面候选。原流程会重新读取第一棵控件树,滚动动画期间遇到不完整 XML 时容易误报规格面板丢失。本任务复用已读取的最新规格首帧,并使失败原因反映真实页面状态。 ## 最终方案 采购适配层在颜色区域归位后,将最新 XML 交给第二规格候选扫描。采集服务把该 XML 作为首次读取的优先输入,后续滑动前仍重新读取最新控件树。扫描期间识别验证码、登录、风控和支付页并立即安全停止;若确认页仍在但规格结构持续不可解析,返回结构不完整错误;页面离开确认页时返回面板丢失错误,并附带不含个人数据的读取诊断。 ## 改了哪些 - `client/src/pdd_u2_purchase_adapter.py`:候选扫描复用最新规格首帧;保留自定义测试扫描器的单参数接口。 - `client/src/pdd_collect_service.py`:第二规格扫描支持首帧;细分短暂结构异常、特殊页面和确认页离开后的错误。 - `client/test/test_pdd_collect_service.py`:增加首帧优先解析回归测试。 ## 验收结果 | 验收标准 | 结果 | |---|---| | 候选扫描复用最新有效首帧 | 通过 | | 首帧可用时不依赖第一次重新读取设备 XML | 通过(新增测试) | | 特殊页面和确认页结构异常可区分 | 通过(代码与既有特殊页测试) | | 既有规格匹配和采购门禁未改动 | 通过(相关测试) | ## 测试 - 执行的命令:`C:/Python310/python.exe -m py_compile src/pdd_u2_purchase_adapter.py src/pdd_collect_service.py` - 执行的命令:`C:/Python310/python.exe -m pytest test/test_pdd_u2_purchase_adapter.py test/test_pdd_collect_service.py -q` - 结果:144 passed。 - **没验证到的部分**:未在真实 Android 设备验证滚动动画、验证码、登录、风控或支付页面切换。 ## 相关提交 - `536f4bc` `fix: 修复采购尺码候选扫描面板误判 (#272)`