开发手册

本文档面向二次开发人员,介绍有学教育智慧教育管理平台的技术架构、API 接口规范及扩展开发指南。

技术架构

技术栈

层级技术说明
后端Java 17 / Spring Boot 3核心业务逻辑
ORMMyBatis / PageHelper数据访问层
前端Vue 3 / Vite / Element Plus管理后台
小程序uni-app学生/家长移动端
直播课堂WebRTC / SRS实时音视频
AI 能力通义千问 / DeepSeek学情分析与智能批改
资源存储MinIO课件与录播视频

系统模块

  • admin 服务:管理后台 API,端口 19093
  • user 服务:小程序用户端 API
  • 排课引擎:AI 排课算法与冲突检测
  • 课堂服务:直播课堂信令与录制
  • 学情分析模块:数据采集与知识图谱计算

API 接口规范

统一响应格式

{
  "code": 20000,
  "message": "success",
  "data": { ... }
}

code 为 20000 表示成功,其他值表示失败。

认证方式

所有需要登录的接口需在请求头中携带 Authorization Token:

Authorization: Bearer {token}

核心接口列表

接口方法说明
/api/admin/loginPOST管理员登录
/api/admin/schedule/generatePOSTAI 智能排课
/api/admin/schedule/listGET课表查询
/api/admin/exam/createPOST创建考试
/api/admin/exam/gradePOST考试批改
/api/admin/analysis/classGET班级学情分析

自定义排课约束开发

排课引擎支持自定义约束规则扩展,开发步骤如下:

1. 实现约束接口

@ConstraintType("TEACHER_TIME")
public class TeacherTimeConstraint implements ScheduleConstraint {
    @Override
    public boolean check(ScheduleContext context) {
        // 校验教师时间冲突
        return true;
    }
}

2. 注册约束

@Configuration
public class ScheduleConfig {
    @Bean
    public ScheduleConstraint teacherTimeConstraint() {
        return new TeacherTimeConstraint();
    }
}

3. 前端配置

在前端排课配置页中添加对应约束的参数配置组件。

第三方系统对接

对接教务系统

通过 HTTP 接口同步学生、教师、班级等基础数据:

// 同步学生数据
{
  "url": "https://edu.example.com/api/students",
  "method": "GET",
  "params": { "page": 1, "size": 100 }
}

对接短信平台

考试通知、成绩推送可通过回调接口对接短信平台:

@RestController
@RequestMapping("/notify")
public class NotifyController {
    @PostMapping("/examNotice")
    public void sendExamNotice(@RequestBody ExamNoticeEvent event) {
        // 发送考试通知短信
    }
}

部署扩展

集群部署

生产环境建议采用集群部署,通过 Nginx 负载均衡分发请求:

  • 后端服务部署多实例,共享 Redis 和 MySQL
  • 直播服务部署独立节点,支持横向扩展
  • 使用 Nginx 做请求负载和静态资源分发

AI 学情分析配置

在 application.yml 中配置大模型 API:

ai:
  provider: dashscope  # dashscope / deepseek / openai
  api-key: your-api-key
  model: qwen-max
  max-tokens: 2048
  temperature: 0.3

常见问题

Q:如何修改录播视频存储路径?

A:在 application.yml 中配置 file.storage.path 参数,支持本地路径和 MinIO 对象存储。

Q:如何对接其他大模型?

A:实现 AiProvider 接口,在 application.yml 中配置 provider 为自定义实现类。

Q:排课速度慢怎么办?

A:可调整排课引擎的并发线程数 schedule.thread-pool.size,或简化约束条件减少计算量。