开发手册
本文档面向二次开发人员,介绍有学教育智慧教育管理平台的技术架构、API 接口规范及扩展开发指南。
技术架构
技术栈
| 层级 | 技术 | 说明 |
|---|---|---|
| 后端 | Java 17 / Spring Boot 3 | 核心业务逻辑 |
| ORM | MyBatis / 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/login | POST | 管理员登录 |
| /api/admin/schedule/generate | POST | AI 智能排课 |
| /api/admin/schedule/list | GET | 课表查询 |
| /api/admin/exam/create | POST | 创建考试 |
| /api/admin/exam/grade | POST | 考试批改 |
| /api/admin/analysis/class | GET | 班级学情分析 |
自定义排课约束开发
排课引擎支持自定义约束规则扩展,开发步骤如下:
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,或简化约束条件减少计算量。