diff --git a/docs/current-state.md b/docs/current-state.md index e66e73d..43b12af 100644 --- a/docs/current-state.md +++ b/docs/current-state.md @@ -12,7 +12,7 @@ ## 当前快照 - 日期:2026-08-06 -- 阶段:**Phase 1 · T-106 合并式最终提交面板返回证据与 Phase 2 安全服务端任务并行** +- 阶段:**Phase 1 · T-107 合并式最终提交面板 Gate3 判据与 Phase 2 安全服务端任务并行** - MVP 形态:手工填链接建单 → 批量“开始采购”并签发一次性授权 → 定时领取 → 同一趟精确 选规格 / 三道价格闸门 / 提交围栏 / 点击一次 → 待付款。管理员点击“开始采购”即授权桌面端 创建待付款订单;不再有试选后确认,系统绝不自动付款。 @@ -66,11 +66,11 @@ | 路径 | 状态 | 说明 | | --- | --- | --- | | `docs/` | 已有 | 项目规范化文档,本次已完整生成 | -| `docs/tasks/` | 已有(含 T-001~T-111、T-201~T-211、T-301~T-308、T-400~T-405) | T-103~T-105、T-303、T-211 已完成;T-304 代码完成后保持 DOING 等人工 UI 复核;T-106 已批准合并式最终面板 Gate3,等待一次人工 Back 返回证据;双端围栏、真实提交、调和、打包与只读验收均已落成任务 | +| `docs/tasks/` | 已有(含 T-001~T-111、T-201~T-211、T-301~T-308、T-400~T-405) | T-103~T-106、T-303、T-211 已完成;T-304 代码完成后保持 DOING 等人工 UI 复核;T-107 将从两态真机证据固化合并式最终面板 Gate3;双端围栏、真实提交、调和、打包与只读验收均已落成任务 | | `docs/design/` | 已有(6 个原型) | web 登录 / 建单 / 工作台 / 详情,desk 采购执行 / 配置;均已人工确认 | | `scripts/` | 已有 | 上下文门禁、Vikunja 单向导出与 MCP 启动包装 | | `admin/` | 已初始化 | Go 1.23+ / gin / SQLite,含建单/授权/详情/证据/设备身份与原子 claim/renew;不执行真机动作 | -| `client/` | 已初始化 | Python 3.11+、PySide6/uiautomator2、固定双 Tab 主界面、安全轮询、严格 HTTP/DPAPI/SQLite 恢复底座及受控规格选择/读价/数量 Gate2/安全退出;T-106 只读采集允许既有最终面板态与人工一次 Back 返回态,最终提交仍未开放 | +| `client/` | 已初始化 | Python 3.11+、PySide6/uiautomator2、固定双 Tab 主界面、安全轮询、严格 HTTP/DPAPI/SQLite 恢复底座及受控规格选择/读价/数量 Gate2/安全退出;T-106 合并式最终面板与一次 Back 返回两态只读取证已完成,最终提交仍未开放 | | `init.ps1` / `init.sh` | 已完成 | 统一安装与离线验证入口;PowerShell 优先复用合规 venv,缺失时自动选择最高的 Python 3.11+,Unix 缺工具链明确失败 | ## 任务状态 @@ -89,8 +89,8 @@ - 已完成 T-110、T-111、T-203、T-204、T-301 与 T-302。服务端已能授权、认证设备、原子领取、 稳定重放和续租;claim token 不是提交许可,尚无事件、提交围栏或结果 API。 - T-103 已完成受控入口、精确颜色、固定 reveal、exact M、规格面板 `12.88` 读价、一次 Back 和最终 - 人工真机验收;T-104 已完成同商品安全退出,T-105 已完成数量/Gate2,T-106~T-107 改按合并式最终 - 提交面板 Gate3 风险逐段开放。真机运行要求 + 人工真机验收;T-104 已完成同商品安全退出,T-105 已完成数量/Gate2,T-106 已完成合并式最终面板 + 与一次 Back 返回两态只读取证,T-107 将据此固化 Gate3 判据。真机运行要求 同一物理手机只保留一个 ADB 通道;CLI 已增加不回显页面 正文的固定白名单失败阶段码;`sku_entry` 动态页面误判已按最新真机证据修复,覆盖点击中心的浮窗 会保持零点击,入口失败也已细分为前置、发现、点击和面板后置验证四个固定子阶段。服务端后续顺序已收紧为 @@ -241,14 +241,16 @@ T-106 第一态只读取证已于 2026-08-06 完成。脚本重新核对设备 “提交订单 ¥32.76”;点击该红色控件会立刻创建待付款订单并进入付款界面,并不存在原计划中可安全 先进入的独立确认页。项目所有者确认本次未点击、未创建订单、未进入付款,并批准“同一最终面板、 两个独立金额位置”方案:顶部金额继续承担 Gate2,最终控件结构化金额承担 Gate3,二者必须分别唯一、 -严格相等且不超上限;Gate3 不得回流 Gate1/Gate2。现在只需人工按一次 Back 后运行返回态只读命令: +严格相等且不超上限;Gate3 不得回流 Gate1/Gate2。一次人工 Back 后的返回态只读命令也已完成: ```powershell .\client\.venv\Scripts\python.exe client\scripts\capture_order_confirm_spike.py --serial 192.168.0.173:5555 --goods-id 937122477375 --state returned-safe-page --output-dir "$env:LOCALAPPDATA\cmbuyer\artifacts\T-106\returned-safe-page-937122477375" --timeout 10 --adb D:\Portable\adb\adb.exe ``` -红色控件仍不得点击。T-106 保持 `DOING`,等待项目所有者确认一次 Back 回到同一商品安全页且未创建订单、 -未进入付款;随后 T-107 固化零页面点击的 Gate3 observer 和一次安全 Back。 +返回态 screenshot/XML/App/manifest 的 SHA-256 均与 manifest 一致;截图与 XML 显示同一商品详情 +安全页,恢复“快要抢光 ¥12.88 / 免拼购买”,不再出现“提交订单”。项目所有者确认只按一次系统 +Back、未点击提交订单、未创建待付款订单、未进入付款/安全验证/外部页面。T-106 已完成;随后 T-107 +固化零页面点击的 Gate3 observer 和一次安全 Back。红色控件仍不得点击。 ## 关键背景 @@ -270,8 +272,8 @@ T-106 第一态只读取证已于 2026-08-06 完成。脚本重新核对设备 3. **授权卡死**:前序项目出现过 `EXECUTING` 授权永不推进导致任务锁死。本项目在 T-207 实现围栏前超时 / 放弃,在 T-208 实现围栏后调和;围栏后不得释放或重试。 4. **独立确认页前提已被推翻并重定值**:T-106 第一态证明“提交订单 ¥32.76”会直接创建待付款订单。 - 已批准 Gate2 顶部总额与 Gate3 最终控件金额的同面板独立交叉校验;控件仍禁止点击,T-107 前还需 - 一次人工 Back 返回证据。历史 `confirm_amount/confirm_page_amount` 必须在 T-210/T-208 前迁移。 + 已批准 Gate2 顶部总额与 Gate3 最终控件金额的同面板独立交叉校验;一次人工 Back 返回证据已完成, + 控件仍禁止点击。历史 `confirm_amount/confirm_page_amount` 必须在 T-210/T-208 前迁移。 5. **MVP 已收窄**:只做手工填链接、批量开始采购和单趟创建待付款订单。Excel、ERP、图搜、 批量顺序编排 / 暂停接管、订单自动核对、AI 辅助全部推到 V2(见 `06-tasks.md` 的 T-501~T-508)。 diff --git a/docs/tasks/T-106.md b/docs/tasks/T-106.md index 55595ff..bb303de 100644 --- a/docs/tasks/T-106.md +++ b/docs/tasks/T-106.md @@ -3,7 +3,7 @@ id: T-106 title: 合并式最终提交面板、闸门三与返回路径真机取证 phase: 1 deps: [T-105] -status: DOING +status: DONE created: 2026-08-04 vikunja_task_id: 41 context_ref: db2b781 @@ -37,7 +37,7 @@ write_paths: - docs/current-state.md --- - + ## 问题 / 背景 2026-08-06 真机证据证明:拼多多 8.17.0 的当前采购界面不存在“规格面板 → 独立订单确认页”导航。目标规格与数量设置后,同一合并式最终提交面板已经显示地址、支付方式、顶部 Gate2 总额和红色“提交订单 ¥金额”;点击该红色控件会立即创建待付款订单并进入付款界面。原四态方案已安全停止。 @@ -103,6 +103,14 @@ T-106 第一态真机事实(拼多多 8.17.0、PKG110/Android 16、goods_id 93 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。 ## 边界 @@ -110,24 +118,23 @@ T-106 第一态真机事实(拼多多 8.17.0、PKG110/Android 16、goods_id 93 - 2026-08-06 第一态真机证据与项目所有者确认推翻了“规格面板后还有独立确认页”的前提:当前规格 面板已经显示地址、支付方式和唯一“提交订单 ¥32.76”,点击会立刻创建待付款订单并进入付款界面。 项目所有者随后批准“同一最终面板、两个独立金额位置”方案:Gate2 仍是顶部总额,Gate3 只读最终 - 控件金额,二者必须唯一、严格相等且不超上限。下方原四态边界保留为被真机事实阻断的审计记录; - 现在只允许既有第一态和一次人工 Back 后的返回态,红色控件仍绝对禁止点击,不放宽提交四条件。 + 控件金额,二者必须唯一、严格相等且不超上限。原四态方案已被真机事实终止;现在只允许既有 + 合并式最终面板态和一次人工 Back 后的返回态,红色控件仍绝对禁止点击,不放宽提交四条件。 - 本任务只实现和运行只读取证能力:设备/App 摘要、`app_current`、screenshot、`compressed=false` XML、 hash 与原子 manifest。代码中不得出现 click、press/back、swipe、input、intent 或其他 UI 修改 API, 不得自动进入或退出确认页,也不得从前序项目、旧 XML 或推理写生产判据。 -- 确认页、最终提交控件可见态和一次返回后的页面都由人手工准备;人不得点击最终“提交订单”控件。 - 一次返回结果不明时不得再次按 Back。agent 只采集已准备状态,不远程替人执行这些动作。 -- 人工验收必须明确规格、数量、应付总额、最终控件精确文案/匹配数/启用态和返回后的页面身份; - 本任务只记录真机事实,不把文案、坐标、节点或 selector 批准为生产能力。 -- 取证必须包含四个稳定状态:闸门二通过后的**确认页导航前**页面、确认页闸门三、最终提交控件 - 可见态、一次返回后页面。人还需记录从第一态进入第二态时实际只点击的精确控件文本/容器及当时 - 匹配数量;agent 不执行该点击。缺少来源态时,T-107 不得仅凭“已到确认页”反推导航控件。 -- 规格面板中出现的“提交订单 ¥...”不得凭文案推断为确认页导航或最终提交控件。任何确认页入口、 - 金额节点、最终控件和返回后置条件都必须等 T-107 从本任务已确认的证据中最小化固化。 +- 合并式最终面板与一次返回后的页面都由人手工准备;人不得点击最终“提交订单”控件。一次返回 + 结果不明时不得再次按 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。只有人确认四组证据对应、一次返回安全、未点击最终提交、 +- `needs_device: true`:agent 不得自行标 DONE。只有人确认两组证据对应、一次返回安全、未点击最终提交、 未创建订单且未进入支付相关页面,任务才可完成。