Files
akmon/SCRIPT_INDEX.md
2026-01-20 08:04:15 +08:00

215 lines
5.8 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 消息系统脚本索引
本文档列出了所有可用的SQL脚本及其用途帮助开发者快速找到需要的功能。
## 📋 脚本分类
### 🏗️ 核心部署脚本
| 脚本名称 | 用途 | 适用场景 | 执行顺序 |
|----------|------|----------|----------|
| `deploy_one_click.sql` | 一键部署整个消息系统 | 新项目快速启动 | 1⃣ |
| `message_system.sql` | 核心数据库表结构 | 手动分步部署 | 1⃣ |
| `supabase_auth_complete_setup.sql` | 完整用户角色管理系统 | 生产环境 | 2⃣ |
### 🔐 权限管理脚本
| 脚本名称 | 用途 | 权限模式 | 环境 |
|----------|------|----------|------|
| `dev_open_permissions.sql` | 快速开发权限设置 | 🔓 开放 | 开发/测试 |
| `open_all_message_permissions.sql` | 完整开放权限设置 | 🔓 开放 | 开发/测试 |
| `message_permissions_complete.sql` | 完整生产权限策略 | 🔒 严格 | 生产环境 |
| `restore_normal_permissions.sql` | 从开发模式恢复生产权限 | 🔒 严格 | 生产环境 |
| `permission_manager.sql` | 权限管理器和状态监控 | 🛠️ 管理 | 所有环境 |
### 🔧 修复和维护脚本
| 脚本名称 | 用途 | 使用时机 |
|----------|------|----------|
| `complete_cleanup.sql` | 完整系统清理 | 重新部署前 |
| `quick_fix_triggers.sql` | 修复触发器冲突 | 部署错误时 |
| `quick_fix_policies.sql` | 修复策略冲突 | 部署错误时 |
| `quick_fix_functions.sql` | 修复函数冲突 | 部署错误时 |
| `quick_fix_rls_recursion.sql` | 修复RLS递归错误 | 权限错误时 |
### 📊 数据和测试脚本
| 脚本名称 | 用途 | 数据量 |
|----------|------|--------|
| `insert_test_message_data.sql` | 插入测试数据 | 中等 |
| `generate_message_data.sql` | 生成大量测试数据 | 大量 |
| `test_message_structure.sql` | 测试消息结构 | 验证 |
## 🚀 使用指南
### 新项目部署
```mermaid
graph TD
A[新项目] --> B[deploy_one_click.sql]
B --> C[开发模式启用]
C --> D[开始开发]
D --> E{准备上线?}
E -->|是| F[restore_normal_permissions.sql]
E -->|否| G[继续开发]
F --> H[生产环境]
```
### 权限模式切换
```mermaid
graph LR
A[开发模式] -->|deploy_one_click.sql| B[开放权限]
A -->|dev_open_permissions.sql| B
B -->|restore_normal_permissions.sql| C[生产权限]
C -->|permission_manager.sql| D[智能管理]
D -->|switch_to_dev_mode| B
D -->|switch_to_prod_mode| C
```
## 📝 常用命令组合
### 快速开始(推荐)
```sql
-- 1. 一键部署
\i deploy_one_click.sql
-- 2. 查看状态
SELECT * FROM public.permission_dashboard;
-- 3. 测试功能
SELECT quick_send('测试消息', '这是一条测试消息');
SELECT * FROM message_stats();
```
### 开发环境设置
```sql
-- 1. 基础结构
\i message_system.sql
-- 2. 开发权限
\i dev_open_permissions.sql
-- 3. 测试数据
\i insert_test_message_data.sql
-- 4. 权限管理器
\i permission_manager.sql
```
### 生产环境部署
```sql
-- 1. 基础结构
\i message_system.sql
-- 2. 用户角色系统
\i supabase_auth_complete_setup.sql
-- 3. 严格权限策略
\i message_permissions_complete.sql
-- 4. 权限管理器
\i permission_manager.sql
-- 5. 验证部署
SELECT * FROM public.check_permission_health();
```
### 权限模式切换
```sql
-- 切换到开发模式
SELECT public.switch_to_dev_mode();
-- 切换到生产模式
SELECT public.switch_to_prod_mode();
\i restore_normal_permissions.sql
-- 查看当前模式
SELECT * FROM public.get_permission_mode();
```
### 故障排除
```sql
-- 清理所有内容重新开始
\i complete_cleanup.sql
\i deploy_one_click.sql
-- 修复特定错误
\i quick_fix_triggers.sql -- 触发器冲突
\i quick_fix_policies.sql -- 策略冲突
\i quick_fix_functions.sql -- 函数冲突
\i quick_fix_rls_recursion.sql -- RLS递归
-- 权限健康检查
SELECT * FROM public.check_permission_health();
```
## 🔍 脚本内容速览
### 核心功能脚本
- **deploy_one_click.sql**: 完整的一键部署解决方案
- 扩展检查和创建
- 基础表结构创建
- 开发权限模式部署
- 便捷函数创建
- 部署验证和报告
- **permission_manager.sql**: 智能权限管理系统
- `get_permission_mode()` - 查看当前权限模式
- `switch_to_dev_mode()` - 切换到开发模式
- `switch_to_prod_mode()` - 切换到生产模式
- `check_permission_health()` - 权限健康检查
### 权限模式脚本
- **dev_open_permissions.sql**: 开发友好的权限设置
- 自动清理限制性策略
- 创建全开放权限
- 提供便捷开发函数
- **restore_normal_permissions.sql**: 生产环境权限恢复
- 清理开发模式策略
- 恢复基于角色的权限控制
- 最小权限原则
## ⚠️ 重要提醒
### 开发模式注意事项
- 🔓 **开发模式权限非常宽松**所有authenticated用户可以操作所有数据
- ⚠️ **严禁在生产环境使用开发模式**
- 📝 开发完成后记得切换到生产权限模式
### 生产环境最佳实践
- 🔒 始终使用基于角色的权限控制
- 🛡️ 定期运行权限健康检查
- 📊 监控权限使用情况
- 🔄 建立权限变更审核流程
### 脚本执行顺序
1. **首次部署**: `deploy_one_click.sql`
2. **权限管理**: `permission_manager.sql`
3. **模式切换**: 使用管理函数或专用脚本
4. **故障修复**: 按需使用quick_fix_*脚本
## 📞 获取帮助
如果遇到问题,请:
1. 先运行 `SELECT * FROM public.check_permission_health();` 检查系统状态
2. 查看相关脚本的注释和说明
3. 使用 `complete_cleanup.sql` 清理后重新部署
4. 检查Supabase控制台的错误日志
---
**提示**: 建议将本文档保存为书签,方便随时查阅各个脚本的用途和使用方法。