vercel_supabase_deploymentlisted
Install: claude install-skill weiyi88/cc-code
# Vercel + Supabase 一键部署
## 前置条件(用户需提前完成)
1. **本地 `.env` 已配置**(我直接读取,无需用户手动提供)
2. **Supabase Access Token**(`sbp_` 开头),用户在对话中提供
3. **GitHub 远程仓库已配置**(`git remote -v` 可见)
4. **Vercel CLI 已本地登录**(`vercel whoami` 可用)
5. **GitHub OAuth App Callback URL** 已改为新生产域名(唯一需要用户手动操作的步骤)
---
## 部署流程
### Step 1:读取环境配置
```bash
cat .env
```
从 `.env` 提取:
- `DATABASE_URL`(Supabase Transaction Pooler,端口 6543)
- `DIRECT_URL`(Supabase Direct Connection,端口 5432)
- `NEXTAUTH_URL`(生产域名)
- 其他所有变量
从 `DIRECT_URL` 解析出 Supabase Project Ref(格式:`db.<ref>.supabase.co`)
---
### Step 2:提取本地 PostgreSQL Schema
```bash
pg_dump -h localhost -U <本地DB用户> -d <本地DB名> \
--schema-only --no-owner --no-acl \
-f .cc_code/scripts/schema_export.sql
```
> 注意:用户名不是 `postgres`,是本地系统用户(如 `blue_focus`)。如果失败,用 `psql -l` 查看实际用户。
---
### Step 3:通过 Supabase Management API 导入 Schema
**不能用直连**(中国网络 DNS 解析失败),必须用 REST API + curl。
```python
import subprocess, re
access_token = "<用户提供的 sbp_ token>"
project_ref = "<从 DIRECT_URL 解析的 ref>"
with open(".cc_code/scripts/schema_export.sql") as f:
sql_content = f.read()
# 逐行状态机解析 SQL 语句(处理多行 + dollar-quoting)
statements = parse_sql_statements(sql_content)
for i, stmt in enumerate(statements):
payload = {"query": stmt}
result = subprocess.run([
"curl", "-s", "-X", "POST",
f"https://api.supabase.com/v1/projects/{project_ref}/database/query",
"-H", f"Authorization: Bearer {access_token}",
"-H", "Content-Type: application/json",