# 智教一体化系统 **Repository Path**: elfbobo_admin_admin/Integrated-Smart-Teaching-System ## Basic Information - **Project Name**: 智教一体化系统 - **Description**: 基于 Spring Cloud Alibaba 微服务架构的 AI 智慧教学平台,系统分为 5 个独立服务——用户服务、课程资源服务、AI智能服务、作业考试服务、学情分析服务,覆盖教学全流程。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2026-10-11 - **Last Updated**: 2026-10-11 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 智教一体化系统(Integrated Smart Teaching System) 一个面向培训机构管理的**微服务系统**,内置 **AI 助手**:可对话问答、多步编排查询业务数据、自动批改作业,并对检索与生成质量做了**量化评测闭环**。 > 核心亮点集中在 `ai-service`:Agent 编排 / RAG / 结构化输出 / 评测闭环 / MCP。 --- ## 一、技术栈 | 层 | 技术 | |---|---| | 语言/框架 | Java 21 · Spring Boot 4.0 · Spring Cloud(Nacos / Sentinel / OpenFeign / Gateway) | | AI | **Spring AI**(spring-ai-alibaba DashScope 通义千问)· **MCP Server** · Elasticsearch(向量库) | | 数据 | MySQL(3 库 21 表)· MyBatis · PageHelper | | 存储 | 阿里云 OSS(文件上传) | | 安全 | JWT · BCrypt · 角色权限 AOP(`@RequireRole`) | | 前端 | Vue 3 · Vite · Element Plus · Pinia · ECharts · marked | | 中间件 | Nacos(注册发现)· Sentinel(熔断限流) | --- ## 二、系统功能概览 - 员工 / 部门 / 学科 / 课程 / 班级 / 学生管理 - 知识点 / 题库(5 种题型)/ 试卷组卷管理 - 作业下发、学生提交、AI 自动批改打分与反馈 - 数据大屏与学情分析(成绩趋势 / 知识点掌握 / 班级对比 / 预警 / 个人报告) - AI 助手(对话问答 / 多步编排查询 / RAG 知识问答 / 自动批改) - 三端登录(管理员 / 教师 / 学生)+ 角色权限控制 ## 三、系统架构 ```mermaid graph LR F[前端 Vue3] -->|/api 代理| G[Gateway :8090] G --> U[user-service :8081
员工/部门/学生/登录/文件] G --> C[course-service :8082
学科/课程/班级/知识点/题库/试卷] G --> A[ai-service :8083
AI助手/RAG/批改/MCP] G --> AS[assignment-service :8084
作业/提交] G --> R[analytics-service :8085
数据报表] A -->|Feign 写操作走业务鉴权| U A -->|混合检索| ES[(Elasticsearch :9202)] A -->|LLM 调用| DS[DashScope 通义千问] U & C & A & AS & R --> M[(MySQL · 3库21表)] G -.-> N[Nacos :8848] A -.-> S[Sentinel :8858] ``` 服务端口与职责: | 服务 | 端口 | 职责 | |---|---|---| | gateway-service | 8090 | 统一路由、鉴权拦截 | | user-service | 8081 | 员工/部门/学生/登录/文件上传/日志 | | course-service | 8082 | 学科/课程/班级/知识点/题库/试卷 | | **ai-service** | 8083 | **AI 助手 / RAG / 自动批改 / MCP / 评测** | | assignment-service | 8084 | 作业 / 提交 | | analytics-service | 8085 | 数据报表 / 学情分析 | --- ## 四、AI 能力亮点(核心) ### 1. Agent 多步编排(Function Calling) 把业务查询封装成 `@Tool` 注解方法,LLM 自主决定调用哪些工具、编排多步链路: - `ClazzTools`:查班级列表 → 定位班级 ID → 查班级学生名单 - `AnalyticsTools`:题库统计 / 查学生成绩 / 班级对比 / 预警学生 - `StudentTools`:新增学生(唯一写操作,走 Feign 复用业务鉴权) **示例**:用户说「分析 3 班学情」,AI 自主走「查班级 → 查学生 → 查成绩/对比/预警 → 综合成报告」,且最终数字严格来自工具返回,配合 `system.st` 里的「事实锚定 / 多步编排 / 能力边界」反幻觉提示词。 ### 2. 工具身份跨线程透传 工具调用发生在流式异步线程,`ThreadLocal` 会丢。用 Spring AI 的 **`ToolContext`** 显式注入 `userId/role`(`.toolContext(...)`),工具内再取回;写操作不裸调 mapper,而是经 Feign 转发到 user-service,复用其校验/加密/鉴权/日志。 ### 3. RAG 三段式检索(BM25 + 向量 + RRF + Rerank) 知识点问答不走朴素向量检索,而是自建三段式召回: 1. **混合召回**:ES 同时做 BM25 关键词 + dense_vector 余弦相似(Painless `script_score`) 2. **RRF 融合**:两路结果融合排序 3. **精排**:DashScope `qwen3-rerank` cross-encoder 二次排序 - Embedding:`text-embedding-v2`(1536 维) - 检索注入:`AiServiceimpl.buildDynamicContext` 把命中的知识点拼进 system prompt ### 4. 文档问答(长文档 chunking) 支持把学生手册、校规等长文档切块(400 字窗口 + 句号边界 + 50 字重叠)、向量化入 ES,做混合检索问答,命中后返回对应 chunk 文本。 ### 5. 结构化输出(BeanOutputConverter) 自动批改用 `BeanOutputConverter` + JSON Schema 约束,让 LLM 输出与 `GradeResult` 类型强一致,自动剥离 ```json 代码块并反序列化;保留 `0 ≤ score ≤ 满分` 业务越界校验。 ### 6. 端到端生成评测(LLM-as-judge) 不止评测检索(hit@5/MRR),还评测**生成质量**: - 规则指标:分数 MAE、完全一致率、越界率(零额外 LLM 调用) - **LLM-as-judge**:二次调用评审「分数合理性 / 评语准确性 / 是否幻觉」 复用生产同一条 `gradeInternal` 纯生成链路(不落库),保证评测即生产。入口 `POST /ai/grading/eval`。 ### 7. 流式输出(SSE) `Flux` 流式 + `SseEmitter` 桥接,前端打字机效果。 ### 8. MCP Server `@Tool` 工具统一注册为 `ToolCallbackProvider`,由 `spring-ai-starter-mcp-server-webmvc` 暴露成 MCP 协议(STREAMABLE,端点 `/mcp`),外部 AI 客户端可标准接入。 ### 9. 可移植模型抽象 + 熔断兜底 换模型只换 starter(`spring-ai-alibaba-starter-dashscope`)不动业务代码;AI 接口挂 `@SentinelResource` 熔断兜底,限流时快速返回不再死等 LLM。 --- ## 五、量化评测结果 ### RAG 检索评测(42 题:easy 30 + hard 12 语义改写) | 检索方案 | hit@5 | MRR | |---|---|---| | 纯向量 | 0.976 | 0.884 | | 混合检索(BM25+向量+RRF) | 0.976 | 0.900 | | **混合检索 + rerank 精排** | **1.0** | **0.984**(hard 0.944) | > 演进价值:rerank 救回唯一 miss,并把正确知识点排名大幅前移(hard MRR 0.593 → 0.944)。评测 harness 支持三种方案对比,入口 `POST /ai/rag/eval/compare`。 ### 生成评测(批改质量) 10 份作业(覆盖全对/部分对/全错/未作答),跑批改 → 算分数 MAE / 完全一致率 / 越界率 → LLM-as-judge 评反馈质量。入口 `POST /ai/grading/eval`(需 admin)。 | 指标 | 结果 | |---|---| | 分数 MAE(平均绝对分差) | 0.6 | | 完全一致率 | 0.6 | | 越界率(分数超出 [0,满分]) | 0 | | judge 分数合理性 | 1.0 | | judge 评语准确性 | 1.0 | | judge 无幻觉率 | 1.0 | --- ## 六、目录结构 ``` backend/ ├── gateway-service/ # 网关 + 鉴权 ├── user-service/ # 员工/部门/学生/登录 ├── course-service/ # 学科/课程/班级/知识点/题库/试卷 ├── assignment-service/ # 作业/提交 ├── analytics-service/ # 报表/学情 ├── ai-service/ # ★ AI 域 │ ├── service/impl/AiServiceimpl.java # 对话编排 + 自动批改 │ ├── tool/ # @Tool 工具(班级/学生/数据) │ ├── es/ # 向量灌输 + 三段式检索 + 文档 chunking │ ├── eval/ # RAG 评测 + 生成评测(LLM-as-judge) │ └── config/McpConfig # MCP Server ├── common/ common-dao/ # 公共模块 / 实体与 Mapper └── sql/reset-data.sql # 3 库 21 表全量种子数据 frontend/ # Vue3 + Element Plus ``` --- ## 七、快速开始 **前置**:JDK 21、Maven、MySQL、Elasticsearch(9202)、Nacos(8848) 1. 启动中间件:MySQL、Elasticsearch、Nacos 2. 建库:执行 `backend/sql/reset-data.sql`(3 库 21 表 + 种子数据) 3. 配置环境变量:`DASHSCOPE_API_KEY`、`DB_PASSWORD` 4. 依次启动:`gateway-service`、`user-service`、`course-service`、`assignment-service`、`analytics-service`、`ai-service` 5. 前端:`cd frontend && npm install && npm run dev` **默认账号**:管理员 `admin / 123456`;学生/员工 `123456`(见 `reset-data.sql`)。 --- ## 八、关键设计取舍 - **ES 当向量库**:ES 同时提供 dense_vector + BM25,天然适合混合检索;数据量小用不上 Milvus,换专用向量库属过度设计且需额外拼 BM25。 - **检索手写、编排用 Spring AI**:混合检索/rerank 无法用 `VectorStore` 单一抽象表达,故手写;对话编排、工具调用、结构化输出、MCP 用 Spring AI 原生能力。 - **写操作走 Feign 复用鉴权**:AI 工具不裸调 mapper,避免绕过业务校验/权限。 - **评测说明**:RAG 评测集为自建 42 题(样本偏小),满分 1.0 不代表泛化能力,重点是评测闭环方法论与 0.64 → 1.0 的量化演进过程,后续计划引入公开 benchmark。