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

3.5 KiB
Raw Permalink Blame History

快速解决 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 中运行:

-- 检查函数是否创建成功
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: 测试函数调用

-- 测试各个函数
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 返回:

{
  "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 返回:

[
  {
    "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 返回:

[
  {
    "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 连接

    SELECT current_user, current_database();
    
  2. 检查函数权限

    SELECT routine_name, security_type 
    FROM information_schema.routines 
    WHERE routine_name = 'get_teacher_analytics';
    
  3. 检查 RLS 策略

    SELECT tablename, policyname, permissive 
    FROM pg_policies 
    WHERE tablename LIKE 'ak_%';
    
  4. 重新授权函数

    GRANT EXECUTE ON ALL FUNCTIONS IN SCHEMA public TO authenticated;
    

预期结果

执行上述步骤后Analytics 页面应该:

  1. 正常加载,不显示错误信息
  2. 显示概览统计卡片(学员总数、作业总数等)
  3. 显示优秀学员排行榜
  4. 显示图表占位符(显示数据数量)
  5. 显示近期活动列表

Analytics 功能将正常工作,显示测试数据,为后续真实数据集成做好准备。