-- API使用示例:学校运动训练系统增强功能 -- ==================== 1. 教师创建运动作业 ==================== -- 1.1 查询可用的作业类型 SELECT id, name, description, requires_device, requires_video, ai_evaluation_enabled, scoring_criteria FROM public.ak_assignment_types WHERE is_active = true ORDER BY name; -- 1.2 创建新作业(教师) INSERT INTO public.ak_assignments ( teacher_id, title, description, class_id, assignment_type_id, target_metrics, ai_grading_enabled, due_date, workflow_status ) VALUES ( 'teacher_user_id_here', '周末跑步训练', '完成3公里慢跑,注意心率控制在140-160之间', 'class_id_here', (SELECT id FROM public.ak_assignment_types WHERE name = '跑步训练'), '{"distance": {"target": 3000, "unit": "meters"}, "duration": {"max": 30, "unit": "minutes"}, "heart_rate": {"min": 140, "max": 160}}', true, '2025-06-07 23:59:59', 'draft' ); -- 1.3 提交作业审批 SELECT public.update_assignment_workflow_status( 'assignment_id_here', 'submitted', 'teacher_user_id_here', '请审批周末跑步训练作业' ); -- ==================== 2. 管理员审批作业 ==================== -- 2.1 查询待审批的作业 SELECT a.id, a.title, a.description, u.username as teacher_name, c.name as class_name, a.created_at, a.due_date FROM public.ak_assignments a JOIN public.ak_users u ON a.teacher_id = u.id JOIN public.ak_classes c ON a.class_id = c.id WHERE a.workflow_status = 'submitted' ORDER BY a.created_at; -- 2.2 审批通过作业 SELECT public.update_assignment_workflow_status( 'assignment_id_here', 'approved', 'admin_user_id_here', '作业目标合理,批准发布' ); -- 2.3 发布作业给学生 SELECT public.update_assignment_workflow_status( 'assignment_id_here', 'published', 'admin_user_id_here', '作业已发布给学生' ); -- ==================== 3. 学生查看和提交作业 ==================== -- 3.1 学生查看自己的作业列表 SELECT a.id, a.title, a.description, a.due_date, a.target_metrics, at.name as assignment_type, at.requires_device, at.requires_video, s.id as submission_id, s.status as submission_status FROM public.ak_assignments a JOIN public.ak_assignment_types at ON a.assignment_type_id = at.id LEFT JOIN public.ak_assignment_submissions s ON a.id = s.assignment_id AND s.student_id = 'student_user_id_here' WHERE a.class_id = (SELECT class_id FROM public.ak_users WHERE id = 'student_user_id_here') AND a.workflow_status = 'published' ORDER BY a.due_date; -- 3.2 学生提交作业(关联训练记录) INSERT INTO public.ak_assignment_submissions ( assignment_id, student_id, content_md, device_data_id, attachment_url, status ) VALUES ( 'assignment_id_here', 'student_user_id_here', '## 跑步训练完成报告\n\n今天完成了3公里跑步训练,感觉良好。心率控制在目标范围内。', 'training_record_id_here', -- 关联的训练记录 'https://storage.url/running_video.mp4', -- 视频文件(如果需要) 'submitted' ); -- ==================== 4. AI自动评估 ==================== -- 4.1 查看AI评估结果(自动触发) SELECT ae.evaluation_type, ae.confidence_score, ae.suggested_score, ae.feedback_text, ae.improvement_suggestions, ae.risk_indicators FROM public.ak_ai_evaluations ae JOIN public.ak_assignment_submissions s ON ae.submission_id = s.id WHERE s.assignment_id = 'assignment_id_here' AND s.student_id = 'student_user_id_here'; -- 4.2 教师审核AI评估结果 UPDATE public.ak_assignment_submissions SET ai_score = 85.5, manual_score = 88.0, final_score = 87.0, feedback = 'AI评估:动作标准,心率控制良好。教师评价:坚持很好,建议下次增加配速变化。', review_status = 'reviewed', reviewed_by = 'teacher_user_id_here', reviewed_at = now(), ai_feedback_approved = true WHERE id = 'submission_id_here'; -- ==================== 5. AI训练建议生成 ==================== -- 5.1 为学生生成个性化训练建议 INSERT INTO public.ak_ai_training_suggestions ( user_id, suggestion_type, priority, title, content, data_source, confidence_score, action_required ) VALUES ( 'student_user_id_here', 'improvement', 'medium', '建议增加间歇训练', '根据您最近的跑步数据分析,建议每周增加1-2次间歇训练,可以提高最大摄氧量和跑步效率。建议间歇方案:400米快跑 + 200米慢跑,重复6-8次。', '{"source": "training_records", "period": "last_30_days", "records_analyzed": 8}', 0.82, false ); -- 5.2 查询学生的AI建议 SELECT title, content, priority, confidence_score, created_at, action_required, acknowledged FROM public.ak_ai_training_suggestions WHERE user_id = 'student_user_id_here' AND acknowledged = false ORDER BY priority DESC, created_at DESC; -- ==================== 6. 学习分析和统计 ==================== -- 6.1 生成学生学习分析报告 SELECT public.calculate_learning_analytics( 'student_user_id_here', '2025-05-01', '2025-05-31' ); -- 6.2 查看班级作业完成统计 SELECT * FROM public.vw_assignment_analytics WHERE class_id = 'class_id_here' ORDER BY assignment_created DESC; -- 6.3 查看学生综合表现 SELECT * FROM public.vw_student_performance WHERE class_id = 'class_id_here' ORDER BY avg_score DESC; -- ==================== 7. 数据质量监控 ==================== -- 7.1 执行数据质量检查 SELECT public.check_data_quality(); -- 7.2 查看数据质量问题 SELECT table_name, issue_type, severity, description, created_at, resolved, resolved_by FROM public.ak_data_quality_logs WHERE resolved = false ORDER BY severity DESC, created_at DESC; -- 7.3 标记质量问题为已解决 UPDATE public.ak_data_quality_logs SET resolved = true, resolved_by = 'admin_user_id_here', resolved_at = now() WHERE id = 'quality_log_id_here'; -- ==================== 8. 权限检查示例 ==================== -- 8.1 检查用户是否有权限 SELECT public.has_permission('user_id_here', 'teacher.assignment.manage'); -- 8.2 检查作用域权限 SELECT public.has_scoped_permission( 'teacher_user_id_here', 'teacher.class.read', 'class', 'class_id_here' ); -- 8.3 获取用户的所有权限 SELECT p.code, p.name, p.description FROM public.ak_user_roles ur JOIN public.ak_role_permissions rp ON ur.role_id = rp.role_id JOIN public.ak_permissions p ON rp.permission_id = p.id WHERE ur.user_id = 'user_id_here'; -- ==================== 9. 训练计划模板使用 ==================== -- 9.1 查询适合的训练模板 SELECT id, name, description, difficulty_level, duration_weeks, target_age_min, target_age_max, ai_adaptive FROM public.ak_training_templates WHERE target_age_min <= 16 AND target_age_max >= 16 -- 16岁学生 AND difficulty_level <= 3 -- 中等难度以下 AND is_active = true; -- 9.2 基于模板创建训练计划 INSERT INTO public.ak_training_plans ( user_id, plan_name, description, start_date, end_date, status ) SELECT 'student_user_id_here', '基于模板:' || name, description, CURRENT_DATE, CURRENT_DATE + INTERVAL '1 week' * duration_weeks, 'active' FROM public.ak_training_templates WHERE id = 'template_id_here'; -- ==================== 10. 国际化支持示例 ==================== -- 10.1 获取用户语言下的UI文本 SELECT public.get_ui_text('assignment.create.title'); SELECT public.get_ui_text('assignment.submit.success'); -- 10.2 获取多语言的学校名称 SELECT public.get_school_name('school_id_here'); -- 10.3 设置用户偏好语言 UPDATE public.ak_users SET preferred_language = (SELECT id FROM public.ak_languages WHERE code = 'en-US') WHERE id = 'user_id_here'; -- ==================== 11. 实时通知示例 ==================== -- 11.1 创建作业截止提醒通知 INSERT INTO public.ak_notifications ( user_id, title, content, status ) SELECT s.student_id, '作业截止提醒', '您的作业"' || a.title || '"将在24小时内截止,请及时完成。', 'unread' FROM public.ak_assignments a JOIN public.ak_assignment_submissions s ON a.id = s.assignment_id WHERE a.due_date BETWEEN now() AND now() + INTERVAL '24 hours' AND s.status != 'submitted'; -- 11.2 查询用户未读通知 SELECT title, content, created_at FROM public.ak_notifications WHERE user_id = 'user_id_here' AND status = 'unread' ORDER BY created_at DESC; -- ==================== 12. 综合报表查询 ==================== -- 12.1 学校运动训练概览报表 WITH school_stats AS ( SELECT s.id as school_id, s.name as school_name, COUNT(DISTINCT c.id) as total_classes, COUNT(DISTINCT u.id) as total_students, COUNT(DISTINCT ut.id) as total_teachers, COUNT(DISTINCT a.id) as total_assignments, COUNT(DISTINCT sub.id) as total_submissions FROM public.ak_schools s LEFT JOIN public.ak_grades g ON s.id = g.school_id LEFT JOIN public.ak_classes c ON g.id = c.grade_id LEFT JOIN public.ak_users u ON c.id = u.class_id AND u.role = 'student' LEFT JOIN public.ak_users ut ON s.id = ut.school_id AND ut.role = 'teacher' LEFT JOIN public.ak_assignments a ON c.id = a.class_id LEFT JOIN public.ak_assignment_submissions sub ON a.id = sub.assignment_id GROUP BY s.id, s.name ) SELECT *, CASE WHEN total_assignments > 0 THEN ROUND(total_submissions::numeric / total_assignments * 100, 2) ELSE 0 END as submission_rate_percent FROM school_stats ORDER BY total_students DESC; -- 12.2 教师工作量统计 SELECT u.username as teacher_name, c.name as class_name, COUNT(a.id) as assignments_created, COUNT(sub.id) as submissions_received, COUNT(CASE WHEN sub.review_status = 'reviewed' THEN 1 END) as submissions_reviewed, AVG(sub.final_score) as avg_score_given, COUNT(CASE WHEN sub.ai_feedback_approved = true THEN 1 END) as ai_feedbacks_approved FROM public.ak_users u JOIN public.ak_classes c ON u.class_id = c.id LEFT JOIN public.ak_assignments a ON u.id = a.teacher_id LEFT JOIN public.ak_assignment_submissions sub ON a.id = sub.assignment_id WHERE u.role = 'teacher' GROUP BY u.id, u.username, c.name ORDER BY assignments_created DESC; -- ==================== 13. 性能优化查询示例 ==================== -- 13.1 使用索引优化的学生作业查询 EXPLAIN (ANALYZE, BUFFERS) SELECT a.title, s.submit_time, s.final_score FROM public.ak_assignment_submissions s JOIN public.ak_assignments a ON s.assignment_id = a.id WHERE s.student_id = 'student_user_id_here' AND s.submit_time >= '2025-05-01' ORDER BY s.submit_time DESC; -- 13.2 批量更新AI评估状态 UPDATE public.ak_assignment_submissions SET ai_feedback_approved = true WHERE id IN ( SELECT s.id FROM public.ak_assignment_submissions s JOIN public.ak_ai_evaluations ae ON s.id = ae.submission_id WHERE ae.confidence_score > 0.9 AND s.ai_feedback_approved = false LIMIT 100 ); -- 这些示例展示了如何在实际应用中使用增强后的运动训练系统 -- 涵盖了完整的业务流程:从作业创建到AI评估,再到数据分析和质量监控