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

89 lines
9.6 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-404
title: 完整 MVP 只读验收
phase: 4
deps: [T-401, T-402, T-403, T-405]
status: TODO
created: 2026-08-04
vikunja_task_id: 54
context_ref: 8600c33
work_branch: task/t-404-mvp-acceptance
needs_device: true
needs_human_review: true
write_paths:
- docs/tasks/T-404.md
---
<!-- BEGIN VIKUNJA EXPORT id=54 synced=2026-08-04T15:16:26Z sha256=3d2e1900e156174e8389af5ef372af9f94be7f719c39432eaf2ea42f4a38d311 -->
## 问题 / 背景
T-401 提供唯一一次真实提交与人工调和证据,T-402/T-403 提供待付款人工收口、失败归档和同一 submission 调和,T-405 提供可核验 Windows 交付包。T-404 是 MVP 的最终只读验收任务:对同一候选 commit、服务端、客户端、真机记录和实际 ZIP 做完整 P0 复核,不承载任何修复。发现缺陷必须退回对应任务修正并重新形成候选版本,不能在验收任务中顺手改代码、契约、安全边界或共享文档。
## 关联需求与交互
- 功能:全部 MVP P0,重点 F-001、F-004、F-005、F-006、F-007、F-008、F-010、F-011、F-013、F-017、F-018。
- 用户故事:US-001~US-008、US-010。
- 交互:IX-001~IX-012 中适用于 MVP 的全部条目。
- 依赖:T-401、T-402、T-403、T-405。
- 本任务 needs_device=true 且 needs_human_review=true;agent 只能整理和运行可逆的只读/测试检查,最终结论和 DONE 只能由人确认。
## 方案
1. 冻结候选 git commit、admin/client 版本、数据库 migration 版本、T-405 ZIP 路径/SHA-256/完整依赖 manifest 和测试环境。验证期间源码、依赖集合或产物 hash 变化即作废本轮结论,回原任务修复后从头验收。
2. 建立 P0 trace matrix,把每个功能、用户故事和交互映射到自动化测试、人工 UI 检查、T-101~T-107/T-305 真机证据或 T-401 首次真实提交记录。缺项不能用“代码已完成”代替。
3. 采购服务检查登录/CSRF、DRAFT 创建与倒序列表、筛选/批量选择、开始采购一次性授权、设备身份隔离、claim/lease、events/evidence、三闸门围栏、UNKNOWN result、同一 submission 调和、WAITING_PAYMENT 和人工付款事实记录。围栏后任何页面均无重试/释放/重新授权。
4. 采购工具检查固定双 Tab、配置/DPAPI/单实例、轮询停止边界、当前任务/日志/历史详情、同一趟规格/数量/三闸门、严格 HTTP/localstate、一次性 permit/点击意图和 T-400 编排。静态调用图必须只有 T-401 一个低层提交点击点且无付款能力。
5. 复核 T-401 人工记录:项目所有者一次性批准、设备/Android/连接方式/拼多多版本/goods_id、task/authorization/attempt/submission、三闸门、首次 fence permit、点击意图先落盘、低层点击恰好一次、无重试、无点击后截图/XML、UNKNOWN/RECONCILIATION_REQUIRED、T-403 结论、订单处置和未付款。
6. T-404 不再创建第二笔真实订单、不再次点击“提交订单”。真机部分只复核既有 T-401 原始记录。T-405 包的无设备验收只允许启动/关闭、静态配置检查,以及向精确 loopback 采购服务调用已经由服务端实现并证明无业务副作用的 GET /healthz;该请求不得携带设备 Bearer、管理 session 或 CSRF,也不得读取/修改任务、授权、attempt、evidence 或 submission。
7. 严禁把 claim-next、lease renew、evidence、events、attempt fail、submission fence、submission result、管理员任务动作或任何其它业务 API 当作“连接健康检查”。即使使用测试 token、空任务或声称只看响应,也不得从 T-405 包调用这些端点探测,因为它们可能创建幂等事实、领取任务或推进状态。
8. 无设备包验收不得运行 adb.exe、adb devices、uiautomator2、设备连接检查、serial 探测或任何 Android/PDD 命令。ADB 路径/serial 保持未配置,进程/日志必须证明零 ADB、零 claim、零真机动作;需要设备的事实只复核 T-401 已有人工记录。
9. 复核 T-402 时自动化只用本地 fixture;没有人在真实订单上实际付款时,不得为了验收把生产任务标为 SUCCEEDED。WAITING_PAYMENT 是正常未付款状态,不等于失败,也不等于采购完成。
10. 用 T-405 实际 ZIP 在脱离源码、无 Python 的 Windows 环境验证 SHA-256、commit、完整直接依赖版本、解压、启动、配置、运行数据目录、升级/卸载说明和无设备安全失败;确认包内没有 token、env、本地状态、日志、证据、tests、XML 或仓库元数据。
11. 运行完整双端门禁:Go test/race/vet/build、client unittest/compileall/wheel metadata、打包专用校验、根 init、agent-context、Vikunja export check、git diff check。业务 API 只由隔离数据库/fixture 的自动测试覆盖,不通过实际打包客户端做“探测”;测试不连接支付或外部资金路径。
12. 验收执行记录只写测试命令、退出码、P0 matrix 结论、证据路径/hash 和人工确认,不复制 token、地址/手机号、支付凭据、完整 XML 或原始截图。任何失败均记录 owning task 和复现命令,T-404 保持 DOING/TODO,等待原任务修复。
## 验收要点
- 所有依赖均按 git frontmatter 为 DONE;T-401/T-405 的人工记录、真实 ZIP、完整依赖 manifest 与候选 commit/hash 完整一致。
- P0 功能/故事/交互全部有自动化或明确人工证据;不存在 WAITING_CONFIRMATION、第二趟授权、AI/V2 能力或未取证页面判据混入 MVP。
- 三道价格闸门、提交四条件、首次许可、点击意图先落盘、底层点击恰好一次、异常后零重试和围栏后只调和均有测试与 T-401 人工证据。
- 静态检查证明支付、免密支付、先用后付、扣款控件、人工提交按钮、通用远程 selector/坐标和第二提交调用点不存在。
- 采购服务 375/768/1024/1440 px 与采购工具 compact/medium/wide、键盘、焦点、错误/空态/离线/结果不明、深浅色/高对比人工验收通过。
- T-405 ZIP 在运营 Windows 环境按文档运行,SHA-256/commit/依赖版本匹配,包内容和运行目录安全。无设备验收最多调用 GET /healthz,服务端任务/授权/attempt/evidence/submission 事实前后不变;没有业务 API 请求、ADB 进程或设备连接。
- 完整门禁全部 exit 0,仓库无本任务造成的代码/共享文档改动、无秘密/真机证据进入 Git。若有缺陷,必须回对应任务修复并重新跑全套。
- 最终 DONE 只能由项目所有者在人审 P0 matrix、T-401 真机记录、T-405 产物和无付款证明后明确给出;agent 不得自行 DONE。
## 执行记录
(暂无)
<!-- END VIKUNJA EXPORT -->
## 边界
- 本任务是最终只读验收,不实现或修复任何生产代码、测试、迁移、契约、页面判据、UI、构建脚本
或共享文档;唯一允许写入的仓库文件是本任务执行记录/status。发现缺陷必须退回 owning task 修复,
重新冻结候选 commit/产物并从头验收,不能在 T-404 顺手修改。
- 验收只针对一个精确候选 git commit、数据库 migration 集、admin/client 版本和 T-405 ZIP SHA-256。
源码、依赖、任务定义或产物 hash 任一变化都使本轮结论失效,不能拼接不同版本的测试证据。
- T-404 不再创建第二笔真实订单、不再次点击“提交订单”。真机提交证据只复核 T-401 已由项目
所有者批准的唯一真实运行;T-405 包验收不得重新执行围栏前 dry-run 或任何设备流程。
- T-405 包的无设备验收只允许启动/关闭、静态配置检查,以及向精确 loopback 采购服务调用已经由
服务端实现并证明无业务副作用的 `GET /healthz`。该请求不得携带设备 Bearer、管理员 session 或
CSRF,且服务端 task/authorization/attempt/evidence/submission 事实前后必须完全不变。
- 严禁使用 `claim-next`、lease renew、evidence、events、attempt fail、submission fence、submission
result、管理员任务动作或任何其它业务 API 做“连接健康检查”;测试 token、空任务或只看响应都不
构成例外,因为这些接口可能创建幂等事实、领取任务或推进状态。
- 无设备包验收不得运行 `adb.exe`、`adb devices`、uiautomator2、serial/设备连接检查或任何
Android/PDD 命令。ADB 路径和 serial 保持未配置,并以进程/日志证明零 ADB、零 claim、零真机动作;
needs_device 事实只复核 T-401 已有人工记录。
- 不得为了测试 T-402 而要求或模拟真实付款;自动化只用隔离 fixture。没有人实际付款时不得把生产
任务标为 `SUCCEEDED`,`WAITING_PAYMENT` 是正常未付款状态,不等于失败或采购完成。
- P0 验收必须逐项关联功能、用户故事、交互与自动/人工证据。缺项、失败、版本漂移、未知页面判据、
真机记录不全、ZIP/hash 不一致或付款边界无法证明时均不得通过,也不能用“代码已完成”替代证据。
- 完整门禁和静态调用链必须证明三道价格闸门、提交四条件、首次 permit、点击意图先落盘、低层点击
恰好一次、异常后零重试、围栏后只调和,以及支付/免密/先用后付/扣款能力不存在。
- 执行记录不得复制 token、地址/手机号、支付凭据、完整 XML、原始截图或本机秘密;只记录命令、
退出码、非敏感证据路径/hash、P0 结论和人工确认。真实证据仍留受控本地/服务端位置。
- `needs_device: true` 与 `needs_human_review: true`:最终 `DONE` 只能由项目所有者在人审 P0 matrix、
T-401 真机记录、T-405 产物和无付款证明后明确给出;agent 不得自行确认或标 `DONE`。