From e08fd89c91cb120ddfb7c45b5b1500f36a5199b5 Mon Sep 17 00:00:00 2001 From: chengma Date: Fri, 7 Aug 2026 18:14:28 +0800 Subject: [PATCH] =?UTF-8?q?docs:=20=E5=BD=92=E6=A1=A3=E4=BB=BB=E5=8A=A1=20?= =?UTF-8?q?#36?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/task/36-商品页就绪后立即进入规格面板.md | 68 ++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 docs/task/36-商品页就绪后立即进入规格面板.md diff --git a/docs/task/36-商品页就绪后立即进入规格面板.md b/docs/task/36-商品页就绪后立即进入规格面板.md new file mode 100644 index 0000000..046b3c1 --- /dev/null +++ b/docs/task/36-商品页就绪后立即进入规格面板.md @@ -0,0 +1,68 @@ +# 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)`