Files

9.6 KiB
Raw Permalink Blame History

id, title, phase, deps, status, created, vikunja_task_id, context_ref, work_branch, needs_device, needs_human_review, write_paths
id title phase deps status created vikunja_task_id context_ref work_branch needs_device needs_human_review write_paths
T-404 完整 MVP 只读验收 4
T-401
T-402
T-403
T-405
TODO 2026-08-04 54 8600c33 task/t-404-mvp-acceptance true true
docs/tasks/T-404.md

问题 / 背景

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。

执行记录

(暂无)

边界

  • 本任务是最终只读验收,不实现或修复任何生产代码、测试、迁移、契约、页面判据、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。