文章目录
- 1 项目演示视频
- 2 是否包含论文文档
- 3 详细描述
- 3.1 1. 项目概述
- 3.2 2. 角色设计
- 3.3 3. 角色功能设计
- 3.4 4. AI 功能设计点
- 3.5 5、亮点与创新点
- 3.6 6. 业务表结构设计
- 3.6.1 6.1 核心业务表
- 3.6.1.1 6.1.1 eduCourse(课程)
- 3.6.1.2 6.1.2 eduCourseMember(课程成员)
- 3.6.1.3 6.1.3 eduMaterialCategory(资料分类)
- 3.6.1.4 6.1.4 eduCourseMaterial(课程资料)
- 3.6.1.5 6.1.5 eduKnowledgePoint(知识点)
- 3.6.1.6 6.1.6 eduQuestion(题目)
- 3.6.1.7 6.1.7 eduAssignment(作业/练习)
- 3.6.1.8 6.1.8 eduSubmission(提交记录)
- 3.6.1.9 6.1.9 aiChatSession(问答会话)
- 3.6.1.10 6.1.10 aiChatMessage(问答消息)
- 3.6.1.11 6.1.11 eduWrongQuestion(错题本)
- 3.6.1.12 6.1.12 eduLearningPlan(学习计划)
- 3.6.1.13 6.1.13 eduLearningTask(学习任务)
- 3.6.1.14 6.1.14 eduLearningStatDaily(学习数据日报)
- 3.6.1 6.1 核心业务表
- 4 技术描述
- 5 项目截图描述
项目演示视频
是否包含论文文档
否
详细描述
1. 项目概述
1.1 项目背景
在高校与职业教育场景中,学生的知识基础差异较大,学习路径与薄弱点呈现高度个性化。传统课堂难以对每位学生做到“随问随答、因材施教”,学生在课后遇到概念理解、题目思路、解题步骤与错因定位时,往往依赖碎片化搜索或等待教师统一答疑,导致学习节奏被打断、练习效率低、错题反复出现。为提升学习效果与教学管理效率,本项目建设“学生个性化学习问题解答 AI 助手系统”,在课程与题库数据的基础上,为学生提供多轮问答、解析生成、智能练习与学习计划,并沉淀错题与学习数据画像;同时为教师提供课程管理、资料管理、作业/练习发布与批改统计、学情分析与答疑辅助。系统通过对课程资料与知识点体系的结构化管理,让 AI 输出可追溯、可纠错、可迭代, 形成“提问—解释—练习—反馈—再学习”的闭环,最终实现学生学习效率提升与教师教学决策支持。
1.2 角色作用
-
教师(TEACHER / roleKey=teacher):负责课程全生命周期管理,围绕教学目标与大纲组织课程内容,维护课程资料、知识点、题库并发布作业/练习,查看本课程下的提交与统计数据。教师侧功能与数据范围以“本人授课课程”为边界:仅可查看/操作本人创建(teacherId=当前用户)的课程及其下属资源;在学生管理中仅可查看/管理本人创建的学生账号。
-
学生(STUDENT / roleKey=student):以提升个人学习效果为核心,加入课程后可查阅课程资料、学习知识点并参与作业/练习。学生侧功能与数据范围以“本人加入课程 + 本人数据”为边界:仅可查看自己加入课程的资料/知识点/作业,提交记录与学习计划/任务/学习数据日报均仅对本人可见。
-
超级管理员(SUPERADMIN / roleKey=superadmin):拥有系统管理与平台治理权限,可管理组织/账号/权限与系统配置,保障系统稳定与数据安全;在教育业务模块中可查看全部数据并进行全局维护(不受 teacher/student 数据边界限制)。
2. 角色设计
2.1 角色清单与介绍
-
教师(TEACHER / teacher):课程负责人,面向班级组织教学资源与练习任务,维护课程内容与题库,发布作业/练习并查看提交与学习数据。
-
学生(STUDENT / student):学习执行者,围绕课程目标进行资料学习、问答求解与作业练习,使用错题本与学习计划持续巩固薄弱点。
-
超级管理员(SUPERADMIN / superadmin):平台治理者,具备系统管理全量菜单权限(系统管理、监控、教育业务等),负责权限、组织、配置与审计等。
说明:以下为当前数据库中“教育业务(route.edu)”菜单下的可见页面(仅列出目录与页面菜单,不包含系统管理/监控等菜单)。
教师(teacher)
-
课程管理(/edu/course)
-
课程成员(/edu/course-member)
-
资料分类(/edu/material-category)
-
课程资料(/edu/course-material)
-
知识点(/edu/knowledge-point)
-
题库(/edu/question)
-
作业/练习(/edu/assignment)
-
提交记录(/edu/submission)
-
学习数据日报(/edu/learning-stat-daily)
-
AI 问答(/edu/ai-assistant)
-
学生管理(/edu/student)
学生(student)
-
课程管理(/edu/course)
-
课程资料(/edu/course-material)
-
知识点(/edu/knowledge-point)
-
作业/练习(/edu/assignment)
-
提交记录(/edu/submission)
-
错题本(/edu/wrong-question)
-
学习计划(/edu/learning-plan)
-
学习任务(/edu/learning-task)
-
学习数据日报(/edu/learning-stat-daily)
-
AI 问答(/edu/ai-assistant)
3. 角色功能设计
3.1 教师(TEACHER)
-
数据范围说明:教师端所有“课程相关资源”均以 teacherId=当前教师的课程为边界;仅能查看/新增/修改/删除本人课程及其下属数据(课程成员、资料分类、课程资料、知识点、题库、作业/练习、提交记录)。学生管理与学习数据也仅限于“本人创建的学生”。
-
课程管理(/edu/course):创建/编辑/删除课程,维护课程名称、学期、状态、课程大纲、教学目标、封面与起止日期;教师新增课程时 teacherId 默认取当前用户。
-
课程成员(/edu/course-member):为本人课程添加/移除学生成员,维护成员状态、课程内角色与加入/访问时间;仅可操作本人课程的成员关系。
-
资料分类(/edu/material-category):维护资料分类树(父分类、名称、排序、可见性),为课程资料归类提供结构化目录;仅可管理本人创建的分类数据。
-
课程资料(/edu/course-material):上传/编辑/删除资料(标题、文件、分类、所属课程),支持下载次数统计;仅可操作本人课程下资料。
-
知识点(/edu/knowledge-point):维护课程知识点体系(章节/模块、父子知识点、类型、难度、内容等),用于题库关联与 AI 问答上下文;仅可操作本人课程下知识点。
-
题库(/edu/question):维护题目(题型、难度、分值、题干、选项/答案/解析、关联知识点、状态、来源);仅可操作本人课程下题目。
-
作业/练习(/edu/assignment):从题库组装题目生成作业/练习,设置发布/截止/关闭时间与总分等;仅可操作本人课程下作业。
-
提交记录(/edu/submission):查看本人课程下的学生提交记录、得分与明细;用于教学复盘与过程统计。
-
学习数据日报(/edu/learning-stat-daily):查看本人创建学生的学习数据日报(活跃分钟、问答次数、练习次数、正确率等),支持按课程筛选。
-
AI 问答(/edu/ai-assistant):按课程进行 AI 问答;会话记录仅对当前登录用户可见。
-
学生管理(/edu/student):创建学生账号并分配学生角色;仅可查看/删除本人创建的学生账号(用于课程成员管理与学情跟踪的账号来源)。
3.2 学生(STUDENT)
-
数据范围说明:学生端“课程相关资源”以本人加入课程为边界;提交、学习计划/任务、学习数据日报与 AI 会话均以“本人数据”为边界。
-
课程(/edu/course):查看本人加入的课程列表与课程信息。
-
课程资料(/edu/course-material):查看本人课程下资料并下载。
-
知识点(/edu/knowledge-point):查看本人课程下知识点内容(用于学习与问答)。
-
作业/练习(/edu/assignment):查看本人课程下作业/练习,按题目提交答案,查看得分与解析;可标记“是否已提交”状态。
-
提交记录(/edu/submission):查看本人提交记录与明细(包含题目得分、判题依据等)。
-
错题本(/edu/wrong-question):查看/维护本人错题与掌握状态,支持复习与标记掌握情况。
-
学习计划(/edu/learning-plan):生成/查看/调整个人学习计划(关联课程、时间范围、目标等)。
-
学习任务(/edu/learning-task):查看每日学习任务并更新完成状态。
-
学习数据日报(/edu/learning-stat-daily):查看个人学习数据日报趋势(活跃时长、练习/问答次数、正确率等)。
-
AI 问答(/edu/ai-assistant):按课程进行多轮问答,会话记录仅对本人可见。
3.3 超级管理员(SUPERADMIN)
-
系统管理:用户/角色/菜单/部门/岗位/字典/参数/通知/文件/客户端等平台能力管理。
-
系统监控:缓存监控、在线用户、操作/登录日志等。
-
教育业务全量维护:在教育业务模块下具备查看与维护全量数据的能力(不受 teacher/student 数据边界限制)。
4. AI 功能设计点
-
基于课程资料与题库的检索增强问答:将课程资料、知识点体系、题目解析等结构化为可检索内容,学生提问时先在课程范围内检索相关片段,再由大模型生成答案与分步骤解析,并给出引用来源(资料标题/题目编号/知识点)。支持学生对回答进行“有用/无用/纠错”反馈,教师可将纠错沉淀为标准解析,从而不断提升回答的一致性与贴合课程语境的能力。
-
个性化练习与学习计划生成:系统结合学生的正确率、错题分布、知识点掌握状态与近期活跃度,自动识别薄弱知识点并给出分层练习(由易到难、逐步覆盖)与每日学习计划(任务拆解、预计用时、复习安排)。在学生完成练习后,AI 对错因进行归因并调整后续推荐,实现“诊断—练习—反馈—再规划”的自适应学习路径。
5、亮点与创新点
-
数据驱动的闭环学习:以课程资料、题库与知识点为底座,将问答、练习、错题与学习计划串联成可追踪的学习链路;学生每一次提问与作答都会沉淀为画像数据,系统据此动态调整练习与计划,帮助学生把时间投入到最关键的薄弱点上,显著提升学习效率与复习质量。
-
教师侧“答疑辅助 + 学情分析”一体化:不仅提供发布与批改能力,还把学生高频问题、错题集中点与知识点掌握趋势可视化呈现,支持教师快速定位教学难点;通过纠错沉淀权威解析,减少重复答疑与口径不一致,提升教学管理效率与教学质量。
-
可控、可追溯的 AI 输出:问答以课程范围检索为先,结合引用来源、反馈纠错与标准解析沉淀机制,降低“幻觉”风险;同时通过权限与范围约束,确保不同课程之间的数据隔离,满足教学场景对准确性、合规性与可解释性的要求。
-
面向规模化教学的可运营能力:通过活跃度、正确率、薄弱点与任务完成率等指标,形成可运营的教学看板;管理员可配置 AI 策略与配额、审计关键操作并进行内容治理,为大规模部署提供稳定、可管控、可持续优化的能力支撑。
6. 业务表结构设计
6.1 核心业务表
每个表必须包含基础字段(驼峰):id-Long、createBy-Long、createTime-Date、updateBy-Long、updateTime-Date、delFlag-String。
6.1.1 eduCourse(课程)
| 字段名称 | 字段类型 |
|---|---|
| id | Long |
| courseName | String |
| courseCode | String |
| teacherId | Long |
| term | String |
| status | String |
| outline | String |
| teachingObjective | String |
| coverUrl | String |
| startDate | Date |
| endDate | Date |
| createBy | Long |
| createTime | Date |
| updateBy | Long |
| updateTime | Date |
| delFlag | String |
6.1.2 eduCourseMember(课程成员)
| 字段名称 | 字段类型 |
|---|---|
| id | Long |
| courseId | Long |
| studentId | Long |
| joinTime | Date |
| memberStatus | String |
| roleInCourse | String |
| lastAccessTime | Date |
| progressPercent | Integer |
| createBy | Long |
| createTime | Date |
| updateBy | Long |
| updateTime | Date |
| delFlag | String |
6.1.3 eduMaterialCategory(资料分类)
| 字段名称 | 字段类型 |
|---|---|
| id | Long |
| parentId | Long |
| categoryName | String |
| sortOrder | Integer |
| visibility | String |
| createBy | Long |
| createTime | Date |
| updateBy | Long |
| updateTime | Date |
| delFlag | String |
6.1.4 eduCourseMaterial(课程资料)
| 字段名称 | 字段类型 |
|---|---|
| id | Long |
| courseId | Long |
| categoryId | Long |
| title | String |
| fileName | String |
| fileUrl | String |
| fileType | String |
| fileSize | Long |
| fileMd5 | String |
| previewUrl | String |
| downloadCount | Integer |
| createBy | Long |
| createTime | Date |
| updateBy | Long |
| updateTime | Date |
| delFlag | String |
6.1.5 eduKnowledgePoint(知识点)
| 字段名称 | 字段类型 |
|---|---|
| id | Long |
| courseId | Long |
| parentId | Long |
| moduleId | String |
| kpCode | String |
| kpName | String |
| description | String |
| kpType | String |
| difficultyLevel | String |
| estimatedMinutes | Integer |
| anchorSummary | String |
| contentHtml | String |
| mediaJson | String |
| sortOrder | Integer |
| createBy | Long |
| createTime | Date |
| updateBy | Long |
| updateTime | Date |
| delFlag | String |
6.1.6 eduQuestion(题目)
| 字段名称 | 字段类型 |
|---|---|
| id | Long |
| courseId | Long |
| questionType | String |
| difficulty | Integer |
| score | Integer |
| stem | String |
| optionsJson | String |
| answerJson | String |
| analysis | String |
| knowledgePointIdsJson | String |
| source | String |
| status | String |
| createBy | Long |
| createTime | Date |
| updateBy | Long |
| updateTime | Date |
| delFlag | String |
6.1.7 eduAssignment(作业/练习)
| 字段名称 | 字段类型 |
|---|---|
| id | Long |
| courseId | Long |
| title | String |
| assignmentType | String |
| status | String |
| publishTime | Date |
| dueTime | Date |
| closeTime | Date |
| totalScore | Integer |
| questionIdsJson | String |
| configJson | String |
| createBy | Long |
| createTime | Date |
| updateBy | Long |
| updateTime | Date |
| delFlag | String |
6.1.8 eduSubmission(提交记录)
| 字段名称 | 字段类型 |
|---|---|
| id | Long |
| assignmentId | Long |
| courseId | Long |
| studentId | Long |
| submitTime | Date |
| submitStatus | String |
| answersJson | String |
| objectiveScore | Integer |
| subjectiveScore | Integer |
| totalScore | Integer |
| aiExplain | String |
| reviewedByTeacherId | Long |
| reviewedTime | Date |
| createBy | Long |
| createTime | Date |
| updateBy | Long |
| updateTime | Date |
| delFlag | String |
6.1.9 aiChatSession(问答会话)
| 字段名称 | 字段类型 |
|---|---|
| id | Long |
| userId | Long |
| courseId | Long |
| title | String |
| sceneType | String |
| sessionStatus | String |
| lastMessageTime | Date |
| messageCount | Integer |
| createBy | Long |
| createTime | Date |
| updateBy | Long |
| updateTime | Date |
| delFlag | String |
6.1.10 aiChatMessage(问答消息)
| 字段名称 | 字段类型 |
|---|---|
| id | Long |
| sessionId | Long |
| messageSeq | Integer |
| messageRole | String |
| contentType | String |
| content | String |
| attachmentsJson | String |
| modelName | String |
| tokenUsage | Integer |
| feedbackStatus | String |
| correctedContent | String |
| createBy | Long |
| createTime | Date |
| updateBy | Long |
| updateTime | Date |
| delFlag | String |
6.1.11 eduWrongQuestion(错题本)
| 字段名称 | 字段类型 |
|---|---|
| id | Long |
| studentId | Long |
| courseId | Long |
| questionId | Long |
| firstWrongTime | Date |
| lastReviewTime | Date |
| wrongCount | Integer |
| masteryStatus | String |
| note | String |
| createBy | Long |
| createTime | Date |
| updateBy | Long |
| updateTime | Date |
| delFlag | String |
6.1.12 eduLearningPlan(学习计划)
| 字段名称 | 字段类型 |
|---|---|
| id | Long |
| studentId | Long |
| courseId | Long |
| planName | String |
| startDate | Date |
| endDate | Date |
| status | String |
| generatedBy | String |
| taskOverview | String |
| overviewPrompt | String |
| targetJson | String |
| adjustCount | Integer |
| createBy | Long |
| createTime | Date |
| updateBy | Long |
| updateTime | Date |
| delFlag | String |
6.1.13 eduLearningTask(学习任务)
| 字段名称 | 字段类型 |
|---|---|
| id | Long |
| planId | Long |
| courseId | Long |
| studentId | Long |
| taskDate | Date |
| taskType | String |
| title | String |
| content | String |
| expectedMinutes | Integer |
| completedFlag | String |
| completedTime | Date |
| createBy | Long |
| createTime | Date |
| updateBy | Long |
| updateTime | Date |
| delFlag | String |
6.1.14 eduLearningStatDaily(学习数据日报)
| 字段名称 | 字段类型 |
|---|---|
| id | Long |
| userId | Long |
| courseId | Long |
| statDate | Date |
| activeMinutes | Integer |
| qaCount | Integer |
| practiceCount | Integer |
| correctRate | String |
| weakKpIdsJson | String |
| createBy | Long |
| createTime | Date |
| updateBy | Long |
| updateTime | Date |
| delFlag | String |
技术描述
- 语言与框架:Java 17 + Spring Boot 3(Spring Web MVC、Validation、AOP、Actuator)
- Web 容器:Undertow
- 构建与工程:Maven 多模块
- 认证鉴权:Sa-Token + JWT(配合自定义 Security 配置、登录/验证码等)
- 数据访问:MyBatis-Plus + Mapper XML;动态数据源 dynamic-datasource;连接池 HikariCP;SQL 监控 P6Spy(dev 可开)
- 数据库:默认 MySQL
- 数据库迁移:Liquibase(changelog/sql 方式管理变更)
- 缓存与 Redis:Spring Data Redis + Redisson;本地缓存 Caffeine(并有自定义 Cache 管理封装)
- 文件/对象存储:支持本地上传策略;OSS 能力
- 其它通用能力:ip2region(离线 IP 定位)、MapStruct Plus、Hutool、邮件组件(可选)、全局异常处理、XSS 防护、国际化资源
- 推送:SSE 服务端模块(含通用 SSE 与 Chat SSE)
前端
- 框架与构建:Vue 3 + Vite + TypeScript(ESM 工程)
- UI 组件:Naive UI
- 状态管理:Pinia
- 路由:Vue Router 4 + elegant-router(路由/类型自动生成)
- 工具库:@vueuse/core、dayjs、iconify、echarts、streamsaver、jsencrypt
- 样式体系:UnoCSS(并配合 tailwind-merge 做 class 合并)
- 请求与鉴权:基于 axios 的二次封装(@sa/axios),在请求拦截中统一注入 token、支持统一错误处理;本地存储使用 localStorage/sessionStorage 封装(localStg/sessionStg)
- 实时通信:SSE(EventSource/useEventSource)+ WebSocket 工具封装
- 国际化:vue-i18n(中/英资源)
项目截图描述
截图


















