# 数据库设置说明 ## 概述 本项目使用 Supabase 作为后端数据库服务,提供 PostgreSQL 数据库、身份验证、实时订阅等功能。 ## 数据库配置步骤 ### 1. 创建 Supabase 项目 1. 访问 [Supabase Dashboard](https://supabase.com/dashboard) 2. 创建新项目 3. 记录项目的 URL 和 API 密钥 ### 2. 执行数据库脚本 1. 在 Supabase Dashboard 中,进入 SQL Editor 2. 将 `schema.sql` 文件的内容复制粘贴到编辑器中 3. 点击 "Run" 执行脚本 ### 3. 配置环境变量 在项目根目录的 `.env.local` 文件中配置以下变量: ```env # Supabase 配置 NEXT_PUBLIC_SUPABASE_URL=https://your-project-id.supabase.co NEXT_PUBLIC_SUPABASE_ANON_KEY=your-anon-key SUPABASE_SERVICE_ROLE_KEY=your-service-role-key ``` ## 数据库表结构 ### 核心表 1. **users** - 用户表 - 存储用户基本信息 - 支持个人用户、企业用户、管理员三种类型 2. **enterprises** - 企业表 - 存储企业客户信息 - 与用户表关联 3. **orders** - 订单表 - 存储口译服务订单 - 关联用户和译员 4. **invoices** - 发票表 - 存储发票信息 - 支持个人和企业发票 5. **interpreters** - 译员表 - 存储译员信息和能力 - 支持多语言和专业领域 6. **calls** - 通话记录表 - 存储实际通话记录 - 用于统计和质量评估 7. **documents** - 文档翻译表 - 存储文档翻译任务 - 跟踪翻译进度 ### 辅助表 1. **enterprise_contracts** - 企业合同表 2. **enterprise_bills** - 企业账单表 3. **system_settings** - 系统设置表 ## 安全策略 ### 行级安全 (RLS) 所有表都启用了行级安全策略: - **管理员权限**:管理员可以访问所有数据 - **用户权限**:普通用户只能访问自己的数据 - **企业权限**:企业用户可以访问所属企业的数据 ### 身份验证 使用 Supabase Auth 进行用户身份验证: - 支持邮箱密码注册/登录 - 支持社交登录(可选) - JWT 令牌验证 - 会话管理 ## 数据库索引 为提高查询性能,已创建以下索引: - 用户邮箱索引 - 用户类型索引 - 订单状态索引 - 订单创建时间索引 - 其他常用查询字段索引 ## 触发器 自动更新 `updated_at` 字段的触发器已为所有表配置。 ## 初始数据 系统会自动插入以下初始设置: - 应用基本配置 - 支持的语言列表 - 默认货币设置 - 税率配置 ## 备份和恢复 Supabase 提供自动备份功能,建议: 1. 定期检查备份状态 2. 测试恢复流程 3. 导出重要数据作为额外备份 ## 监控和维护 建议定期执行以下维护任务: 1. 检查数据库性能 2. 清理过期数据 3. 更新统计信息 4. 监控存储使用情况 ## 故障排除 ### 常见问题 1. **连接失败** - 检查环境变量配置 - 确认 Supabase 项目状态 2. **权限错误** - 检查 RLS 策略 - 确认用户角色设置 3. **查询性能问题** - 检查索引使用情况 - 优化查询语句 ### 调试工具 - Supabase Dashboard 中的 SQL Editor - 实时日志监控 - 性能分析工具 ## 扩展功能 ### 实时订阅 项目支持实时数据订阅,可以监听: - 新订单创建 - 订单状态变更 - 通话状态更新 ### 全文搜索 可以启用 PostgreSQL 的全文搜索功能来搜索: - 用户信息 - 订单内容 - 文档内容 ### 地理位置 如需要地理位置功能,可以启用 PostGIS 扩展。 ## 开发建议 1. 使用类型安全的查询构建器 2. 实施适当的错误处理 3. 使用事务处理复杂操作 4. 定期更新依赖包 5. 遵循数据库最佳实践