# 开源版发布前检查清单

本文档用于 `M12` 正式收尾阶段，帮助维护者在对外发布前快速确认：

- 当前仓库是否已经达到“可阅读、可运行、可验证”的基础状态
- 哪些能力已经纳入开源版范围
- 发布前至少要跑哪些检查
- 发布说明里应该明确哪些边界

这份清单不追求“大而全”，只服务当前开源版最小闭环。

## 一、先确认当前开源版边界

发布前先确认 README、文档和对外说明都没有越界承诺。

当前开源版已包含：

- `web / admin / server` 三端 monorepo
- `admin / viewer` 最小角色边界
- 双语标准简历内容模型
- 草稿 / 发布分离
- `Markdown / PDF` 导出
- `light / dark` 主题基线
- AI 文件提取、分析、结构化建议、模块级 diff / apply

当前开源版明确不包含：

- JD 多版本简历
- 多模板简历系统
- 多租户 SaaS 能力
- AI 任务中心 / 历史中心
- 复杂审批流与协作后台

## 二、环境变量检查

发布前至少确认以下变量已经准备好：

- `JWT_SECRET`
- `DATABASE_URL`
- `NEXT_PUBLIC_API_BASE_URL`
- `RESUME_API_BASE_URL`
- `AI_PROVIDER`
- 对应 Provider 的密钥与模型配置

建议基于根目录 `/.env.example` 检查一次：

1. 本地开发变量是否可用
2. 生产环境变量是否已经单独准备
3. 示例密钥是否没有误提交

## 三、基础质量门禁

正式发布前建议至少通过：

```bash
pnpm test:ci
pnpm typecheck:all
pnpm build:all
```

如果只是文档或说明性改动，至少确认：

```bash
pnpm build:all
pnpm typecheck:all
```

## 四、本地最小人工验收

### 1. 三端可正常启动

至少确认以下端口能访问：

- `web`：`http://localhost:5555`
- `admin`：`http://localhost:5566`
- `server`：`http://localhost:5577`

### 2. 公开展示端

至少确认：

- 已发布简历能正常读取
- `zh / en` 切换正常
- `light / dark` 切换正常
- `Markdown / PDF` 下载入口可见

### 3. 后台管理端

至少确认：

- 登录页正常打开
- `admin` 可进入控制台与 AI 工作台
- `viewer` 进入后保持只读
- 草稿保存与手动发布链路可用

### 4. AI 最小闭环

至少确认：

- 文件提取能把文本同步到分析输入区
- 可生成分析结果
- 可生成结构化建议稿
- 可查看模块级 diff
- 可按模块 apply
- apply 后草稿快照会即时刷新

## 五、默认演示账号说明

如果仓库当前仍保留默认演示账号，发布说明中要明确：

- 这些账号仅用于本地演示和教程复现
- 对外部署前必须自行替换

当前默认演示账号为：

- `admin / admin123456`
- `viewer / viewer123456`

## 六、部署前确认

在真正推送到部署平台前，再检查一遍：

- `web / admin` 的构建根目录是否正确
- `server` 的生产环境变量是否已配置
- `CORS_ORIGINS` 是否包含真实前端域名
- `NEXT_PUBLIC_API_BASE_URL` 与 `RESUME_API_BASE_URL` 是否指向真实后端
- 数据库路径或远程库连接是否可用
- AI Provider 生产密钥是否只存在于部署环境

部署细节可继续参考：

- [`01-Vercel-与-云服务器-最小部署说明.md`](./01-Vercel-%E4%B8%8E-%E4%BA%91%E6%9C%8D%E5%8A%A1%E5%99%A8-%E6%9C%80%E5%B0%8F%E9%83%A8%E7%BD%B2%E8%AF%B4%E6%98%8E.md)

## 七、对外发布说明建议

建议在仓库首页或发布说明里明确写清：

- 这是“教程型开源作品”，不是完整 SaaS
- 当前版本强调单一可用、可学习、可部署
- 高级功能显式后置到后续产品线

这样更利于读者建立正确预期，也能减少“为什么没有多版本简历 / 多模板 / 复杂 AI 工作流”的误解。

## 八、最终发布判断

如果下面这些问题都可以回答“是”，就可以进入开源版正式发布：

- 仓库是否能在本地稳定启动？
- 三端主线是否可走通？
- 文档入口是否足够让新人读懂？
- README 是否清楚说明当前边界？
- 默认密钥与敏感配置是否没有误提交？
- CI 是否稳定通过？

当前仓库的正式收尾目标，不是把功能做到最大，而是把“边界清楚、主线完整、读者能复现”做到最好。
