📚 离职知识库

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>

正文结构(结论先行):

  1. 一句话结论
  2. 线上链接 + 「用统一访问密码进」的提示
  3. 完成度表(七个阶段)
  4. 三条最需要你拍板的事
  5. blockers 摘要(🚨 的放最前)
  6. GitHub 仓库链接
  7. 「详细报告在仓库的 docs/night/

⛔ 邮件里不许出现任何密钥明文。

来源:沉淀/03-项目方案与交接/接棒-通宵施工包-20260731/07-验收包模板.md(整理于 2026-08-18)