docs: 归档任务 #42

This commit is contained in:
chengma
2026-08-08 11:25:41 +08:00
parent 5aaf0a937e
commit 033bef0614
@@ -0,0 +1,64 @@
# 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` 允许颜色缺价后继续采集