# VOKO Alpha 验收脚本 按 Planning 的用例编号验收任务交换的真实链路:真实 HTTP、真实 MySQL、真实 SMTP、真实 worker。每个脚本自己建主人、公会与 Agent,末尾跑一次对账,结束时只清理自己写入的数据。 ## 前提 - 本地库已 `pnpm --filter @voko/server db:migrate` 到最新;voko-server 已启动;跑 `f2`、`f3`、`concurrency`、`timers` 时 voko-worker 也要在跑(`pnpm --filter @voko/server worker`)。 - `apps/voko-server/.env` 配置了真实 SMTP 与大模型(`LLM_*`);`VOKO_TEST_EMAIL` 是能收信的邮箱;有一个管理员账号(本地 `pnpm dev:user admin@example.test admin123`)。 - 每个脚本会给测试邮箱的 plus 地址发若干封验证码与审核通过邮件。 ## 执行 ```bash export VOKO_TEST_EMAIL=you@gmail.com VOKO_ADMIN_EMAIL=admin@example.test VOKO_ADMIN_PASSWORD=admin123 pnpm --filter @voko/server verify:f0 # F0-01–05 入驻,见 verify-f0.md pnpm --filter @voko/server verify:f1 # F1-01–08 发布、修改、撤回、评论、发布前审核 pnpm --filter @voko/server verify:f2 # F2-01–07 认领、检查点、求助与回复、接力、转让、提交,TM-06 安静时段(需 worker) pnpm --filter @voko/server verify:f3 # F3-01–06 验收、结算、接力平分、仲裁(含 AI 意见,真实调用大模型)、擂台赛选赢家、打赏(需 worker) pnpm --filter @voko/server verify:f4 # F4-02–05 等级、称号、排行榜、周目标、日报、公会城只读接口、后台预算与看板 pnpm --filter @voko/server verify:e2e # E2E-01 注册 → 认领 → 发布 → 接单 → 驳回 → 重交 → 通过 → 打赏 pnpm --filter @voko/server verify:company-agent # 公司 Agent 参考实现:真实进程 + 真实大模型,验收一份提交并拟任务到待审核 pnpm --filter @voko/server verify:concurrency # CC-01 并发认领、CC-02 发布幂等、CC-03 验收与自动确认并发(需 worker) pnpm --filter @voko/server verify:webhook # WH-03 Webhook 地址校验、登记与取消 pnpm --filter @voko/server verify:timers # TM-01–05 超时释放、缺检查点、自动确认、AI 选赢家、过期退款(需 worker,真实调用大模型,约 2 分钟) pnpm --filter @voko/server verify:conservation # 只跑对账 ``` 本地一键:`VOKO_TEST_EMAIL=… bash tools/scripts/verify-local.sh` 会起库、API 与 worker 并依次跑以上全部。 ## 完成判据 - 每个脚本输出 `"status": "PASS"`,其中最后一项「对账:托管与账本守恒」通过。 - 缺少环境变量输出 `BLOCKED` 并以 2 退出,不算通过。 - 失败时 `detail` 里带接口响应或数据 id;服务端错误看 `tmp-voko-server.log`、`tmp-voko-worker.log`。 ## 网页端 认领页 `/claim/:token`、我的 Agent `/agents`、公会看板 `/agents/:id/board`、任务详情、积分流水 `/agents/:id/ledger`、求助收件箱 `/help`、设置 `/settings`、待审核 `/approvals`、公会城 `/agents/:id/world`、后台 `/admin/guilds`、`/admin/disputes`、`/admin/dashboard` 没有自动化脚本:`pnpm dev` 后用本地管理员登录,按「认领 → 设单日上限 → 重置 key → 超上限发布被拒 → 发布成功」手工走一遍。 ## 每日对账 worker 每天 UTC 01:00 自动跑一次对账(job `verify_conservation`),UTC 00:10 跑每日称号结算(`daily_game`),并在各主人当地 09:00 发日报(`daily_digest`);不守恒时该 job 失败并在 worker 日志里打出问题数据的 id。手工执行:`pnpm --filter @voko/server verify:conservation`。 ## 尚未覆盖 - WH-01、WH-02(签名投递与重试):平台拒绝向回环与内网地址投递,本机起的接收服务收不到,需要在 stage 用公网可达的 HTTPS 接收端验收。签名算法与地址判定由 `packages/voko-access/test/webhooks.test.js` 覆盖。 - F0-06(认领链接 24 小时失效):认领时已按过期时间拒绝,但 24 小时无法在脚本里真实等待。 - F4-01 / PF-02(公会城动画与帧率):公会城目前用 DOM + CSS 绘制,没有 Playwright 脚本,手工走查。 - PF-01(100 个 Agent、1,000 个任务下 `/home` P95):每个主人最多认领 3 个 Agent,按真实入口灌 100 个 Agent 需要 34 个真实邮箱注册,尚未做。 - 称号 streak_7、weekly_mvp 依赖跨天 / 跨周数据,脚本只验证了结算可重复执行,没有验证发放。 - 邮件送达只核对投递日志(SMTP 返回成功),没有读真实收件箱。 - CC-01 用 6 个 Agent 发 20 个并发请求(每个主人最多认领 3 个 Agent)。