# 生产级发布清单

版本：3.0  
更新时间：2026-04-02

本清单用于发布前、发布后和对外表述前的最后核查。

## 0. PR 提交前检查（必须通过）

### 0.1 分支与提交

- [ ] 功能分支从 `main` 最新状态拉取
- [ ] 每个提交是可独立验证的最小单元
- [ ] 提交信息格式：`类型: 简短描述`

### 0.2 代码审查

- [ ] 至少 1 人完成代码审查
- [ ] 所有 🔴 阻塞问题已修复
- [ ] 所有 🟡 建议问题已有修复计划

### 0.3 验证矩阵

- [ ] 后端：`go test ./... -count=1` 通过
- [ ] 后端：`go vet ./...` 通过
- [ ] 后端：`go build ./cmd/server` 通过
- [ ] 前端：`npm.cmd run lint` 通过
- [ ] 前端：`npm.cmd run build` 通过
- [ ] 前端：`npm.cmd run test -- --run` 全绿（如改动前端代码）
- [ ] 真实浏览器 E2E：`npm.cmd run e2e:full:win` 通过（如涉及认证/导航/主流程）

### 0.4 文档

- [ ] PR 描述包含变更目的、验证命令及结果、影响范围
- [ ] API 文档已更新（如改动 API）
- [ ] `docs/status/REAL_PROJECT_STATUS.md` 已同步更新（如改变真实结论）

---

## 1. 发布前必须完成

### 1.1 代码与构建

- [ ] `go test ./... -count=1`
- [ ] `go vet ./...`
- [ ] `go build ./cmd/server`
- [ ] `cd frontend/admin && npm.cmd run lint`
- [ ] `cd frontend/admin && npm.cmd run build`

### 1.2 真实浏览器验证

- [ ] `cd frontend/admin && npm.cmd run e2e:full:win`
- [ ] 本轮改动涉及认证、路由、导航、弹窗、防线或主流程时，不得跳过真实浏览器回归

### 1.3 运行时规则核查

- [ ] 非测试代码中无 `panic`
- [ ] 运行时无 mock provider / fake success 路径
- [ ] `smoke` 仅用于诊断，不是运行时依赖
- [ ] 敏感接口仍带 `no-store` 等防缓存头
- [ ] 邮件、短信、文件上传、外部调用均为 fail closed

### 1.4 配置与安全核查

- [ ] release 模式下无占位密钥
- [ ] release 模式下无 localhost OAuth 回调
- [ ] release 模式下无 `*` CORS 放行
- [ ] 真实密钥来自环境变量或密钥管理系统

## 2. 可选但建议同时检查

- [ ] `cd frontend/admin && npm.cmd run test:run`
- [ ] 已同步检查 `docs/status/REAL_PROJECT_STATUS.md`
- [ ] 已同步检查是否需要补证据文档

## 3. 不能夸大的结论

满足本清单，不等于自动满足以下结论：

- [ ] 完整 OS 级自动化已闭环
- [ ] 真实第三方 OAuth live 验证已闭环
- [ ] 外部 Secrets/KMS 已闭环
- [ ] 多环境 CI/CD 密钥分发已闭环
- [ ] 跨历史版本 schema downgrade 回滚证据已闭环

如果上述材料未齐备，必须在发布说明中明确列为剩余缺口。

## 4. 当前项目的主验收路径

当前受支持的真实浏览器主验收路径：

```powershell
cd D:\project\frontend\admin
npm.cmd run e2e:full:win
```

当前可诚实表述的边界：

- 已完成浏览器级真实 E2E 收口
- 未完成完整 OS 级自动化收口

## 5. 发布后 30 分钟内检查

- [ ] 核心登录/登出链路正常
- [ ] 后台主导航正常
- [ ] 关键日志无新增异常
- [ ] 无异常弹窗、popup、page error、401 回归
- [ ] 健康检查正常：
  - `GET /health`
  - `GET /health/live`
  - `GET /health/ready`
