# 36 商品页就绪后立即进入规格面板 - 类型:缺陷 - 父级大工单:#1 - 所属 MVP / 版本:#2 / MVP - 状态:已完成,用户验收通过 - 日期:2026-08-07 - Gitea 工单:http://ilaer.eicp.net:8418/chengma/cmautobuy/issues/36 ## 背景与目标 正式采集代码进入商品页后,会先最多检查 13 屏以寻找评价数量。真实任务 `COL-6b50a08c86a9e7b9` 的无障碍树没有评价节点,因此代码连续滑动后报 `PDD_DATA_REVIEWS_MISSING`,从未执行已经存在的规格入口点击。 实验脚本 `client/src/demo1/auto_v1.py` 的有效顺序是:首页加载后立即 dump XML、定位规格入口并点击。本任务把这个顺序正式化,同时保留正式代码需要的结构化错误、超时、诊断文件和面板确认。 ## 最终方案 - 商品页就绪后只解析当前首页视口,不在打开规格面板前滚动详情页。 - 标题和已拼数量继续必填;评价与店铺允许留空,并保存首页 XML 证据。 - 使用同一份首页 XML 计算规格入口并立即点击。 - 点击后不再使用固定延时假定成功,而是在 10 秒内循环解析规格面板。 - 只有识别到可滚动规格区域和至少一个规格维度后,才开始颜色、尺码扫描。 - 面板未出现时返回 `PDD_PAGE_SPEC_PANEL_TIMEOUT`,向 Admin 映射为 `SKU_PANEL_NOT_FOUND`,并附最后 XML。 - 不导入实验脚本,不使用其中的硬编码设备、商品号、当前目录文件或下单按钮代码。 ## 改了哪些 - `client/src/pdd_collect_service.py`:移除商品详情预扫描,增加规格面板确认等待。 - `client/src/collect_task_service.py`:增加面板超时的稳定上报映射。 - `client/test/test_pdd_collect_service.py`:覆盖评价缺失不阻塞、无面板超时和滑动顺序。 - `client/test/test_pdd_real_xml_fixtures.py`:验证真实首页 XML 能立即找到底部规格入口。 - `docs/client/01-requirements.md`:明确评价、店铺是可选字段。 - `docs/client/02-architecture.md`:记录正式采集顺序。 ## 验收结果 | 验收标准 | 结果 | |---|---| | 首页不再为评价连续纵向滑动 | 通过 | | 评价与店铺为空不阻塞规格采集 | 通过 | | 当前首页 XML 立即定位并点击规格入口 | 通过 | | 点击后确认规格面板出现 | 通过 | | 面板未出现时稳定失败并保存 XML | 通过 | | 真实诊断 XML 能找到右下角入口 | 通过,坐标 `(763, 2247)` | | 真机进入规格面板 | 通过 | | 不加购、不下单、不付款 | 通过 | ## 测试 ```powershell # client 目录 C:/Python310/python.exe -m unittest discover -s test -p 'test_*.py' -q C:/Python310/python.exe -m py_compile src/pdd_collect_service.py src/collect_task_service.py ``` - Client 全量 153 项测试通过。 - 真机只读验证设备:`192.168.0.173:5555`。 - 真机正式服务成功点击规格入口并进入面板;当前树解析到价格 370 分和 8 个颜色。 - 真机验证没有点击确认购买、下单或付款,也没有修改本地任务状态或提交 Admin。 - **没验证到的部分**:完整采集随后在颜色采价确认阶段返回 `PDD_DATA_PRICE_MISSING`,因此没有完成尺码和最终 SKU 结果提交。该错误发生在已经进入规格面板之后,不属于本工单;Admin 最终页面状态未验证。Windows 高对比度和 200% 缩放未手工验证。 ## 遗留问题 规格面板当前 XML 有价格 370 分和 8 个颜色,但 `selected_text` 为空,导致现有按颜色采价逻辑不能确认选中组合,最终报 `PDD_DATA_PRICE_MISSING`。应单独分析并建缺陷工单,不能通过取消价格完整性校验掩盖。 ## 相关提交 - `e65cc2a` `fix: 商品页就绪后立即进入规格面板 (#36)`