Twilioapp-project/web-app/DATABASE_SETUP.md

146 lines
3.9 KiB
Markdown
Raw Normal View History

# 🗄️ Twilio-project 数据库设置指南
## 📋 概述
本指南将帮你为翻译服务应用设置 Supabase 数据库,包括创建所有必要的表结构、安全策略和索引。
## 🔧 快速设置步骤
### 方法一:手动设置(推荐)
1. **访问 Supabase 控制台**
```
https://supabase.com/dashboard/project/poxwjzdianersitpnvdy
```
2. **进入 SQL Editor**
- 在左侧菜单中点击 "SQL Editor"
- 点击 "New query"
3. **执行初始化脚本**
- 复制 `database-init.sql` 文件的全部内容
- 粘贴到 SQL Editor 中
- 点击 "Run" 执行
4. **验证设置**
- 在左侧菜单点击 "Table Editor"
- 确认以下表已创建:
- ✅ user_profiles
- ✅ translator_profiles
- ✅ call_records
- ✅ appointments
- ✅ document_translations
- ✅ payments
- ✅ system_settings
### 方法二:自动化脚本
1. **安装依赖**
```bash
npm install @supabase/supabase-js
```
2. **获取 Service Role Key**
- 在 Supabase 控制台 → Settings → API
- 复制 "service_role" 密钥
3. **更新脚本配置**
- 编辑 `init-database.js`
- 替换 `YOUR_SERVICE_ROLE_KEY_HERE` 为实际密钥
4. **运行初始化脚本**
```bash
node web-app/init-database.js
```
## 📊 数据库结构
### 核心表结构
| 表名 | 用途 | 主要字段 |
|------|------|----------|
| `user_profiles` | 用户档案 | username, full_name, email, account_balance |
| `translator_profiles` | 翻译员信息 | specializations, languages, hourly_rate, rating |
| `call_records` | 通话记录 | call_type, duration_minutes, total_amount |
| `appointments` | 预约管理 | appointment_date, service_type, status |
| `document_translations` | 文档翻译 | original_filename, status, completion_percentage |
| `payments` | 支付记录 | amount, payment_status, payment_method |
| `system_settings` | 系统配置 | setting_key, setting_value, setting_type |
### 🔒 安全特性
- **行级安全 (RLS)**: 所有表都启用了 RLS
- **用户隔离**: 用户只能访问自己的数据
- **角色权限**: 不同角色有不同的访问权限
- **数据验证**: 表约束确保数据完整性
### 📈 性能优化
- **索引优化**: 为常用查询字段创建索引
- **触发器**: 自动更新时间戳
- **约束检查**: 确保数据有效性
## 🎯 默认系统设置
初始化后会自动创建以下系统设置:
| 设置项 | 值 | 说明 |
|--------|-----|------|
| `voice_call_rate` | 80.00 | 语音通话费率(元/小时) |
| `video_call_rate` | 120.00 | 视频通话费率(元/小时) |
| `translator_rate` | 50.00 | 翻译员费率(元/小时) |
| `min_call_duration` | 1 | 最小通话时长(分钟) |
| `supported_languages` | [多语言数组] | 支持的语言列表 |
| `max_file_size` | 10485760 | 最大文件大小10MB |
| `supported_file_types` | [文件类型数组] | 支持的文件类型 |
## 🔍 验证检查
执行以下 SQL 来验证设置是否成功:
```sql
-- 检查表是否存在
SELECT table_name
FROM information_schema.tables
WHERE table_schema = 'public';
-- 检查系统设置
SELECT * FROM system_settings;
-- 检查 RLS 策略
SELECT schemaname, tablename, policyname
FROM pg_policies
WHERE schemaname = 'public';
```
## 🚨 故障排除
### 常见问题
1. **权限错误**
- 确保使用正确的 API 密钥
- 检查用户权限设置
2. **表创建失败**
- 检查 SQL 语法
- 确认没有重复的表名
3. **RLS 策略问题**
- 验证策略语法
- 检查用户认证状态
### 联系支持
如果遇到问题,请检查:
- Supabase 项目状态
- 网络连接
- API 密钥有效性
## ✅ 完成确认
数据库设置完成后,你应该能够:
- ✅ 在 Supabase 控制台看到所有表
- ✅ 系统设置表包含默认值
- ✅ RLS 策略正确应用
- ✅ 应用可以正常连接数据库
现在你可以开始使用翻译服务应用了!🎉