--- id: T-106 title: 合并式最终提交面板、闸门三与返回路径真机取证 phase: 1 deps: [T-105] status: DONE created: 2026-08-04 vikunja_task_id: 41 context_ref: db2b781 work_branch: task/t-106-confirm-evidence needs_device: true needs_human_review: true write_paths: - README.md - docs/00-ai-start-here.md - docs/02-requirements.md - docs/03-tech-stack.md - docs/04-architecture.md - docs/05-coding-rules.md - docs/06-tasks.md - docs/07-user-stories.md - docs/08-interaction-checklist.md - docs/README.md - docs/api.md - docs/routes.md - docs/tasks/T-106.md - docs/tasks/T-107.md - docs/tasks/T-208.md - docs/tasks/T-210.md - docs/tasks/T-305.md - docs/tasks/T-400.md - docs/tasks/T-401.md - docs/tasks/T-403.md - client/src/cmbuyer_client/pdd/order_confirm_spike.py - client/tests/pdd/test_order_confirm_spike.py - client/scripts/capture_order_confirm_spike.py - docs/current-state.md --- ## 问题 / 背景 2026-08-06 真机证据证明:拼多多 8.17.0 的当前采购界面不存在“规格面板 → 独立订单确认页”导航。目标规格与数量设置后,同一合并式最终提交面板已经显示地址、支付方式、顶部 Gate2 总额和红色“提交订单 ¥金额”;点击该红色控件会立即创建待付款订单并进入付款界面。原四态方案已安全停止。 ## 关联需求与交互 - 功能:F-011、F-016。 - 用户故事:US-004、US-005。 - 依赖:T-105。 - 后续消费者:T-107、T-210、T-305。 - 需要真机和人工页面对应性、安全结果确认。 ## 方案 1. 保留第一态原始截图/XML/App/manifest 与哈希:目标颜色/M、数量 2、面板顶部 Gate2 总额 32.76、唯一可见文本“提交订单 ¥32.76”;项目所有者确认该控件会直接创建待付款订单。 2. 把页面模型改为“合并式最终提交面板”:Gate2 仍只读面板顶部目标数量总额;Gate3 是同一稳定面板中最终红色控件显示的金额。两者是独立 UI 位置,必须分别唯一读取、严格相等且都不超上限。 3. Gate3 仅批准结构化精确文本“提交订单 ¥{规范十进制金额}”;不得包含/前缀猜测、OCR 或坐标兜底。它只能作为 Gate3 只读金额与最终控件身份,不得回流充当 Gate1/Gate2。 4. 最终控件观察记录完整文本、匹配数、启用态、最近可点击祖先是否唯一;不返回 selector、坐标、节点或可点击对象。当前第一态观察到文本匹配数为 1,祖先结构留给 T-107 从最小 fixture 固化。 5. 取消确认页导航动作。T-106/T-107 都不得点击最终红色控件;生产真实点击仍只允许在授权、服务端围栏、Gate2、Gate3、唯一控件四条件同时满足后执行一次。 6. 人从合并式最终提交面板只按一次系统返回并停手,再运行纯只读 CLI 采集返回后状态;结果不明不得再次返回。 7. 同步架构、API、编码规则、路线图和下游任务。旧 confirm_page_amount/confirm_amount 语义废止;T-210/T-208 消费前必须迁移为 gate3_submit_amount,迁移完成前不得建立提交围栏。 8. 若误触最终提交、产生待付款订单、进入付款/安全验证/外部页面或结果不明,立即停止、不重试、不继续取证;绝不付款。 ## 验收要点 - 第一态证据哈希完整,人工确认合并式面板、目标规格、数量 2、Gate2 顶部 32.76、最终文本“提交订单 ¥32.76”匹配数 1,以及点击语义为直接创建待付款订单。 - 一次人工返回后的截图/XML/App/manifest 完整,人工确认回到同一商品安全页;返回结果不明不重试。 - 静态证明 spike/CLI 只有 app/截图/XML 读取能力,没有任何页面修改 API;只允许合并式面板历史态与人工返回态。 - 架构保留三道逻辑闸门:Gate3 使用同一最终面板的独立最终控件金额,不删除 Gate3、不把其金额用于 Gate1/Gate2、不放宽提交四条件。 - client 全量 unittest、compileall、完整 init、上下文校验、Vikunja 导出与 diff-check 通过;agent 不得自行标 DONE。 ## 执行记录 ### 2026-08-04T14:01:13Z · ila 2026-08-04 预研定值:T-106 与 T-107 分开,严格只做人工准备页面后的只读取证;采集代码零 UI 修改,最终提交控件不点击,一次返回也由人执行且结果不明不重试。 ### 2026-08-04T14:02:39Z · ila 2026-08-04 主审补齐导航来源事实:T-106 必须采集四态——闸门二后的确认页导航前状态、确认页闸门三、最终提交控件可见态、人工一次返回后状态;人记录进入确认页时实际单击的精确控件/容器与匹配数,agent 仍只读取证。缺少来源态时 T-107 不得从目标页反推入口。 ### 2026-08-06T02:12:17Z · ila 2026-08-06T02:12:16.724Z · Codex 已领取 T-106。基线 init.ps1 通过(client 330 tests);按任务边界只实现四态纯只读取证,禁止 click/press/back/swipe/input/intent,代码完成后等待人工真机准备与验收。 ### 2026-08-06T02:20:23Z · ila 2026-08-06T02:20:23.748Z · Codex T-106 四态纯只读取证代码已完成:新增 order_confirm_spike、capture_order_confirm_spike.py 与 16 项专项测试。静态 AST 证明生产模块/CLI 只允许 takeScreenshot、dumpWindowHierarchy,且不可达页面修改、确认页导航、提交、围栏或付款能力。client 全量 346 tests、compileall、validate_agent_context 与完整 init.ps1 均通过。任务保持 DOING,等待项目所有者依次人工准备并确认 Gate2 导航前、Gate3、最终控件可见、一次返回后四态;绝不点击最终提交。 ### 2026-08-06T02:41:41Z · ila 2026-08-06T02:41:40.982Z · Codex T-106 第一态真机事实(拼多多 8.17.0、PKG110/Android 16、goods_id 937122477375、WiFi):截图/XML/应用摘要与 manifest 完整,三项 SHA-256 均核对一致;页面显示目标颜色/M、数量 2、当前金额 32.76,并有唯一可见文本“提交订单 ¥32.76”。项目所有者确认该页仍是规格面板,点击红色“提交订单 ¥32.76”会立刻创建待付款订单并进入付款界面。因此原“四态”方案中独立确认页导航前提不成立;未点击该控件、未创建订单、未进入付款。立即禁止第二至第四态及任何该控件点击,T-106 保持 DOING,先重新定值 Gate3 架构,不能把底部按钮金额直接当 Gate3 或放宽提交四条件。截图 SHA-256=05531e020ac93048432d51554137fecf0879868ebad126771a041492cadca790;XML SHA-256=5ab31b45772e1b4e93976da5f029eeec1f5152207c2b8a75ee05ae5ce5673a7d;app 摘要 SHA-256=dcfd282da23bc5dee08e25446ed395c300c5ec9eb4d27d3c0b231a306641db50。 ### 2026-08-06T02:53:01Z · ila 2026-08-06T02:53:00.755Z · Codex 项目所有者明确同意“同一最终面板、两个独立金额位置”的 Gate3 方案。T-106/T-107 已重规划:取消确认页导航;Gate2 只读顶部总额,Gate3 只读最终控件结构化金额,两者必须分别唯一、严格相等且不超上限。T-106/T-107 不点击红色控件;只补一次人工 Back 返回证据。旧 confirm_page_amount/confirm_amount 语义将在 T-210/T-208 消费前迁移为 gate3_submit_amount,迁移前禁止提交围栏。 ### 2026-08-06T03:01:42Z · ila 2026-08-06T03:01:42.237Z · Codex 合并式最终提交面板 Gate3 契约已同步到架构、需求、API、编码规则、路线图、用户故事/交互/路由及下游 T-107/T-210/T-208/T-305/T-400/T-401/T-403。T-106 只读 CLI 现仅接受既有最终面板态与人工一次 Back 返回态;确认页导航与红色控件点击均不可达。专项 16 tests、client 全量 346 tests、compileall、validate_agent_context 与完整 init.ps1 均通过。尚待项目所有者只按一次 Back、运行 returned-safe-page 取证并确认安全返回;T-106 保持 DOING。 ### 2026-08-06T03:18:45Z · ila 2026-08-06T03:07:33Z 返回态真机证据已完成并复核(拼多多 8.17.0、PKG110/Android 16、WiFi、goods_id 937122477375):screenshot/XML/app/manifest 完整,三项 SHA-256 与 manifest 一致。截图与 XML 显示一次 Back 后回到同一商品详情安全页,恢复“快要抢光 ¥12.88 / 免拼购买”,不存在“提交订单”“立即支付”“确认支付”等控件;前台仍为 com.xunmeng.pinduoduo/.activity.NewPageActivity。screenshot SHA-256=370a447f1e4f9ab848fea81b735081d62524a3db8ae100dfd94f96c6abeff38f;XML SHA-256=ab8f4a060d7180b1f231131095fdf4c07dacac68e47eaec9b5804090557eec6c;app SHA-256=dcfd282da23bc5dee08e25446ed395c300c5ec9eb4d27d3c0b231a306641db50。项目所有者“四项确认”:只按一次系统返回;未点击提交订单;未创建待付款订单;未进入付款、安全验证或外部页面。T-106 两态真机与人工验收全集满足。 ### 2026-08-06T03:22:42Z · ila T-106 收尾同步:本地 frontmatter 已改为 DONE,current-state 已切换到 T-107,旧四态边界残留已收紧为已批准的两态证据模型。Vikunja 完成更新时发现 MCP 部分更新会清空 description;已由 Git 权威副本恢复线上完整问题/方案/验收要点,并通过重新导出读回确认。按 docs-only 验证矩阵,validate_agent_context、Vikunja export check、git diff --check 通过;业务代码未变化,不重复运行两端测试,沿用本任务代码落地时已通过的 client 346 tests、compileall 与完整 init.ps1。 ## 边界 - 2026-08-06 第一态真机证据与项目所有者确认推翻了“规格面板后还有独立确认页”的前提:当前规格 面板已经显示地址、支付方式和唯一“提交订单 ¥32.76”,点击会立刻创建待付款订单并进入付款界面。 项目所有者随后批准“同一最终面板、两个独立金额位置”方案:Gate2 仍是顶部总额,Gate3 只读最终 控件金额,二者必须唯一、严格相等且不超上限。原四态方案已被真机事实终止;现在只允许既有 合并式最终面板态和一次人工 Back 后的返回态,红色控件仍绝对禁止点击,不放宽提交四条件。 - 本任务只实现和运行只读取证能力:设备/App 摘要、`app_current`、screenshot、`compressed=false` XML、 hash 与原子 manifest。代码中不得出现 click、press/back、swipe、input、intent 或其他 UI 修改 API, 不得自动进入或退出确认页,也不得从前序项目、旧 XML 或推理写生产判据。 - 合并式最终面板与一次返回后的页面都由人手工准备;人不得点击最终“提交订单”控件。一次返回 结果不明时不得再次按 Back。agent 只采集已准备状态,不远程替人执行这些动作。 - 人工验收必须明确合并式最终面板的规格、数量、Gate2/Gate3 金额、最终控件精确文案/匹配数/ 启用态,以及返回后的页面身份;本任务只记录真机事实,不把坐标、节点或 selector 批准为生产能力。 - 取证只包含两个稳定状态:既有合并式最终面板历史态,以及人工只按一次系统 Back 后的商品详情 安全页。不得再采集或声称存在独立确认页导航态、确认页态或额外最终控件态。 - 合并式最终面板中的“提交订单 ¥...”已经由项目所有者确认是直接创建待付款订单的最终控件; T-107 只能从本任务已确认的证据中最小化固化 Gate3 只读判据和返回后置条件,不得实现点击。 - 若人工误触最终提交、产生待付款订单、进入支付/安全验证/外部页面或结果不明,立即停止、不重试、 不继续取证并如实记录;绝不点击支付、免密支付、先用后付或任何扣款控件。 - 原始 screenshot/XML 只留 `%LOCALAPPDATA%\cmbuyer\artifacts\T-106\...`,不提交 Git、不上传采购服务, 不把完整 XML、地址、手机号、支付信息、页面全文或本机路径写入普通日志/Vikunja/fixture。 - `needs_device: true`:agent 不得自行标 DONE。只有人确认两组证据对应、一次返回安全、未点击最终提交、 未创建订单且未进入支付相关页面,任务才可完成。