# 上线检查清单

> 百炼成 Builder · https://pm.leishenai.eu.cc
> 用法：每次上线过一遍。**有一项打不了勾，就不叫上线，叫赌博。**

## 一、功能

- [ ] 核心任务在生产环境跑通（不是本地跑通）
- [ ] 三态齐：正常 / 空态 / 错误态
- [ ] 手机上能用（不是能打开，是能完成任务）
- [ ] 最小测试集全绿，含「模型故障走降级」这一条

## 二、安全

- [ ] 模型 API Key 只在服务端环境变量，前端代码里搜不到
- [ ] 每个接口都做了服务端鉴权（前端拦人是体验，服务端拦人才是安全）
- [ ] 越权测试做过：拿 A 的身份去读 B 的数据，读不到
- [ ] 错误信息不外泄堆栈、路径、内部字段名

## 三、成本

- [ ] 知道单次任务成本 ≈ ___ 元
- [ ] 设了用量上限或告警阈值（日均 > 预算 120% 报警）
- [ ] 想过被刷的情况：限流 / 验证 / 配额，至少有一道

## 四、观测

- [ ] 三块表齐：错误率、P95 延迟、每日成本
- [ ] 有 trace_id，能按一次任务回放五层链路
- [ ] 每条告警都能回答「收到的人要做什么动作」，答不上的已删掉
- [ ] 出事时我从哪里开始看 —— 写下来：______

## 五、回滚

- [ ] 上一个可用版本是哪个：______
- [ ] 回滚动作是什么：______
- [ ] **演练过一次**，实测耗时 ___ 分钟
- [ ] 降级预案写清了：先砍 ______，保 ______，并告知用户「精简模式运行中」

---

## 上线记录

| 日期 | 版本 | 五组是否全绿 | 上线后 24 小时异常 | 处理 |
|------|------|-------------|------------------|------|
| | | | | |

> 用户能接受降级，不能接受装没事然后给他错答案。
