Files
cmbuyer/docs/tasks/T-104.md
T

5.8 KiB
Raw Blame History

id, title, phase, deps, status, created, vikunja_task_id, context_ref, work_branch, needs_device, needs_human_review, write_paths
id title phase deps status created vikunja_task_id context_ref work_branch needs_device needs_human_review write_paths
T-104 验证规格选择能力安全退出 1
T-103
TODO 2026-08-04 32 9a4d11f task/t-104-safe-exit true true
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

问题 / 背景

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 完成后认领。

执行记录

(暂无)

边界

  • 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()、支付、免密支付、先用后付或任何扣款能力;既有 三道价格闸门、服务端围栏、只点一次且不重试的约束不得放宽。