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

141 lines
12 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
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
---
<!-- BEGIN VIKUNJA EXPORT id=41 synced=2026-08-06T03:22:51Z sha256=316f8f716ed7b247a22092ec211d38e60cefee9235d6ba456286ccde1ede53e8 -->
## 问题 / 背景
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。
<!-- END VIKUNJA EXPORT -->
## 边界
- 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。只有人确认两组证据对应、一次返回安全、未点击最终提交、
未创建订单且未进入支付相关页面,任务才可完成。