# 🗄️ 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 策略正确应用 - ✅ 应用可以正常连接数据库 现在你可以开始使用翻译服务应用了!🎉