Files
cmautobuy/docs/task/42-允许颜色缺价并继续采集尺码.md
T
2026-08-08 11:25:41 +08:00

3.0 KiB
Raw Blame History

42 允许颜色缺价并继续采集尺码

  • 类型:缺陷修复
  • 父级大工单:#1
  • 所属 MVP / 版本:#2 / MVP
  • 状态:已实现,待验收
  • 日期:2026-08-08
  • Gitea 工单:#42

背景与目标

颜色遍历结束后,只要存在颜色没有采到稳定价格,Client 就会提前抛出 PDD_DATA_PRICE_MISSING,因此尚未执行尺码采集,完整任务也无法入库和提交。 部分颜色售罄、无法选中或偶尔采不到价格属于正常情况,本任务让缺价保留为空, 并继续完成尺码采集和结果提交。

最终方案

  • 保留现有颜色遍历、点击和价格采样逻辑,每个颜色不增加价格重试。
  • 颜色未采到价格时,price_cent、raw_price 和 list_price_cent 为 null, price_observed_at 为空对象。
  • 所有颜色遍历完成后,无论部分还是全部缺价,都继续调用原有尺码滚动采集。
  • 规格组合非空时继续生成 pdd_data,由原流程先写 SQLite 和 Outbox,再提交 Admin;所有价格为空时,任务列表摘要价格也自然为空。
  • available 只由颜色和尺码控件状态决定,不再和是否采到价格绑定。
  • 没有采到规格维度或无法生成任何规格组合时,仍按规格数据不完整处理。

改了哪些

  • client/src/pdd_collect_service.py:移除颜色缺价的两个阻断判断,保留空价格并 继续采集尺码;规格可用状态改为只取页面控件状态。
  • client/test/test_pdd_collect_service.py:增加全部颜色点击未生效、价格全部为空时 仍能采集尺码并生成规格组合的测试。
  • docs/client/01-requirements.md:记录颜色缺价不重试、不阻断的业务规则。
  • docs/client/03-data-model.md:记录缺价字段和 available 的数据语义。
  • docs/client/04-admin-api-contract.md:明确 Admin 必须接受非空规格中的空价格。

验收结果

验收标准 结果
部分或全部颜色缺价时仍执行尺码采集 通过
缺价字段保存为 null,采价证据为空对象 通过
缺价不改变页面采集到的 available 通过
非空规格可以继续生成入库和提交数据 通过
空规格仍按数据不完整处理 通过
未改变颜色遍历和尺码滚动算法 通过
Client 完整回归通过 通过

测试

  • cd client; C:/Python310/python.exe -m unittest discover -s test -p test_pdd_collect_service.py :26 项通过。
  • cd client; C:/Python310/python.exe -m unittest discover -s test -p "test_*.py" :167 项通过。
  • C:/Python310/python.exe -m py_compile client/src/pdd_collect_service.py client/test/test_pdd_collect_service.py :通过。
  • git diff --check:通过;输出中仅有工作区原有文件的换行符提示。
  • 未连接真机复测商品 579590149861;需验收时确认遍历颜色后会滚动到尺码, 且 Admin 接收含空价格的非空规格结果。

相关提交

  • 5aaf0a9 允许颜色缺价后继续采集