# 上线部署检查清单

Deployment-Checklist-Version: 2026-06-20 MVP

本清单用于把当前本地 MVP 推进到可试运营的网站。所有检查项完成前，不应对外宣传为正式商业化生产系统。

## 代码和配置

- 确认 `npm test` 通过。
- 确认 `npm run api` 或等效 API smoke 测试通过。
- 确认 `docs/quality-acceptance-report.md` 已记录本轮测试结果、合规检查结论和上线阻塞项。
- 确认 `.env.example` 已覆盖 `PORT`、`JZCAD_HOST`、`JZCAD_DATA_DIR`、`JZCAD_STORAGE_DIR`、`JZCAD_LOG_DIR`、`JZCAD_BACKUP_DIR`、`JZCAD_MAX_UPLOAD_BYTES`、`JZCAD_PAYMENT_CALLBACK_SECRET` 和 AI 配置。
- 生产环境不得把真实密钥写入代码、前端文件或公开仓库。
- 确认 `docs/terms.md`、`docs/privacy.md`、`docs/ai-cad-disclaimer.md` 可从页面访问。

## 基础设施

- 购买域名，并按目标市场完成备案、解析或合规要求。
- 准备云服务器或托管平台，安装 Node.js 运行环境。
- 配置 HTTPS、反向代理、静态资源缓存和上传大小限制。
- 设置服务器防火墙，只开放必要端口。
- 配置进程管理器，例如 PM2、systemd、Docker 或云托管服务。

## 数据和文件

- 生产环境单独配置 `JZCAD_DATA_DIR`、`JZCAD_STORAGE_DIR`、`JZCAD_LOG_DIR` 和 `JZCAD_BACKUP_DIR`。
- 确认应用进程对这些目录有读写权限。
- 确认上传图、生成文件、CAD/STL/OBJ 参考包不会写入临时目录。
- 配置每日备份，并至少完成一次恢复演练。
- 配置每日存储清理任务，清理时间应晚于备份时间；上线前至少 dry-run 一次 `npm run cleanup:storage`。
- 上线前执行非破坏性备份校验：`npm run backup:verify` 或 `npm run backup:verify:linux`。
- 正式商业化前，应迁移到数据库和对象存储。

## AI 和任务

- 配置真实 AI 服务密钥、模型名、调用超时和失败降级策略。
- 确认 AI 异常时前端会显示明确错误，不会导致页面不可用。
- 记录 AI 调用成本、失败原因和关键请求 ID。
- 对上传图片和生成内容增加风控提示。
- 大规模商用前接入任务队列、限流、重试和成本告警。

## 账号、权限和后台

- 确认普通用户无法访问 `/api/admin/*`。
- 创建至少一个管理员账号，并记录交接方式。
- 测试管理员查看统计、用户列表、项目列表、订单列表和反馈分析。
- 测试管理员调整用户额度和封禁用户。
- 保留管理员操作记录，正式版应增加审计日志。

## 支付和商业

- MVP 阶段如使用人工确认付款，应在页面和销售话术中写清楚。
- 正式收费前接入微信支付、支付宝或企业转账流程。
- 支付回调必须验签；生产环境设置 `JZCAD_PAYMENT_CALLBACK_SECRET` 后，用户侧订单确认接口不得直接入账。
- 明确套餐价格、有效期、退款规则、发票规则和超额用量规则。
- 销售话术必须避免承诺“直接可生产 CAD”。

## 合规

- 用户协议、隐私政策、AI/CAD/STL 辅助性质说明已完成内部评审。
- 页面显著位置展示 AI 辅助性质和人工复核要求。
- 上传入口提示用户必须拥有素材使用权。
- 提供数据删除、账号注销和客服处理流程，至少先支持人工处理。
- 正式运营前由律师审阅协议、隐私、付费规则和对外宣传资料。

## 监控和应急

- 记录访问日志、错误日志、AI 调用日志和支付回调日志。
- 配置服务不可用、磁盘空间不足、备份失败、AI 调用失败和支付异常告警。
- 准备生产运行手册和联系人清单。
- 确认故障时可以回滚代码、恢复数据、暂停支付和通知客户。

## 上线验收

- 首页、上传、登录、项目、作品库、后台和合规文档可访问。
- 新用户能登录、创建项目、上传图片、生成记录、提交反馈和下载参考包。
- 刷新页面后项目和记录仍存在。
- 管理员能看到统计，并能处理用户额度和封禁。
- 备份脚本运行成功，并能找到备份文件。
- 备份校验脚本运行成功。
- 存储清理任务已安装，且默认只清理超过保留期的软删除文件。

## Storage cleanup fixed check

- 瀛樺偍娓呯悊浠诲姟：production deployment must install and verify the scheduled storage cleanup job before go-live.
