AI SaaS 生产部署检查清单
生产部署不只是构建成功。对 NimBuild Starter 来说,以下检查决定认证、计费、AI、邮件和定时积分在上线后是否真正可用。
前置条件
部署前准备:
- PostgreSQL 数据库
- Stripe 账号和 API Key
- Resend API Key 与已验证发送域名
- Firebase 项目和服务账号凭据
- AI 工具所需的 Volcengine API 凭据
- 可选的 Cloudflare R2 或 S3 兼容存储
1. 初始化数据库
首次部署后应用 Drizzle schema:
pnpm db:push
后续生产 schema 变更应使用生成的 migration,而不是把 db:push 当作无记录的手工变更:
pnpm db:generate
pnpm db:migrate
记录每个环境实际执行到哪个 migration。
2. 配置 Stripe Webhook
在 Stripe Dashboard 中设置:
https://your-domain.com/api/payments/stripe/webhook
然后配置匹配的 Webhook Secret。发送测试事件后,确认支付、订阅、用户套餐、余额和账本记录仍保持一致。
3. 调度两个 Cron 路由
NimBuild 需要两个定时任务。
年付订阅分期:
curl -H "Authorization: Bearer YOUR_CRON_SECRET" \
https://your-domain.com/api/cron/subscription-grants
可过期积分桶:
curl -H "Authorization: Bearer YOUR_CRON_SECRET" \
https://your-domain.com/api/cron/credit-expiry
文档建议订阅发放路由每小时运行。使用 CRON_SECRET 或 Basic Auth,并监控非成功响应。
4. 创建管理员账号
ADMIN_EMAIL=admin@example.com pnpm admin:setup
验证该账号可以查看用户、订阅、积分调整和账本历史,同时确认非管理员无法访问这些路由。
5. 验证身份配置
Firebase 需要:
- 启用 Google 登录。
- 将生产域名加入 authorized domains。
- 配置浏览器端 Firebase 参数。
- 配置服务端使用的 service account 参数。
然后在干净浏览器会话中登录,确认受保护路由通过服务端会话加载。
6. 验证交易邮件
配置:
RESEND_API_KEYRESEND_FROM_EMAIL- 可选
RESEND_REPLY_TO
在 Resend 验证发送域名,并发送真实购买或交易测试邮件。邮件送达是客户计费体验的一部分,不是可有可无的装饰。
7. 验证 AI 提供商
按文档配置 Volcengine API Key、Base URL 和模型,然后测试:
- 一次成功的文案生成。
- 积分扣除。
- 生成历史。
- 提供商失败补偿。
- 余额不足请求。
失败路径和成功路径一样可观测之前,不能说 AI 工作流已完成部署。
8. 确认生产站点 URL
NEXT_PUBLIC_APP_URL 必须使用真实公开域名。它会影响 metadata、canonical URL、Open Graph,以及应用内组装的链接。
9. 配置可选控制
如果使用以下能力,请完成配置:
- Cloudflare Turnstile keys
- Google Analytics
- 可选存储服务凭据
如果刻意禁用某个控制,请记录原因,避免后续运营者把有意省略误判为配置错误。
最终上线检查
- 数据库已迁移
- Stripe Webhook 已配置并测试
- 订阅发放 Cron 已配置
- 积分过期 Cron 已配置
- 管理员账号已创建
- 管理员授权已测试
- Resend 域名已验证
- Firebase 生产域名已授权
- Volcengine 凭据已配置
- AI 成功路径已测试
- AI 失败补偿已测试
- 生产 URL 正确
- 如使用分析,Analytics keys 已配置
部署完成的标志不是 build 命令退出成功,而是商业闭环在生产环境可用。
