基于Springboot3+SpringAI+Agent+RAG+Function Calling的AI Agent智能教务排课与教学质量分析系统
项目简介:基于 SpringAI Agent、Function Calling 和教务知识库检索,实现教师、班级、课程、教室等资源管理,支持排课规则维护、智能排课、冲突检测、课表发布、教学评价和质量分析,覆盖教务排课与质量管理核心闭环。
资料包含
项目详情
一、项目技术栈
前后端分离
后端:SpringBoot3 + SpringAI + MyBatis + PageHelper + Hutool + JWT
前端:Vue3 + Element-Plus + Vue-Router + Axios
AI 技术:Spring AI ChatClient + 模型配置数据库化 + Prompt 模板管理 + Function Calling 工具调用(@Tool + ToolCallbacks)+ Agent 多轮自主执行 + 教务知识库关键词检索 + 结构化 JSON 输出 + AI 调用与工具调用日志
数据库:MySQL
版本要求: jdk 21,MySQL 5.7 或者 8,node.js 版本 18 以上,maven 版本建议 3.8 及以上,navicat 建议不低于 16
二、项目功能描述
1. 管理员
登录、个人信息、修改密码
教务首页:查看排课任务、AI 调用、冲突与质量分析等运行数据
用户信息:管理系统所有用户
基础数据管理:学期、校区、教师、班级、课程、教室、时间段管理
教师可用时间管理:维护教师可排课的星期与节次约束
教室可用时间管理:维护教室可使用的星期与节次约束
排课规则管理:维护硬规则、软规则、优先级、触发条件与处理动作
AI 模型配置与 Prompt 模板管理:维护模型配置与 Prompt 模板
AI 调用日志与模型连通性测试:查看调用日志、测试模型连通性
Function 工具管理:维护 8 个排课工具的启用状态,编码与后端 @Tool 方法一一对应
教务知识库管理:维护教务制度、排课规则说明、调课流程等资料并自动切片
智能排课任务:配置排课学期、模型、模板、任务目标、课程范围、规则策略与任务状态
Agent 排课执行:模型自主调用工具查资源、做四层约束检测,逐节把课表写入数据库
排课明细管理:查看 Agent 排出的课表,手工补课和改课都包含教师班级教室三维占用校验,行上直接展开冲突原因
排课冲突检测:检测教师、班级、教室三类时间撞车,以及教师不可用、教室不可用、教室容量三类约束冲突
公告管理:维护面向前台的教务公告
课表版本与发布:发布课表版本、保存快照、查看明细与切换状态
教学评价管理:维护结构化评分与文字反馈
AI 教学质量分析:基于评价数据生成结构化统计与 AI 质量分析报告
运行日志与调用观测:聚合任务、AI 调用、冲突、发布与质量分析运行数据
管理端菜单按实际操作顺序分成七组二级菜单:系统管理、教务基础数据、排课约束配置、 AI 能力配置、智能排课、教学质量、运行观测,当前所在页面的分组会自动展开。
2. 教师
登录、个人信息、修改密码
我的课表:只显示排给本人的课,按星期乘节次网格展示,含课程、班级、教室
我收到的评价:只显示评价对象是本人的记录,附四个维度和综合评分的平均分
我的可用时间:只读查看教务处为本人登记的可排课星期与节次
教务公告:和学生看到的是同一批公告,只能看不能发
3. 学生
登录、注册、个人信息、修改密码
课表首页:查询教务处已发布的课表版本,支持按班级和教师筛选,以星期乘节次网格展示
教务公告:查看管理端发布的教务公告
教学评教:选择课程、教师和班级,按四个维度打分并提交文字反馈与改进建议
评教提交后,评价人、评价类型、所属学期、提交时间全部由后端赋值,前端传什么都会被覆盖,避免伪造他人评价或把评价挂到别的学期上。
三、项目创新点
- 教务全链路数据底座 + AI Agent 排课:把学期、校区、教师、班级、课程、教室、时间段、可用时间、排课规则等基础数据串成完整底座,再由 Agent 在此之上生成排课规划。
- Agent 真正写数据,而不是只生成文本:排课不是一次模型调用换一段描述文字。模型拿到 8 个能读写数据库的工具,自己查资源、自己做检测、自己把每一节课写进排课明细表。一次任务下来数据库里留下的是可直接进入冲突检测和发布流程的真实课表,以及几十条可追溯的工具调用日志。
- Function Calling 工具中心 + 可控的能力边界:教师可用、教室可用、容量、时间占用等确定性判断全部封装为 @Tool 方法,由 Spring AI 交给模型调用,避免大模型编造排课约束。8 个工具里只有 1 个能写数据库、且只能写排课明细表,模型的操作范围在工具集设计上就被限死;管理端的启用开关能实时决定本次允许模型使用哪些工具。
- 结构化排课明细 + 六类冲突检测闭环:检测教师时间冲突、班级时间冲突、教室占用冲突、教师不可用、教室不可用、教室容量六类问题。前三类按整个学期比对,同学期其他排课任务占掉的时间点同样算撞车;冲突原因直接显示在排课明细行上,从冲突列表可一键跳到出问题的那一节课修改,标记已处理时必须写明处理方式。
- 课表版本发布与快照机制:发布前校验待处理冲突,发布时从排课明细复制生成版本快照,避免后续基础数据变化影响已发布课表。
- 教务知识库检索工具:教务制度、排课规则说明、调课流程、质量评价口径自动切片后,由 searchEducationKnowledgeTool 按关键词打分召回最相关的切片,模型需要制度依据时自己发起检索,而不是把整篇制度硬塞进上下文。
- AI 教学质量分析闭环:用户在前台自助评教、教务录入班级与督导评教,沉淀课程、教师、班级三个维度的质量数据,AI 先算结构化均分与质量等级,再生成摘要、优势、问题与改进建议并落库。
四、Agent 的实现方式
本项目的排课 Agent 是 Tool-Use Agent(工具型 Agent),也叫 Function Calling Agent,即 单 Agent + 工具循环,即 ReAct 范式的工程化实现: 排课的步骤由模型自己决定,能做的事情由代码提供的工具限定。
ReAct 的三段式在这里的对应关系:
Thought 推理 模型判断下一步该查什么、该检测什么、能不能落课
Action 行动 模型指名要调用哪个工具、传什么参数
Observation 观察 后端执行工具,把数据库里的真实结果回传给模型一次排课任务的运转方式:
提示词只写任务目标和执行步骤,不塞规则和资源数据,让模型自己调工具去查
↓
模型循环:查资源拿到真实ID -> 读排课规则 -> 逐节做可用性、容量、占用检测
-> 检测全通过才写入这一节课 -> 有一项不通过就换时间或换教室重来
↓
模型不再要求调用工具,给出本次排课的总结,任务结束模型手里的工具分三类:查询类拿资源、规则和制度依据,检测类判断能不能排,写入类落课表。 只有写入类能改数据库,且只能写排课明细一张表。教师可用、教室可用、教室容量、时间占用这四层硬约束 都由后端代码确定性判断,模型只负责决定怎么组合,不负责判断对错;哪些工具本次可用, 由管理端的启用开关实时控制。
中间那段循环由 Spring AI 托管:框架拦下模型的工具调用请求,执行后把结果追加进对话再发回模型, 往复直到模型给出最终回复,一次排课往返几十次。
这也是当前企业里落地最多的 Agent 形态:一个模型加一组受控工具,权限收在工具里, 能力由开关控制,每次模型调用和工具执行都有日志可查,硬约束不依赖模型自觉。
五、模型配置说明
项目不把模型密钥写在 application.yml 里,而是存在 ai_model_config 表中,由管理员在后台【AI模型配置】维护。
导入 ai_tech.sql 后,需要把表里的 API Key 换成自己的真实 Key 才能使用 AI 功能。
由于配置在数据库里,项目排除了 Spring AI 的 6 个 OpenAI 自动配置,改由 SpringAiModelFactory 按配置内容 动态构建 ChatClient 并缓存。管理员改完配置立刻生效,不需要重启后端。
四、关键页面截图










🔥 限时优惠,已省 ¥210
不知道怎么学?点我
✓ 购买前请阅读须知