151 lines
3.5 KiB
Markdown
151 lines
3.5 KiB
Markdown
# 快速解决 Analytics RPC 函数问题
|
||
|
||
## 🚨 当前问题
|
||
```
|
||
Searched for the function public.get_teacher_analytics with parameters columns, end_date, limit, start_date, teacher_id or with a single unnamed json/jsonb parameter, but no matches were found in the schema cache.
|
||
```
|
||
|
||
## ✅ 立即解决方案
|
||
|
||
### 步骤 1: 在 Supabase SQL Editor 中执行简化版函数
|
||
|
||
1. 打开 Supabase 项目控制台
|
||
2. 进入 **SQL Editor**
|
||
3. 复制并执行 `analytics_rpc_simple.sql` 文件中的所有内容
|
||
|
||
### 步骤 2: 验证函数创建成功
|
||
|
||
在 SQL Editor 中运行:
|
||
|
||
```sql
|
||
-- 检查函数是否创建成功
|
||
SELECT routine_name, routine_type
|
||
FROM information_schema.routines
|
||
WHERE routine_schema = 'public'
|
||
AND routine_name IN ('get_teacher_analytics', 'get_top_performers', 'get_chart_data')
|
||
ORDER BY routine_name;
|
||
```
|
||
|
||
应该看到 3 个函数都存在。
|
||
|
||
### 步骤 3: 测试函数调用
|
||
|
||
```sql
|
||
-- 测试各个函数
|
||
SELECT public.get_teacher_analytics();
|
||
SELECT public.get_top_performers();
|
||
SELECT public.get_chart_data();
|
||
```
|
||
|
||
### 步骤 4: 在 Supabase API 文档中测试
|
||
|
||
1. 进入项目的 **API** 页面
|
||
2. 在 **RPC** 部分找到新创建的函数
|
||
3. 测试调用
|
||
|
||
### 步骤 5: 刷新应用并测试
|
||
|
||
重新加载 Analytics 页面,应该能够看到测试数据。
|
||
|
||
## 📊 返回的测试数据
|
||
|
||
### get_teacher_analytics 返回:
|
||
```json
|
||
{
|
||
"total_students": 28,
|
||
"total_assignments": 12,
|
||
"completion_rate": 87.5,
|
||
"average_score": 82.3,
|
||
"active_classes": 4,
|
||
"total_submissions": 285,
|
||
"pending_reviews": 15,
|
||
"graded_submissions": 270
|
||
}
|
||
```
|
||
|
||
### get_top_performers 返回:
|
||
```json
|
||
[
|
||
{
|
||
"student_id": "550e8400-e29b-41d4-a716-446655440001",
|
||
"name": "王小明",
|
||
"username": "wangxiaoming",
|
||
"score": 96.8,
|
||
"submission_count": 12,
|
||
"completion_rate": 100.0,
|
||
"class_name": "高三(1)班",
|
||
"rank_position": 1
|
||
},
|
||
// ... 更多学员数据
|
||
]
|
||
```
|
||
|
||
### get_chart_data 返回:
|
||
```json
|
||
[
|
||
{
|
||
"date_key": "2024-06-01",
|
||
"value": 75.5,
|
||
"label": "完成率",
|
||
"count": 15
|
||
},
|
||
// ... 更多图表数据
|
||
]
|
||
```
|
||
|
||
## 🔧 前端调试
|
||
|
||
已更新 Analytics 页面的数据处理函数:
|
||
|
||
1. **更好的错误处理**: 显示具体错误信息
|
||
2. **数据格式兼容**: 正确处理 RPC 返回的数据格式
|
||
3. **调试信息**: 在控制台输出详细的调试信息
|
||
|
||
## 🚀 后续升级
|
||
|
||
当基础功能正常工作后,可以:
|
||
|
||
1. **替换为真实数据**: 使用 `analytics_rpc_functions.sql` 中的完整版本
|
||
2. **连接真实数据库**: 确保数据表结构正确
|
||
3. **优化性能**: 添加索引和查询优化
|
||
|
||
## 🔍 故障排除
|
||
|
||
### 如果仍然出现错误:
|
||
|
||
1. **检查 Supabase 连接**
|
||
```sql
|
||
SELECT current_user, current_database();
|
||
```
|
||
|
||
2. **检查函数权限**
|
||
```sql
|
||
SELECT routine_name, security_type
|
||
FROM information_schema.routines
|
||
WHERE routine_name = 'get_teacher_analytics';
|
||
```
|
||
|
||
3. **检查 RLS 策略**
|
||
```sql
|
||
SELECT tablename, policyname, permissive
|
||
FROM pg_policies
|
||
WHERE tablename LIKE 'ak_%';
|
||
```
|
||
|
||
4. **重新授权函数**
|
||
```sql
|
||
GRANT EXECUTE ON ALL FUNCTIONS IN SCHEMA public TO authenticated;
|
||
```
|
||
|
||
## ✅ 预期结果
|
||
|
||
执行上述步骤后,Analytics 页面应该:
|
||
|
||
1. ✅ 正常加载,不显示错误信息
|
||
2. ✅ 显示概览统计卡片(学员总数、作业总数等)
|
||
3. ✅ 显示优秀学员排行榜
|
||
4. ✅ 显示图表占位符(显示数据数量)
|
||
5. ✅ 显示近期活动列表
|
||
|
||
Analytics 功能将正常工作,显示测试数据,为后续真实数据集成做好准备。
|