feat: 角色卡 demo
This commit is contained in:
120
wei_ai_app/supabase/README.md
Normal file
120
wei_ai_app/supabase/README.md
Normal file
@@ -0,0 +1,120 @@
|
||||
# Supabase 数据库初始化指南
|
||||
|
||||
本文档说明如何将 SQL 脚本导入到本地 Docker 部署的 Supabase 中。
|
||||
|
||||
## 准备工作
|
||||
|
||||
确保你的 Supabase Docker 容器正在运行:
|
||||
|
||||
```bash
|
||||
docker ps --filter "name=supabase"
|
||||
```
|
||||
|
||||
## 方法一:通过 Supabase Studio (推荐)
|
||||
|
||||
1. **打开 Supabase Studio**
|
||||
|
||||
在浏览器中访问:http://localhost:54323
|
||||
|
||||
> 注意:如果是通过 Kong 代理,可能是 http://localhost:8000
|
||||
|
||||
2. **进入 SQL 编辑器**
|
||||
|
||||
点击左侧菜单的 **SQL Editor**
|
||||
|
||||
3. **执行建表脚本**
|
||||
|
||||
- 新建一个 Query
|
||||
- 复制 `migrations/001_create_tables.sql` 的内容
|
||||
- 点击 **Run** 执行
|
||||
|
||||
4. **执行种子数据脚本**
|
||||
|
||||
- 新建另一个 Query
|
||||
- 复制 `migrations/002_seed_data.sql` 的内容
|
||||
- 点击 **Run** 执行
|
||||
|
||||
5. **创建 Storage Bucket**
|
||||
|
||||
- 点击左侧菜单的 **Storage**
|
||||
- 点击 **New bucket**
|
||||
- 输入名称:`avatars`
|
||||
- 勾选 **Public bucket**
|
||||
- 点击 **Create bucket**
|
||||
|
||||
## 方法二:通过命令行 (psql)
|
||||
|
||||
1. **连接到数据库**
|
||||
|
||||
```bash
|
||||
# 获取数据库连接信息
|
||||
docker exec supabase-db env | grep POSTGRES
|
||||
|
||||
# 连接数据库 (默认密码在 .env 文件中)
|
||||
docker exec -it supabase-db psql -U postgres -d postgres
|
||||
```
|
||||
|
||||
2. **执行 SQL 脚本**
|
||||
|
||||
```bash
|
||||
# 从容器外部执行
|
||||
cat supabase/migrations/001_create_tables.sql | docker exec -i supabase-db psql -U postgres -d postgres
|
||||
cat supabase/migrations/002_seed_data.sql | docker exec -i supabase-db psql -U postgres -d postgres
|
||||
```
|
||||
|
||||
## 方法三:通过 Supabase API
|
||||
|
||||
```bash
|
||||
# 设置环境变量
|
||||
SUPABASE_URL="http://localhost:8000"
|
||||
SERVICE_KEY="你的 service_role key"
|
||||
|
||||
# 创建 Storage bucket
|
||||
curl -X POST "$SUPABASE_URL/storage/v1/bucket" \
|
||||
-H "Authorization: Bearer $SERVICE_KEY" \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{
|
||||
"id": "avatars",
|
||||
"name": "avatars",
|
||||
"public": true,
|
||||
"file_size_limit": 5242880,
|
||||
"allowed_mime_types": ["image/png", "image/jpeg", "image/webp", "image/gif"]
|
||||
}'
|
||||
```
|
||||
|
||||
## 验证数据
|
||||
|
||||
初始化完成后,可以在 Supabase Studio 中验证:
|
||||
|
||||
1. **Table Editor** - 查看表结构和数据
|
||||
2. **API Docs** - 查看自动生成的 API 文档
|
||||
|
||||
### 表结构说明
|
||||
|
||||
| 表名 | 说明 |
|
||||
|------|------|
|
||||
| `categories` | 分类筛选,用于 Discovery 页面 |
|
||||
| `tags` | 角色标签 |
|
||||
| `characters` | AI 角色信息,包含 AI 配置 |
|
||||
| `character_tags` | 角色-标签关联 |
|
||||
| `characters_with_tags` | 视图,包含完整的角色信息和标签 |
|
||||
|
||||
### 初始数据
|
||||
|
||||
- 7 个分类(全部、温柔治愈、主导强势、反差/猎奇、语音陪聊、场景扮演、会员限定)
|
||||
- 11 个标签
|
||||
- 4 个示例角色(Eva-09, Commander V, Yuki, Secret X)
|
||||
|
||||
## 常见问题
|
||||
|
||||
### Q: 执行 SQL 时提示权限不足?
|
||||
|
||||
确保使用 `postgres` 用户或具有足够权限的用户执行。
|
||||
|
||||
### Q: 视图查询返回空数据?
|
||||
|
||||
检查 `characters` 表中的 `is_active` 字段是否为 `true`。
|
||||
|
||||
### Q: Storage 上传失败?
|
||||
|
||||
确保已创建 `avatars` bucket 并设置为公开访问。
|
||||
Reference in New Issue
Block a user