One step at a time

一步步接入百炼、Supabase 与邮件登录

没有密钥也可以先用演示模式走完整个流程。真实分析需要阿里云百炼 API;登录和历史记录需要 Supabase。所有密钥只填入本地 .env.local 或 Vercel 环境变量,不要发到聊天里。

01

创建 Supabase 项目

打开 Supabase,新建一个项目。进入 Project Settings → API,复制 Project URL、anon/public key 和 service_role key。service_role 只能放在服务端环境变量里。

打开 Supabase Dashboard

执行数据库迁移

打开 SQL Editor,按顺序运行项目里的 supabase/migrations/001_initial.sql 与 supabase/migrations/002_real_product_schema.sql。前者保留演示兼容表,后者创建用户档案、简历版本、岗位、分析、配额和订阅表。

02

开启邮箱登录链接

进入 Authentication → Providers → Email,启用 Email。默认 Magic Link 模板即可使用;点击邮件中的链接后会进入/auth/callback,由页面建立会话。然后把 Site URL 和 Redirect URLs 设置为你的本地或线上地址。

本地:http://localhost:3000/auth/callback

线上:https://你的域名/auth/callback

SMTP 的正确位置

Supabase 自带邮件适合本地和小范围测试,有频率限制。正式公开前,在 Authentication → SMTP Settings 中填写 Resend 或阿里云邮件推送提供的 host、port、username、password 和发件人地址。SMTP 密码填写在 Supabase 控制台,不需要写进本项目的 .env.local。

注意:新建的 Free 项目如果仍使用默认 SMTP,可能无法自定义认证邮件模板; 需要先配置自定义 SMTP,才能稳定使用验证码模板。

03

开通阿里云百炼

登录阿里云百炼控制台,开通模型服务,创建业务空间并生成 API Key。 在模型调用示例中复制完整的 Base URL,通常以 /compatible-mode/v1 结尾。不要把 API Key 写进代码或提交到 Git。

打开百炼控制台

Analysis Model

QWEN_ANALYSIS_MODEL=qwen3.8-max

Utility Model

QWEN_UTILITY_MODEL=qwen3.8-flash
04

填写环境变量并自检

在项目根目录复制 .env.example 为 .env.local,逐项填入从控制台复制的值。不要把 .env.local 提交到 Git。

变量用途安全级别
DASHSCOPE_API_KEY百炼 API Key服务端私密
DASHSCOPE_BASE_URL百炼业务空间 Base URL服务端私密
QWEN_ANALYSIS_MODEL默认 qwen-plus(证据矩阵)公开配置
QWEN_UTILITY_MODEL默认 qwen-flash(联网检索与降级)公开配置
QWEN_STAGE_MODEL可选;改写/求职信/面试题/学习计划阶段模型,默认 qwen-flash公开配置
QWEN_PARSE_MODEL可选;岗位拆解模型,默认 qwen-flash(快),失败自动回退本地规则公开配置
NEXT_PUBLIC_SUPABASE_URLSupabase Project URL浏览器可见
NEXT_PUBLIC_SUPABASE_ANON_KEYSupabase anon key浏览器可见
SUPABASE_SERVICE_ROLE_KEYSupabase service role key仅服务端
SUPABASE_STORAGE_BUCKET默认 resume-files公开配置
NEXT_PUBLIC_APP_URL本地或线上完整地址浏览器可见
RUN_TOKEN_SECRET随机长字符串,用于签名分析令牌仅服务端
CRON_SECRETVercel 清理任务密钥仅服务端
DEMO_MODE配置完成后设为 false公开配置

在项目根目录运行

pnpm setup:check
pnpm dev

自检会验证环境变量、Supabase 表与存储桶、百炼最小调用;不会打印密钥本身。

05

部署到 Vercel

导入 Git 仓库后,在 Vercel 的 Environment Variables 中逐项添加相同的服务端变量。配置完成后把 DEMO_MODE 设为 false,并把线上域名加入 Supabase Auth 的 Site URL 与 Redirect URLs。

不要把 service_role 加到 NEXT_PUBLIC_ 前缀CRON_SECRET 用于每日清理SMTP 在 Supabase 控制台配置