Files
cmautobuy/docs/task/265-售罄临时页仅下拉刷新一次.md
T
2026-08-18 11:58:48 +08:00

66 lines
3.0 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.
# #265 Client:售罄临时页仅下拉刷新一次并重新识别商品
- 工单号:#265
- 类型:缺陷修复
- 父级大工单:#1
- 所属 MVP:#2
- 状态:待验收
- 日期:2026-08-18
- Gitea:<http://ilaer.eicp.net:8418/chengma/cmautobuy/issues/265>
## 背景与目标
Android 浏览器通过深链打开 PDD 商品时,PDD 偶尔先显示页面级“商品已售罄”,人工下拉刷新一次后才能恢复完整商品详情。本任务让采集和采购在确认是页面级售罄时,仅执行一次受限的下拉刷新并重新识别页面,避免立即把临时页面判为永久失效。
## 最终方案
- 页面分类器增加页面级售罄状态,并由商品打开状态机记录是否已经刷新。
- 采集和采购共用安全下拉手势:根据最新控件树计算屏幕范围,在内容区从上向下滑动一次,不点击任何控件。
- 刷新后恢复商品页则继续原流程;仍显示售罄则返回不可重试的 `PDD_GOODS_UNAVAILABLE`。
- 普通 SKU、颜色或尺码选项中的“售罄”不触发整页刷新。
- 采购刷新发生在规格选择和不可逆标记之前,不改变下单门禁。
## 改了哪些文件
- `client/src/pdd_page_classifier.py`
- `client/src/pdd_goods_refresh.py`
- `client/src/pdd_collect_service.py`
- `client/src/pdd_u2_purchase_adapter.py`
- `client/test/test_pdd_page_classifier.py`
- `client/test/test_pdd_collect_service.py`
- `client/test/test_pdd_u2_purchase_adapter.py`
- `docs/client/06-quality-security.md`
实现提交:`e7ac5a4`
## 验收结果
- [x] 明确页面级售罄时只下拉刷新一次。
- [x] 刷新后恢复正常商品页时继续采集或采购流程。
- [x] 刷新后仍售罄时返回 `PDD_GOODS_UNAVAILABLE`,并记录一次刷新诊断信息。
- [x] SKU 选项中的普通“售罄”不会触发整页刷新。
- [x] 采集和采购均不点击推荐商品或其他页面控件。
- [x] 未修改不可逆阶段后的重新下单规则。
## 测试
在 `client/` 目录执行:
```powershell
C:/Python310/python.exe -m py_compile src/pdd_page_classifier.py src/pdd_goods_refresh.py src/pdd_collect_service.py src/pdd_u2_purchase_adapter.py
C:/Python310/python.exe -m pytest -q test/test_pdd_page_classifier.py test/test_pdd_collect_service.py test/test_pdd_u2_purchase_adapter.py
$env:QT_QPA_PLATFORM="offscreen"
C:/Python310/python.exe -c "from src.ui_main import MainWindow; from PyQt5.QtWidgets import QApplication; app=QApplication([]); w=MainWindow(); print('OK'); app.quit()"
Remove-Item Env:QT_QPA_PLATFORM
C:/Python310/python.exe -m pytest -q test
```
结果:
- 语法检查通过。
- 定向测试 146 项全部通过。
- 界面离屏冒烟测试打印 `OK`。
- 完整测试 526 项通过、2 项失败;失败是工作区现有 `src/version.py` 为 `0.1.2`,两项旧测试仍期待 `0.1.0`,与本任务无关。
未验证到的部分:未使用真实 Android 设备复现临时售罄页和实际下拉刷新;未执行真实规格选择或下单。