Back
NimBuild AI

NimBuild AI

AI SaaS 生产部署检查清单

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_KEY
  • RESEND_FROM_EMAIL
  • 可选 RESEND_REPLY_TO

在 Resend 验证发送域名,并发送真实购买或交易测试邮件。邮件送达是客户计费体验的一部分,不是可有可无的装饰。

7. 验证 AI 提供商

按文档配置 Volcengine API Key、Base URL 和模型,然后测试:

  1. 一次成功的文案生成。
  2. 积分扣除。
  3. 生成历史。
  4. 提供商失败补偿。
  5. 余额不足请求。

失败路径和成功路径一样可观测之前,不能说 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 命令退出成功,而是商业闭环在生产环境可用。