From 772e379fd6252455b159dbc7d8508841deca49d9 Mon Sep 17 00:00:00 2001 From: QiuSW <105186638@qq.com> Date: Tue, 4 Aug 2026 22:05:20 +0800 Subject: [PATCH] docs(tasks): define T-107 confirm gate --- docs/tasks/T-107.md | 87 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 87 insertions(+) create mode 100644 docs/tasks/T-107.md diff --git a/docs/tasks/T-107.md b/docs/tasks/T-107.md new file mode 100644 index 0000000..02b53c7 --- /dev/null +++ b/docs/tasks/T-107.md @@ -0,0 +1,87 @@ +--- +id: T-107 +title: 固化确认页、闸门三与提交控件只读判据 +phase: 1 +deps: [T-106] +status: TODO +created: 2026-08-04 +vikunja_task_id: 42 +context_ref: 83b244f +work_branch: task/t-107-confirm-gate3 +needs_device: true +needs_human_review: true +write_paths: + - docs/tasks/T-107.md + - client/src/cmbuyer_client/pdd/order_confirm.py + - client/src/cmbuyer_client/pdd/order_confirm_runner.py + - client/tests/pdd/test_order_confirm.py + - client/tests/pdd/fixtures/order_confirm_source_8_17_0.xml + - client/tests/pdd/fixtures/order_confirm_gate3_8_17_0.xml + - client/tests/pdd/fixtures/order_submit_control_8_17_0.xml + - client/tests/pdd/fixtures/order_confirm_exit_8_17_0.xml + - client/scripts/run_t107_order_confirm_dry_run.py + - docs/api.md + - docs/current-state.md +--- + + +## 问题 / 背景 + +T-106 将形成确认页导航前、闸门三、最终提交控件可见态和一次返回后的四组真机证据。T-107 只从这些已由人确认的本项目事实固化一次性确认页导航、闸门三读取、最终控件纯观察与一次安全返回;绝不点击最终提交。 + +## 关联需求与交互 + +- 功能:F-011、F-016、F-017 的围栏前只读部分。 +- 用户故事:US-004、US-005。 +- 依赖:T-106。 +- 后续消费者:T-210、T-305、T-208。 +- 需要真机与人工安全验收。 + +## 方案 + +1. 从 T-106 四态证据提取只含必要节点且去隐私的最小 fixture;页面版本、前台包、来源页面、导航控件或目标页面任一漂移都零点击。 +2. go_to_order_confirm 只允许点击 T-106 人工证明的导航前状态中精确唯一的已批准控件一次;点击后等待确认页精确后置条件。超时或结果不明不重试,不使用相似文案、OCR、裸坐标或其他购买按钮兜底。 +3. observe_gate3 只从确认页读取颜色、尺码、数量和应付总额;必须等于目标规格/数量且金额为规范十进制、不超最高总价。不得从详情页、规格面板或其他数字补值。 +4. 最终“提交订单”控件由纯 XML observer 只读:记录精确文本、匹配数、启用态和是否存在唯一可点击祖先,但不返回 selector、坐标、节点、祖先句柄或任何可点击对象;observer 不持有 device。 +5. Gate3Observation 包含规格、数量、确认页金额、最高总价、submit_control_text/match_count/enabled、确认页原始 screenshot_path 和 UTC captured_at。 +6. 观察完成后 exit_order_confirm_safely 只发送一次 Android Back,并稳定验证 T-106 post-back 正判据;超时/结果不明不重试,SystemUI/锁屏/其他 PDD 页/外部页都不是成功。 +7. runner 是永久围栏前 dry-run capability,不接受 allow_submit/dry_run=False 开关;composition/import 静态不可达 fence、SubmissionPermit、submit_order_once、payment。 +8. T-107 不上传证据、不定义 T-205 事件码、不申请围栏、不创建待付款订单。任何失败只停止并等待人工,不自动回 DRAFT/释放/转领。 + +## 验收要点 + +- fixture 正反例覆盖来源页、唯一导航控件、确认页、规格/数量/金额、最终控件 0/1/2 个、一次返回后置条件与版本漂移。 +- 动作轨迹证明成功路径仅一个已批准导航点击和一次 Back;导航结果不明与 Back 结果不明均不重试。 +- Gate3 金额用 Decimal,规格/数量/上限严格;最终控件观察 DTO 不含 selector/坐标/节点/可点击对象。 +- AST/import closure 证明没有 fence/result/SubmissionPermit/click_permitted/submit_order_once/payment,最终控件 observer 无 device/click。 +- 真机人工确认闸门三、submit match count=1、一次安全返回、未点击最终提交、未创建订单/进入支付。 +- client 全量 unittest、compileall、完整 init、上下文校验、Vikunja 导出与 diff-check 通过;agent 保持 DOING 等人工验收。 + +## 执行记录 + +### 2026-08-04T14:04:47Z · ila + +2026-08-04 预研定值:T-107 只消费 T-106 四态证据;确认页导航最多一次,最终提交控件由无 device 的纯 observer 读取且 DTO 不暴露节点/坐标/selector,随后最多一次 Back 并验证返回后置条件。全路径静态不可达提交与付款。 + + +## 边界 + +- 任何确认页来源判据、导航控件、目标页结构、闸门三节点、最终提交控件和返回后置条件都只能来自 + T-106 已由人确认的四态真机证据,并与拼多多 8.17.0/goods_id 绑定。不得从前序项目、旧 XML、 + Activity 名、相似文案、OCR、裸坐标或推理补判据。 +- `go_to_order_confirm()` 只允许在精确来源页点击 T-106 已证明的唯一导航控件一次;超时或结果不明 + 不重试,不尝试其他购买按钮,不把规格面板中任意“提交订单 ¥...”文本直接当成已批准入口。 +- 闸门三只从确认页读取颜色、尺码、数量和应付总额;必须严格等于目标规格/数量且金额为规范十进制、 + 不超最高总价。不得用详情页、规格面板或其他位置数字凑齐,不得使用浮点数。 +- 最终“提交订单”控件只能由不持有 device/click 能力的纯 XML observer 只读。结果可含精确文本、 + 匹配数、启用态和“唯一可点击祖先是否存在”的布尔值,但不得返回 selector、坐标、节点、祖先句柄 + 或任何可点击对象;runner 不得对该控件或祖先调用 click。 +- 观察完成后只允许一次 Android Back,并必须命中 T-106 固化的稳定 post-back 正判据;超时或结果 + 不明不重试。SystemUI/锁屏、其他 PDD 页面、外部支付/安全验证页或仅“确认页消失”都不是退出成功。 +- Runner 是永久围栏前 dry-run capability,不接受 `allow_submit`、`dry_run=False` 等开关;构造和 + import 闭包不得引用 submission fence、SubmissionPermit、`click_permitted`、`submit_order_once()`、 + 结果调和、支付、免密支付、先用后付或任何扣款能力。 +- T-107 不上传证据、不定义 T-205 事件、不申请围栏、不创建待付款订单。任何失败只停止并等待人工, + 不自动释放 claim/授权、不回 DRAFT、不转领或重试页面动作。 +- `needs_device: true`:agent 不得自行标 DONE。只有人确认闸门三、最终控件 match count=1、一次安全 + 返回,且未点击最终提交、未创建订单、未进入支付相关页面,任务才可完成。