Android 浏览器打开 PDD URL 并跳转到 PDD App 后,部分有效商品会短暂显示“商品已售罄”。人工在页面内按住屏幕向下拉刷新一次后,可以恢复完整商品详情页。当前 Client 不会执行这次刷新:公共页面分类器也没有把售罄页作为独立页面类型,因此采集或采购可能等待超时、报找不到规格入口,或在后续解析阶段才返回商品不可用。
需要把“明确售罄临时页 → 只下拉刷新一次 → 重新确认商品页”纳入采集和采购共用的商品打开状态机。刷新后恢复正常商品页才继续;仍显示售罄才以 PDD_GOODS_UNAVAILABLE 安全结束。
PDD_GOODS_UNAVAILABLE
client/src/pdd_page_classifier.py
GoodsOpenTracker
client/src/pdd_collect_service.py
client/src/pdd_u2_purchase_adapter.py
PAGE_GOODS
page_reason=out_of_stock
refresh_attempts=1
docs/client/06-quality-security.md
预计不修改数据库和 Admin 接口。
从 client/ 执行:
client/
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 C:/Python310/python.exe -m pytest -q test $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
真机只验证深链打开、一次下拉刷新和恢复商品详情;不选择规格、不提交订单、不付款。
风险是误把 SKU 售罄或普通推荐文案识别为整页售罄,以及下拉手势落入系统状态栏或其他控件。只接受明确商品级短语,且手势起止点限制在最新 PDD 内容树的中部安全区域;刷新最多一次,方向或页面证据不足时安全停止。回退可恢复为原等待/售罄失败行为,不涉及数据迁移;不可通过扩大刷新次数或放宽页面分类绕过平台异常。
e7ac5a4
1ce99d4
docs/task/265-售罄临时页仅下拉刷新一次.md
OK
version.py=0.1.2
0.1.0
工单保持开启,待用户真机验收后关闭并同步父工单。
No dependencies set.
The note is not visible to the blocked user.
基本信息
要解决什么
Android 浏览器打开 PDD URL 并跳转到 PDD App 后,部分有效商品会短暂显示“商品已售罄”。人工在页面内按住屏幕向下拉刷新一次后,可以恢复完整商品详情页。当前 Client 不会执行这次刷新:公共页面分类器也没有把售罄页作为独立页面类型,因此采集或采购可能等待超时、报找不到规格入口,或在后续解析阶段才返回商品不可用。
需要把“明确售罄临时页 → 只下拉刷新一次 → 重新确认商品页”纳入采集和采购共用的商品打开状态机。刷新后恢复正常商品页才继续;仍显示售罄才以
PDD_GOODS_UNAVAILABLE安全结束。做什么 / 不做什么
怎么做
client/src/pdd_page_classifier.py:新增明确的整页售罄分类,只接受“商品已售罄”“该商品已售罄”“商品暂时缺货”等页面级短语;为GoodsOpenTracker增加一次刷新动作和刷新后仍售罄的终态,保持首页重新打开一次、网络、登录、验证码和旧商品页规则不变。client/src/pdd_collect_service.py和client/src/pdd_u2_purchase_adapter.py:两条商品打开循环处理共享刷新动作;刷新后恢复PAGE_GOODS才继续;第二次售罄返回PDD_GOODS_UNAVAILABLE、page_reason=out_of_stock、refresh_attempts=1。采购发生在规格选择和不可逆标记之前。docs/client/06-quality-security.md的稳定规则。预计不修改数据库和 Admin 接口。
验收标准
PDD_GOODS_UNAVAILABLE,诊断包含page_reason=out_of_stock和refresh_attempts=1。怎么验证
从
client/执行:真机只验证深链打开、一次下拉刷新和恢复商品详情;不选择规格、不提交订单、不付款。
风险和回退
风险是误把 SKU 售罄或普通推荐文案识别为整页售罄,以及下拉手势落入系统状态栏或其他控件。只接受明确商品级短语,且手势起止点限制在最新 PDD 内容树的中部安全区域;刷新最多一次,方向或页面证据不足时安全停止。回退可恢复为原等待/售罄失败行为,不涉及数据迁移;不可通过扩大刷新次数或放宽页面分类绕过平台异常。
实施完成,等待用户验收
e7ac5a41ce99d4docs/task/265-售罄临时页仅下拉刷新一次.mdOK)version.py=0.1.2与旧测试期待0.1.0的基线差异,与 #265 无关工单保持开启,待用户真机验收后关闭并同步父工单。