diff --git a/docs/current-state.md b/docs/current-state.md index bec3146..265d2bd 100644 --- a/docs/current-state.md +++ b/docs/current-state.md @@ -11,8 +11,8 @@ ## 当前快照 -- 日期:2026-08-05 -- 阶段:**Phase 1 · T-105 数量设置取证与 Phase 2 安全服务端任务并行** +- 日期:2026-08-06 +- 阶段:**Phase 1 · T-106 确认页只读取证与 Phase 2 安全服务端任务并行** - MVP 形态:手工填链接建单 → 批量“开始采购”并签发一次性授权 → 定时领取 → 同一趟精确 选规格 / 三道价格闸门 / 提交围栏 / 点击一次 → 待付款。管理员点击“开始采购”即授权桌面端 创建待付款订单;不再有试选后确认,系统绝不自动付款。 @@ -62,7 +62,7 @@ | 路径 | 状态 | 说明 | | --- | --- | --- | | `docs/` | 已有 | 项目规范化文档,本次已完整生成 | -| `docs/tasks/` | 已有(含 T-001~T-111、T-201~T-211、T-301~T-308、T-400~T-405) | T-103、T-104、T-303、T-211 已完成;T-304 代码完成后保持 DOING 等人工 UI 复核;T-105 数量 1/2 两态只读取证代码已就绪,等待人工准备与确认两态;双端围栏、真实提交、调和、打包与只读验收均已落成任务 | +| `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 确认页只读取证依赖已解除;双端围栏、真实提交、调和、打包与只读验收均已落成任务 | | `docs/design/` | 已有(6 个原型) | web 登录 / 建单 / 工作台 / 详情,desk 采购执行 / 配置;均已人工确认 | | `scripts/` | 已有 | 上下文门禁、Vikunja 单向导出与 MCP 启动包装 | | `admin/` | 已初始化 | Go 1.23+ / gin / SQLite,含建单/授权/详情/证据/设备身份与原子 claim/renew;不执行真机动作 | @@ -85,16 +85,17 @@ - 已完成 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~T-107 继续按数量、确认页风险逐段开放。真机运行要求 + 人工真机验收;T-104 已完成同商品安全退出,T-105 已完成数量/Gate2,T-106~T-107 继续按确认页风险逐段开放。真机运行要求 同一物理手机只保留一个 ADB 通道;CLI 已增加不回显页面 正文的固定白名单失败阶段码;`sku_entry` 动态页面误判已按最新真机证据修复,覆盖点击中心的浮窗 会保持零点击,入口失败也已细分为前置、发现、点击和面板后置验证四个固定子阶段。服务端后续顺序已收紧为 T-210 → T-205 → T-206 → T-207 → T-208。 -- T-105 阶段一数量 1/2 两态 screenshot/XML/App/设备摘要已完成四项人工确认。真机证明同一规格 +- T-105 已完成。阶段一数量 1/2 两态 screenshot/XML/App/设备摘要已完成四项人工确认。真机证明同一规格 数量 1 面板金额为 `12.88`、数量 2 为 `32.76`,多件优惠非线性;Gate2 已改为唯一读取目标数量 面板总额并直接比较最高总价,后续 Gate3 必须与其严格相等。阶段二的一次加号、精确读回、Gate2 - 原始截图和 T-104 一次安全退出已实现并通过 330 项离线测试及完整 `init.ps1`;当前只等待人在数量 1 - 目标面板运行生产验收并确认结果。底部“提交订单”金额继续排除且禁止点击。 + 原始截图和 T-104 一次安全退出已实现并通过 330 项离线测试及完整 `init.ps1`。最终生产运行精确 + 完成一次加号与一次 Back,项目所有者确认数量 2、目标规格、`12.88/32.76`、同商品安全退出,且未进入 + 确认/提交/支付页、未创建订单。底部“提交订单”金额继续排除且禁止点击;T-106 依赖已解除。 - T-303 已完成并通过三重审查;T-304 的轮询会话、配置页和固定双 Tab 主界面已通过两轮独立代码审计, 当前 255 项客户端测试与根门禁通过,继续保持 `DOING` 等原生 Windows DPI、主题、高对比度、 Narrator 和纯键盘人工验收。客户端后续按依赖推进 T-306/T-307/T-308,再与 T-305 汇合到 @@ -212,7 +213,7 @@ T-105 阶段一只读取证命令如下。脚本不打开页面,也不点击 `12.88 → 32.76`。旧 `gate2_unit_price` 语义已废止,T-210/T-205 消费前必须把 API/存储迁移为 `gate2_panel_total_price`,迁移未完成不得建立提交围栏。 -T-105 阶段二生产验收只允许在人工确认的同一手机、拼多多 `8.17.0`、目标颜色/尺码和数量 1 面板运行。 +T-105 阶段二生产验收已在人工确认的同一手机、拼多多 `8.17.0`、目标颜色/尺码和数量 1 面板完成。 脚本自己只点一次证据绑定的数量加号到 2,读回 `32.76`、保存 Gate2 原图并执行一次安全 Back;不打开 确认页,不点击底部“提交订单”,不创建订单。输出目录必须不存在: @@ -220,8 +221,9 @@ T-105 阶段二生产验收只允许在人工确认的同一手机、拼多多 ` .\client\.venv\Scripts\python.exe client\scripts\run_t105_quantity_gate2.py --serial 192.168.0.173:5555 --goods-id 937122477375 --color "黑色CHA(纯棉)" --size "M(建议100-115)" --target-quantity 2 --gate1-unit-price 12.88 --gate1-screenshot "$env:LOCALAPPDATA\cmbuyer\artifacts\T-105\quantity-initial-937122477375-20260806-v3\screenshot.png" --gate1-captured-at "2026-08-06T00:53:00.023935+00:00" --max-total-price 40.00 --output-dir "$env:LOCALAPPDATA\cmbuyer\artifacts\T-105\quantity-gate2-live-937122477375-20260806" --timeout 10 --adb D:\Portable\adb\adb.exe ``` -运行后由人确认:数量精确为 2、颜色尺码未变、Gate1/Gate2 分别为 `12.88/32.76`、Gate2 截图正确、 -一次 Back 回到同一商品详情,且未进入确认/提交/支付页、未创建订单。确认前 T-105 保持 `DOING`。 +成功证据目录为 `%LOCALAPPDATA%\cmbuyer\artifacts\T-105\quantity-gate2-live-937122477375-20260806`; +项目所有者已确认数量精确为 2、颜色尺码未变、Gate1/Gate2 分别为 `12.88/32.76`、Gate2 截图正确、 +一次 Back 回到同一商品详情,且未进入确认/提交/支付页、未创建订单。该命令只作已验运行记录,不再重跑。 ## 关键背景 @@ -242,8 +244,8 @@ T-105 阶段二生产验收只允许在人工确认的同一手机、拼多多 ` 2. **拼多多页面结构随版本变化**,已观察到详情页无独立规格入口、价格节点被拆分等情况。 3. **授权卡死**:前序项目出现过 `EXECUTING` 授权永不推进导致任务锁死。本项目在 T-207 实现围栏前超时 / 放弃,在 T-208 实现围栏后调和;围栏后不得释放或重试。 -4. **数量能力仍未开放**:T-104 已完成同商品连续稳定安全退出;T-105 必须先取得本项目数量控件与 - readback 的真机证据,不能从旧项目或推理直接实现加减数量。 +4. **确认页能力仍未开放**:T-105 已按本项目真机证据开放数量 1→2、readback 与 Gate2;确认页导航、 + Gate3 和最终控件仍必须依次等待 T-106/T-107 取证,不能从旧项目或推理直接实现。 5. **MVP 已收窄**:只做手工填链接、批量开始采购和单趟创建待付款订单。Excel、ERP、图搜、 批量顺序编排 / 暂停接管、订单自动核对、AI 辅助全部推到 V2(见 `06-tasks.md` 的 T-501~T-508)。 diff --git a/docs/tasks/T-105.md b/docs/tasks/T-105.md index 85db474..13e0fd2 100644 --- a/docs/tasks/T-105.md +++ b/docs/tasks/T-105.md @@ -3,7 +3,7 @@ id: T-105 title: 数量设置、读回与闸门二 phase: 1 deps: [T-104] -status: DOING +status: DONE created: 2026-08-04 vikunja_task_id: 40 context_ref: 67b4278 @@ -33,7 +33,7 @@ write_paths: - docs/current-state.md --- - + ## 问题 / 背景 T-104 将把规格选择、闸门一读价、原始截图和安全退出固化为受控能力。T-105 先对当前真机数量控件和读回位置取证,再实现规格面板内的数量设置、精确读回与闸门二;不进入确认页、不接触最终提交。 @@ -108,6 +108,10 @@ XML 允许字段摘要:数量节点为唯一 clickable/enabled EditText,`1 [ ### 2026-08-06T01:28:33Z · ila 2026-08-06 T-105 阶段二离线实现已完成并推送,代码 commit `21628a4`。从本项目两态证据提取最小 fixture,生产 Flow 只允许数量 1 零点击或数量 1→2 的唯一加号一次点击;每次 fresh 核验 PKG110 / Android 16 / PDD 8.17.0 / PDD 前台 / 1080×2376、目标颜色尺码、数量读回与顶部面板总额。数量 2 的 Gate2 事实为 `gate2_panel_total_price=32.76`,直接以 Decimal 比较 `max_total_price`;未使用 Gate1×数量推导 Gate2,底部“提交订单”金额不是候选,旧 gate2_unit_price 未进入生产代码。动作 RPC 前封存,超时/结果不明不重试;只有已知精确状态才执行 T-104 一次 Back,同商品详情需连续两帧稳定。模块不可达确认页、围栏、提交或付款。专项 32/32、客户端全量 330/330、compileall、agent-context、diff-check 与完整 init.ps1 均通过。下一步仅需项目所有者把目标面板手工恢复到数量1后运行生产验收;人工确认数量2、目标规格、12.88/32.76、Gate2 原图、一次安全退出,以及未进入确认/提交/支付页、未创建订单。任务保持 DOING。 + +### 2026-08-06T01:52:14Z · ila + +2026-08-06 T-105 最终生产真机验收完成。证据目录:`C:\Users\ila20\AppData\Local\cmbuyer\artifacts\T-105\quantity-gate2-live-937122477375-20260806`;manifest:同目录 `manifest.json`;captured_at `2026-08-06T01:33:33.818765+00:00`;Gate2 screenshot SHA-256 `6b52c73f933934d270f0c2f5c9e37c67f7fba443ce03340807a764f80a2bf299`。manifest 固定事实:PKG110 / Android 16 / WiFi / PDD 8.17.0 / goods_id 937122477375;数量请求与读回均为2;黑色CHA(纯棉)+M(建议100-115);Gate1 单价12.88;Gate2 面板总额32.76;最高总价40.00;加号1次且 completed;Back 1次且 completed;safe_exit=completed。项目所有者随后明确完成四项人工确认:Gate2 截图显示数量2、目标规格与顶部32.76;Back 后回到同一商品详情且面板关闭;未进入确认/提交/支付页;未创建订单且无异常操作。T-105 全部验收要点满足,达到条件即停止,不追加真机测试。 ## 边界