07 · 验收包模板
全部落在
~/personal/baton/docs/night/,最后一起 push。 人类明早只看00-一页纸总结.md+anti-cheat-report.md+git-log.txt三份,就要能判断这一夜是真做事还是刷绿灯。
#文件清单
| 文件 | 谁生成 | 说明 |
|---|---|---|
00-一页纸总结.md |
手写 | 给人看的唯一入口 |
ac-matrix.md |
scripts/make-ac-matrix.sh 从 progress.log 生成 |
⛔ 不许凭记忆手写 |
progress.log |
全程逐条追加 | 证据链原始数据 |
decisions.md |
P0 写 | 三个架构决策及其证据 |
deviations.md |
随时追加 | 所有偏离规格的地方 |
blockers.md |
随时追加 | 卡住的点,按严重度排序 |
worklog.md |
每 30 分钟一行 | 时间线流水账 |
anti-cheat-report.md |
scripts/anti-cheat-check.sh |
反作弊扫描结果 |
vps-health.md |
P6 | 服务器采证 |
git-log.txt |
git log 导出 |
供人工核对红绿节奏 |
coverage/ |
vitest run --coverage |
覆盖率 HTML |
vitest-results.json / playwright-results.json |
测试自动输出 | |
screenshots/ |
Playwright | 五页 + 交接流程 |
#1. 00-一页纸总结.md
# 接棒 Baton · 通宵施工总结
施工时间:2026-07-30 23:30 → 2026-07-31 08:30
线上地址:https://baton.saveme505.help(密码门,用统一访问密码)
仓库:https://github.com/LeoLee0812/baton
## 一句话结论
<例:"五个阶段全绿,交接闭环真跑通了;服务器 Agent 层因为 tky 正在闹负载风暴,我没敢动,只留了采证和操作单。">
## 明早先看这三样
1. https://baton.saveme505.help → 交接页 → 走一遍勾选到确认
2. docs/night/ac-matrix.md → 看哪些是 PASS 哪些是 PARTIAL
3. docs/night/blockers.md → 看有几件事要你拍板
## 数字
- AC:总 <N> | PASS <N> | PARTIAL <N> | BLOCKED <N> | SKIPPED <N>
- 测试:unit <N> / component <N> / integration <N> / e2e <N>,全绿:<是/否>
- 覆盖率:lines <X>% branches <X>%(阈值 55/50,<达标/未达标>)
- 反作弊扫描命中:<N> 条(0 为正常)
- commit:<N> 条,其中 test <N> / feat <N> / fix <N> / refactor <N> / chore <N>
## 做到哪了
| 阶段 | 内容 | 状态 | 说明 |
|---|---|---|---|
| P0 | 规格 + 建仓 + 测试基建 | ✅ | 八份规格,<N> 条 AC |
| P1 | 后台五页 + 上线 | | |
| P2 | 上传解析入库 + 检索 | | |
| P3 | 记忆条目 | | |
| P4 | 交接闭环 | | |
| P5 | 上线收口 + 导航站 | | |
| P6 | 服务器 Agent 层 | | |
## 需要你今天拍板的事
1. <例:Supabase service_role key 拿不到,现在用的是 publishable key + 全开 RLS,隔离只靠应用层。要不要给我一把 service key 换上去?>
2. <例:云雾 key 是从 english-daily 借的,要不要去后台建一把 baton 专属的?>
3. <例:tky 从昨晚 21:35 开始 load 一直在 100 上下,journald 崩了 3 次,监控脚本自己卡死了。这个得先处理。>
## 怎么验证这不是刷出来的绿
```bash
cd ~/personal/baton
head -40 docs/night/git-log.txt # 看 test→feat 交替节奏
bash scripts/anti-cheat-check.sh # 应退出 0
cat docs/night/ac-matrix.md
git log --all --oneline --grep="AC-5.2.4" # 挑一条 AC,看它的红绿两条 commit
npx vitest run --project integration # 自己跑一遍
---
## 2. `ac-matrix.md`(由脚本生成)
```markdown
# AC 完成矩阵
生成时间:2026-07-31 08:52
| Spec | AC | 摘要 | 状态 | 测试文件 | commit |
|---|---|---|---|---|---|
| 001 | AC-1.1.1 | 未登录重定向到 /login | PASS | tests/e2e/auth-gate.spec.ts | e4f5g6h |
| 005 | AC-5.2.4 | 未勾选内容对接手人不可见 | PASS | tests/integration/handover-scope.test.ts | 9k8j7h6 |
| 008 | AC-8.2.1 | 三个 Hermes profile | SKIPPED | — | 见 blockers #1 |
统计:PASS <N> / PARTIAL <N> / BLOCKED <N> / SKIPPED <N> / 未开始 <N>,总计 <N>状态定义(⛔ 不许含糊)
PASS— 有对应的绿色自动化测试PARTIAL— 部分满足,必须在deviations.md里说清差在哪BLOCKED— 试过但卡住,必须在blockers.md有对应记录SKIPPED— 主动跳过(如 P6 降级),必须写原因未开始— 时间不够,没碰
#3. blockers.md
# Blocker 记录(按严重度排序)
## 🚨 #1 · 东京 VPS 负载风暴(需要你立即处理)
- 时间:勘察于 2026-07-30 22:20,施工时 <T+x> 复查仍未恢复
- 现象:load average 107 / CPU steal 94% / journald 因 watchdog 崩溃重启 3 次 /
<HOME>/monitor/sysmon.log 从 22:15 起断更
- 已尝试:只做只读采证,未做任何变更
- 影响:P6 全部跳过(AC-8.* SKIPPED)
- 明早怎么处理:先看 sysmon.log 是否恢复;`<HOME>/monitor/postmortem.sh` 可能有现成的事后分析脚本
## ⚠️ #2 · <标题>
- 时间:
- 关联 AC:
- 现象:
- 已尝试:(至少三条,写清每条为什么不行)
- 结论:是实现问题还是环境/外部依赖问题
- 影响范围:
- 明早怎么处理:#4. deviations.md
# 规格偏离汇总
(拼接所有 specs/*/CHANGELOG.md,人类只看这一份即可掌握全部"和最初规格不一样的地方")
## Spec 002 摄取
### [T+3:14] AC-2.2.4 调整
- 原文:chunk 字符数落在 300–1000
- 改为:300–1200
- 原因:中文合同条款单句常超 1000 字,硬切会把条款切断,影响检索质量
- 影响测试:tests/unit/chunk.test.ts 上界同步调整
- 性质:工程判断(非为了让测试变绿而放水)#5. worklog.md
# 夜间工作流水
| 时间 | 在干什么 | 备注 |
|---|---|---|
| 23:30 | P0 开始,工具链自检 | node v22.22.2 ✅ |
| 00:00 | 三个决策点定完 | D1 走方案 B,见 decisions.md |
| 00:30 | 八份规格落盘 | 共 <N> 条 AC |
| ... | | |#6. decisions.md
# 架构决策记录(P0 定,全夜不改)
## D1 · Supabase 访问密钥与 RLS 方案
- 结论:<方案 A / 方案 B>
- 证据:<你实际查了哪些地方,命中/未命中>
- 影响:<对隔离能力的影响,README 要写什么>
## D2 · 原始文件存储
- 结论:<Vercel Blob / Supabase Storage / inline 降级>
- 证据:
- 影响:
## D3 · embedding key
- 结论:
- 证据:
- 影响:#7. 截图要求
docs/night/screenshots/ 下至少:
p1-overview.png 总览页
p1-kb.png 我的知识库
p1-memory.png 记忆条目
p1-handover.png 交接页
p1-records.png 记录页
p2-upload-progress.png 上传解析进度(状态文案可见)
p2-search-source.png 搜索结果带「第 X 页」出处
p4-handover-select.png 交接勾选中
p4-handover-done.png 接手人确认后的状态Playwright 截图片段:
await page.screenshot({ path: 'docs/night/screenshots/p1-overview.png', fullPage: true })⚠️ 截图不能代替断言。 只截图不断言的 E2E 会被反作弊脚本判违规(规则 7)。
#8. 邮件(P7 最后一步)
调用 email skill,发到 <邮箱>(发件人 claude@saveme505.help)。
主题:[接棒 Baton] 通宵施工报告 · <PASS N/总 N>
正文结构(结论先行):
- 一句话结论
- 线上链接 + 「用统一访问密码进」的提示
- 完成度表(七个阶段)
- 三条最需要你拍板的事
- blockers 摘要(🚨 的放最前)
- GitHub 仓库链接
- 「详细报告在仓库的
docs/night/」
⛔ 邮件里不许出现任何密钥明文。
来源:沉淀/03-项目方案与交接/接棒-通宵施工包-20260731/07-验收包模板.md(整理于 2026-08-18)