Files
cmautobuy/docs/task/42-允许颜色缺价并继续采集尺码.md
T

65 lines
3.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 42 允许颜色缺价并继续采集尺码
- 类型:缺陷修复
- 父级大工单:#1
- 所属 MVP / 版本:#2 / MVP
- 状态:已完成,用户验收通过
- 日期:2026-08-08
- Gitea 工单:http://ilaer.eicp.net:8418/chengma/cmautobuy/issues/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` 允许颜色缺价后继续采集