83 lines
5.8 KiB
Markdown
83 lines
5.8 KiB
Markdown
---
|
||||
|
|
id: T-104
|
|||
|
|
title: 验证规格选择能力安全退出
|
|||
|
|
phase: 1
|
|||
|
|
deps: [T-103]
|
|||
|
|
status: TODO
|
|||
|
|
created: 2026-08-04
|
|||
|
|
vikunja_task_id: 32
|
|||
|
|
context_ref: 9a4d11f
|
|||
|
|
work_branch: task/t-104-safe-exit
|
|||
|
|
needs_device: true
|
|||
|
|
needs_human_review: true
|
|||
|
|
write_paths:
|
|||
|
|
- docs/tasks/T-104.md
|
|||
|
|
- client/src/cmbuyer_client/pdd/sku_selection.py
|
|||
|
|
- client/src/cmbuyer_client/pdd/sku_selection_runner.py
|
|||
|
|
- client/tests/pdd/test_sku_selection.py
|
|||
|
|
- client/tests/pdd/fixtures/product_exit_8_17_0.xml
|
|||
|
|
- client/scripts/capture_sku_exit_spike.py
|
|||
|
|
- client/scripts/run_t103_sku_selection.py
|
|||
|
|
- docs/current-state.md
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
<!-- BEGIN VIKUNJA EXPORT id=32 synced=2026-08-04T10:47:05Z sha256=d0fe6a30708d16440962b8ab9ec81ce33065f96363597bd55e0a1fb4b442b6fd -->
|
|||
|
|
## 问题 / 背景
|
|||
|
|
|
|||
|
|
T-103 已实现受控规格选择、读价、截图和单次 Back,但当前 `exit_sku_panel_safely()` 在 hierarchy 变化且规格面板判据不再成立时就返回成功。2026-08-04 的只读诊断已证明:通知栏覆盖时 `app_current` 仍可能报告拼多多,而节点树全部属于 SystemUI。因此“已不在面板”不是安全退出的充分条件。T-104 用独立真机证据把后置条件收紧为“稳定回到同一目标商品详情页”。
|
|||
|
|
|
|||
|
|
## 关联需求与交互
|
|||
|
|
|
|||
|
|
- 功能:F-006 单趟流程中的安全退出边界。
|
|||
|
|
- 架构/API:复用 `SkuSelectionFlow.exit_sku_panel_safely()`;不改变服务端 API。
|
|||
|
|
- 依赖:T-103 完成真机规格选择/读价/人眼安全退出验收后才开工。
|
|||
|
|
|
|||
|
|
## 方案
|
|||
|
|
|
|||
|
|
1. 先新增窄取证脚本:只在已验证 PDD 8.17.0 目标规格面板上发送一次 Back,随后采集本机截图/XML/App/设备/goods_id 元数据;不得打开确认页、设置数量或点击任何页面控件。
|
|||
|
|
2. 由人确认 post-exit 截图确为 goods_id `937122477375` 商品详情、规格面板已关闭、未进入确认页/外部支付页,并确认截图/XML 对应;`needs_device=true`,agent 保持 DOING。
|
|||
|
|
3. 从本项目 post-exit XML 提取只含判据节点的最小 fixture。成功判据必须稳定命中该商品详情的证据绑定正结构;可复用 T-103 的“快要抢光”五层入口链,但必须由新的 post-exit 证据再次验证。
|
|||
|
|
4. 收紧 `exit_sku_panel_safely()`:版本和前台包正确、节点树仅含 PDD 受控页面、目标商品详情正判据精确唯一并连续稳定;面板仍在、SystemUI/锁屏、PDD 其他页、确认/提交/支付语义、入口缺失/重复或结构漂移均不得记成功。
|
|||
|
|
5. Back 最多发送一次。超时或响应不明不重试;故障调和也不能产生第二次 Back。失败不得发布 `safe_exit=completed` manifest。
|
|||
|
|
6. 复用 T-103 runner/flow,不新建第二套采购流程;可增加 post-exit 本机原始截图和无页面正文摘要,完整 XML 仍只留本机,不上传、Git 或日志。
|
|||
|
|
|
|||
|
|
## 验收要点
|
|||
|
|
|
|||
|
|
- 真机证据记录路径、截图/XML hash、PKG110、Android 16、Wi-Fi/USB、拼多多 8.17.0 和 goods_id;只有人能完成页面对应性与无订单创建确认。
|
|||
|
|
- 离线测试覆盖成功稳定详情页,以及面板未退、SystemUI/锁屏、PDD 其他页、确认/提交/支付页、入口缺失/重复/漂移、版本/前台漂移。
|
|||
|
|
- 所有失败分支 Back 总数最多 1;超时不重试;失败不发布 completed manifest。
|
|||
|
|
- 静态证明没有数量、确认页导航、提交订单、围栏或支付能力。
|
|||
|
|
- client 全量单测、compileall、完整 init、上下文校验与 diff-check 通过。
|
|||
|
|
|
|||
|
|
## 执行记录
|
|||
|
|
|
|||
|
|
等待 T-103 完成后认领。
|
|||
|
|
|
|||
|
|
## 执行记录
|
|||
|
|
|
|||
|
|
(暂无)
|
|||
|
|
<!-- END VIKUNJA EXPORT -->
|
|||
|
|
|
|||
|
|
## 边界
|
|||
|
|
|
|||
|
|
- T-104 必须等待 T-103 完成人工真机验收后才可转 `DOING`。本任务先取证、后写退出成功判据;不得从
|
|||
|
|
当前实现、前序项目、旧 XML、Activity 名或推理直接声明商品详情页。
|
|||
|
|
- 取证动作只允许在已证明为拼多多 8.17.0、goods_id `937122477375` 的目标规格面板上发送一次
|
|||
|
|
Android Back,随后只读采集截图/XML/App/设备摘要。不得点击关闭坐标、空白处、购买、数量、确认、
|
|||
|
|
提交或支付控件,也不得在 Back 失败或结果不明时重试。
|
|||
|
|
- “规格面板已消失”不是退出成功。成功必须由本项目 post-exit 真机证据证明:版本和前台包正确、节点树
|
|||
|
|
仅属于 PDD 受控页面、同一目标商品详情正判据精确唯一并连续稳定;SystemUI/锁屏、PDD 其他页面、
|
|||
|
|
确认页、提交页、外部支付页、入口缺失/重复或结构漂移一律停止且不得发布 completed manifest。
|
|||
|
|
- 可以复用 T-103 已取证的“快要抢光”五层入口链作为候选结构,但必须在新的 post-exit 截图/XML 上
|
|||
|
|
重新验证并由人确认页面对应性;不得使用相似文本、包含/前缀、OCR、裸坐标或其他购买文案兜底。
|
|||
|
|
- 只收紧现有 `SkuSelectionFlow` 与 runner 的退出后置条件,不新建第二套采购流程,不新增通用 `click`、
|
|||
|
|
数量、确认页导航、授权、提交围栏、创建待付款订单或支付能力。第一趟与任何真实提交函数继续静态隔离。
|
|||
|
|
- 原始完整 XML 只保存在 `%LOCALAPPDATA%\cmbuyer\artifacts\T-104\...`,不得上传、提交 Git、写入
|
|||
|
|
Vikunja 或日志。Git 中最小 fixture 只能保留退出判据所需结构,并由人确认不含地址、手机号或支付凭据。
|
|||
|
|
- `needs_device: true`:agent 不得自行标 `DONE`。只有人确认 post-exit 截图为同一目标商品详情、面板
|
|||
|
|
已关闭、未进入确认/提交/支付页、未创建订单,且截图/XML 对应后,任务才可完成。
|
|||
|
|
- 本任务不实现、不调用 `set_quantity_and_readback()`、`go_to_order_confirm()`、
|
|||
|
|
`create_submission_fence()`、`submit_order_once()`、支付、免密支付、先用后付或任何扣款能力;既有
|
|||
|
|
三道价格闸门、服务端围栏、只点一次且不重试的约束不得放宽。
|
|||
|
|
|