-
-
Notifications
You must be signed in to change notification settings - Fork 87
数据库配置
选择合适的数据存储方式,让你的数据既安全又方便
XCodeReviewer支持三种数据存储模式,根据你的需求选择:
| 模式 | 数据存储位置 | 适用场景 | 优点 | 缺点 |
|---|---|---|---|---|
| 本地数据库 ⭐ | 浏览器IndexedDB | 个人使用、隐私优先 | ✅ 零配置 ✅ 隐私安全 ✅ 速度快 |
❌ 不能跨设备 ❌ 清除浏览器数据会丢失 |
| 云端数据库 | Supabase云端 | 多设备同步、团队协作 | ✅ 多设备同步 ✅ 永久保存 ✅ 支持备份 |
❌ 需要注册账号 ❌ 依赖网络 |
| 演示模式 | 不存储 | 快速体验、临时使用 | ✅ 无需配置 | ❌ 数据不保存 ❌ 刷新即丢失 |
推荐选择:
- 🏠 个人学习/自用 → 本地数据库
- 👥 团队协作/多设备 → 云端数据库
- 🎮 快速试用 → 演示模式
最简单!零配置,开箱即用
环境变量配置:
编辑 .env 文件:
# 启用本地数据库
VITE_USE_LOCAL_DB=true浏览器配置:
访问 /admin → "系统配置",会自动使用本地数据库
你的浏览器
└── IndexedDB
└── xcodereviewer 数据库
├── projects(项目表)
├── tasks(任务表)
├── issues(问题表)
└── ...
数据存储在:
- Chrome/Edge:
用户目录/AppData/Local/Google/Chrome/User Data/.../IndexedDB - Firefox:
用户目录/AppData/Roaming/Mozilla/Firefox/Profiles/.../IndexedDB - Safari:
~/Library/Safari/Databases
✅ 隐私安全
- 数据只存在你的电脑上
- 不会上传到任何服务器
- 适合分析敏感代码
✅ 速度快
- 本地读写,毫秒级响应
- 不依赖网络
✅ 零成本
- 不需要注册账号
- 不需要付费服务
❌ 清除浏览器数据会丢失
解决方案:定期备份
1. 访问 /admin → 数据库管理
2. 点击"导出数据(JSON)"
3. 保存文件到安全位置
❌ 不能跨设备/浏览器
解决方案:
- 方案1:导出/导入JSON文件
- 方案2:切换到云端数据库
❌ 换电脑后数据丢失
解决方案:
旧电脑:导出JSON
新电脑:导入JSON
容量限制:
- Chrome/Edge:剩余磁盘空间的60%(动态)
- Firefox:剩余磁盘空间的50%
- Safari:1GB(可请求更多)
实际可用:
- 一般情况下,几GB没问题
- 可存储成千上万个审计记录
查看使用情况:
访问 /admin → 数据库管理 → 存储统计
备份数据:
/admin → 数据库管理 → 导出数据(JSON)
恢复数据:
/admin → 数据库管理 → 导入数据 → 选择JSON文件
清空数据:
/admin → 数据库管理 → 清空所有数据
⚠️ 谨慎操作!不可恢复
适合需要多设备同步、团队协作的场景
- 访问 https://supabase.com
- 点击 "Start your project"
- 使用GitHub账号登录(推荐)
项目设置:
┌─────────────────────────────┐
│ 项目名称:xcodereviewer │
│ 数据库密码:[设置一个强密码] │
│ 区域:选择离你最近的 │
│ (国内选Singapore) │
└─────────────────────────────┘
等待1-2分钟,项目创建完成
在Supabase项目页面:
- 点击左侧 "Project Settings"
- 点击 "API"
- 找到并复制:
-
Project URL(类似:
https://xxxxx.supabase.co) - anon/public key(一长串字符)
-
Project URL(类似:
在Supabase SQL编辑器:
- 点击左侧 "SQL Editor"
- 点击 "New query"
- 打开项目文件
supabase/migrations/full_schema.sql - 复制所有内容,粘贴到编辑器
- 点击 "Run" 执行
看到 "Success" 就成功了!
方式1:环境变量(推荐)
编辑 .env 文件:
# 不要启用本地数据库
# VITE_USE_LOCAL_DB=true ← 注释掉或删除
# Supabase配置
VITE_SUPABASE_URL=https://你的项目ID.supabase.co
VITE_SUPABASE_ANON_KEY=你的anon_key方式2:浏览器配置
访问 /admin → "系统配置" → "数据库配置"
Supabase URL:https://xxxxx.supabase.co
Supabase Key:你的anon_key
- 重启应用(如果是本地开发)
- 访问首页
- 如果能看到界面,说明连接成功!
测试数据库:
- 创建一个测试项目
- 访问Supabase项目 → "Table Editor"
- 查看
projects表,应该能看到刚创建的项目
✅ 多设备同步
手机浏览器 ──┐
├──→ Supabase ←──→ 所有数据同步
电脑浏览器 ──┘
✅ 永久保存
- 不会因为清除浏览器数据而丢失
- Supabase自动备份
✅ 团队协作
- 多人共享同一个数据库
- 实时同步审计结果
✅ 强大的查询能力
- 支持SQL查询
- 可以做复杂的数据分析
❌ 需要网络连接
- 离线无法使用
❌ 免费额度限制
Supabase免费版限制:
- 数据库:500MB
- 带宽:5GB/月
- API请求:不限
对个人使用完全够用!
超出免费额度后:
- 升级到Pro版($25/月)
- 或创建新项目
❌ 数据隐私
- 审计结果存储在Supabase云端
- 如果分析敏感代码,建议用本地数据库
启用Row Level Security(行级安全):
如果需要多用户隔离数据:
-- 在Supabase SQL编辑器执行
ALTER TABLE projects ENABLE ROW LEVEL SECURITY;
-- 创建策略(示例)
CREATE POLICY "用户只能看到自己的项目"
ON projects FOR SELECT
USING (auth.uid() = user_id);配置备份策略:
Supabase Pro版支持:
- 每日自动备份
- 时间点恢复(PITR)
最快体验,但不保存数据
什么都不配置!
# .env 文件中不设置任何数据库配置
# 既不设置 VITE_USE_LOCAL_DB
# 也不设置 VITE_SUPABASE_URL✅ 零配置
- 打开就能用
❌ 不保存数据
- 刷新页面,数据丢失
- 仅在内存中存储
- 🎮 快速试用体验
- 🎬 演示展示
- 🧪 测试功能
不适合:
- ❌ 正式使用
- ❌ 保存重要审计结果
步骤:
- 编辑
.env:VITE_USE_LOCAL_DB=true
- 重启应用
- 之前的演示数据会丢失(因为没保存)
步骤:
-
先备份本地数据
/admin → 导出数据(JSON) -
配置Supabase
# VITE_USE_LOCAL_DB=true ← 注释掉 VITE_SUPABASE_URL=... VITE_SUPABASE_ANON_KEY=...
-
重启应用
-
导入数据到云端
/admin → 导入数据 → 选择JSON文件
步骤类似,注意先导出云端数据!
本地数据库:
推荐频率:每周一次
方法:
1. 每周日固定时间
2. 访问 /admin 导出JSON
3. 保存到云盘(Google Drive、OneDrive等)
4. 文件命名:xcodereviewer_backup_20250126.json
云端数据库:
Supabase自动备份,但也建议:
- 重要审计后手动导出一份
- 保留多个历史版本
定期清理不需要的数据:
建议保留期限:
- 活跃项目:永久保留
- 已归档项目:6个月后删除
- 失败的任务:1个月后删除
- 测试数据:随时删除
清理方法:
- 进入项目/任务详情
- 点击"删除"按钮
场景:换新电脑
旧电脑:
1. /admin → 导出数据(JSON)
2. 保存到U盘或云盘
新电脑:
1. 安装XCodeReviewer
2. /admin → 导入数据
3. 选择JSON文件
查看方法:
访问 /admin → 数据库管理
会显示:
✅ 本地数据库(IndexedDB)
或
✅ 云端数据库(Supabase)
位置: 浏览器IndexedDB
查看方法:
- 按F12打开开发者工具
- 切换到 "Application" 标签(Chrome)
- 左侧 "Storage" → "IndexedDB" → "xcodereviewer"
不行! 只能选一种模式。
如果需要两者兼得:
- 主用云端数据库(多设备同步)
- 定期导出JSON到本地备份(安全保障)
对个人使用完全够用!
容量评估:
假设:
- 10个项目
- 每个项目50次审计
- 每次审计发现20个问题
总数据量:约10-50MB
远低于500MB限制!
带宽评估:
正常使用:
- 每天打开几次
- 创建几个审计任务
每月带宽:< 1GB
远低于5GB限制!
本地数据库:
- ❌ 没有内置恢复功能
- ✅ 如果有备份的JSON,可以导入恢复
云端数据库(Supabase):
- ❌ 免费版:无法恢复
- ✅ Pro版:支持时间点恢复(PITR)
建议:定期备份是王道!
本地数据库损坏:
# 清除浏览器IndexedDB
1. F12开发者工具
2. Application → IndexedDB
3. 右键 xcodereviewer → Delete database
4. 刷新页面,重新初始化云端数据库损坏:
1. 联系Supabase支持
2. 或重新执行SQL初始化脚本
# 简单直接
VITE_USE_LOCAL_DB=true定期备份: 每月导出一次JSON
# Supabase云端
VITE_SUPABASE_URL=https://团队项目.supabase.co
VITE_SUPABASE_ANON_KEY=...配置RLS: 每个成员只能看到自己的项目
1. 使用本地数据库(数据不外传)
2. 配合Ollama本地模型(代码不外传)
3. 内网部署
4. 定期导出备份到内网存储
💡 小贴士:数据库配置一次,长期使用,建议一开始就选好!