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

89 lines
9.6 KiB
Markdown
Raw Normal View History

2026-08-04 23:20:28 +08:00
---
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`。