3.0 KiB
3.0 KiB
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允许颜色缺价后继续采集