本文档用于定义当前 AI 教育系统的学生端 Web 客户端设计方案。
设计前提:
- 当前仓库中的后台管理系统继续承担管理员端、教师端。
- 学生端单独建设为新的 Web 客户端,不与后台管理共用页面壳层。
- 学生端必须与现有教师端、教育业务数据、AI 能力、账号密码体系互通。
- 第一版优先保证“能登录、能看课、能做作业、能看批改、能用 AI 学习工具”。
当前系统后端已经具备以下能力,可直接复用给学生端:
- 登录认证:
/api/auth/login、/api/auth/logout - 用户角色体系:
sys_user、sys_role、sys_user_role - 学生业务信息:
edu_student - 班级关系:
edu_class、edu_class_student - 课程与章节:
edu_course、edu_chapter、edu_knowledge_point - 作业与题目:
edu_homework、edu_homework_question、edu_question - 学生答题:
edu_student_answer - 错题本:
edu_wrong_question - AI 对话:
/api/ai/chat - AI 批改记录:
/api/ai/reviews - 文档批阅、知识脑图、生成练习、教学素材、项目生成等教师侧 AI 工具
学生端不是独立业务系统,而是复用当前后端数据库和接口体系的另一套前端。
互通关系如下:
- 教师端维护课程、章节、题库、作业。
- 学生端读取教师已发布的数据,不重复建模。
- 学生在学生端提交作业、产生答题记录和错题。
- 教师端继续在后台查看答题记录、批改结果、错题情况和 AI 建议。
- 学生端读取教师确认后的最终结果,不绕开教师最终确认。
也就是说:
- 教师端负责“教、配、发、批、管”
- 学生端负责“学、做、问、看、改”
学生端必须复用当前系统统一账号体系,不单独建一套登录库。
统一使用:
sys_user:登录账号sys_role:角色sys_user_role:用户角色关系edu_student:学生业务信息
含义如下:
sys_user管登录身份、用户名、密码、状态edu_student管学生业务属性,如学号、班级、学校- 一个学生先是系统用户,再绑定学生表
学生端第一版采用与后台相同的登录接口:
POST /api/auth/login
入参:
{
"username": "student",
"password": "123456"
}出参:
{
"code": 200,
"message": "登录成功",
"data": {
"token": "xxxx",
"userId": 40001,
"username": "student",
"roleCode": "student"
}
}学生端前端需要在登录后校验 roleCode。
只允许:
student
进入学生端页面。
如果登录用户是:
adminteacherschool_admin
则学生端应提示:
当前账号不是学生账号,请前往教师/管理后台登录。
根据现有种子数据,当前系统已有演示学生账号:
- 用户名:
student - 密码:
123456
说明:
- 密码存储仍由后端
sys_user.password统一管理 - 学生端不能自行改数据库密码规则
- 后续如果增加“修改密码 / 找回密码”,仍走统一认证服务
学生端 Web 第一版定位为:
面向学生的学习与作业入口。
不做后台管理感页面,不暴露教师管理菜单,不承载系统管理功能。
页面风格要求:
- 比教师后台更轻
- 更接近学习平台 / 课程平台
- 明确区分“学习任务”和“AI 学习辅助”
- 支持 PC 端优先,兼顾平板
第一版建议做 6 个一级功能。
功能目标:
- 学生使用统一账号密码登录
- 登录后写入 token
- 自动读取本人学生信息
页面内容:
- 用户名
- 密码
- 登录按钮
- 登录失败提示
复用接口:
POST /api/auth/login
功能目标:
- 登录后展示当前学生的学习总览
- 作为学生端首页入口
页面内容建议:
- 欢迎信息
- 我的班级
- 我的课程数量
- 待完成作业数
- 最近错题数
- 快捷入口
- 去做作业
- 打开 AI 对话
- 查看错题本
互通关系:
- 数据来自教师端已配置课程、班级、作业和错题数据
功能目标:
- 学生查看自己当前关联班级/课程
- 进入课程后查看章节结构
页面内容建议:
- 课程卡片列表
- 课程名称
- 任课教师
- 班级
- 学分/类型
- 课程详情页
- 章节树
- 知识点概览
- 相关作业
互通关系:
- 课程数据由教师端维护
- 学生端只读展示
第一版要求:
- 至少能基于
edu_student -> edu_class -> edu_course查出学生课程 - 至少能读出课程下的章节
功能目标:
- 学生查看教师发布的作业
- 进入作业后完成题目作答
- 提交后查看 AI/教师反馈
页面结构建议:
-
作业列表页
- 作业标题
- 所属课程
- 开始时间
- 截止时间
- 完成状态
-
作业详情页
- 作业说明
- 题目列表
- 每题分值
- 作答区
- 提交按钮
-
提交结果页
- 总体状态
- 各题作答情况
- AI 反馈
- 教师反馈
互通关系:
- 教师端创建作业、配置题目
- 学生端读取作业并提交答案
- 教师端继续批改或确认
- 学生端只显示最终可见结果
第一版边界:
- 优先支持文本题作答
- 不优先做复杂富文本答题器
- 图片上传答题可作为第二阶段
功能目标:
- 学生查看自己错题
- 结合 AI 建议进行复盘
页面内容建议:
-
错题列表
- 所属课程
- 题目标题
- 最近出错时间
- 错误次数
- 复盘状态
-
错题详情
- 原题
- 正确答案
- 自己答案
- AI 建议
- 教师建议
互通关系:
- 错题由学生答题与教师/AI 批改共同产生
- 教师端可查看错题记录
- 学生端负责查看和复盘
功能目标:
- 为学生提供学习场景下的 AI 对话入口
- 服务于答疑、知识解释、题目分析、错题复盘
第一版建议在学生端只开放这些能力:
- 普通文本问答
- 图片/文档辅助问答
- 基于当前学习上下文进行提问
不直接开放教师工具:
- 知识脑图
- 生成练习
- 教学素材
- 项目生成
这些仍属于教师端 AI 管理功能。
互通关系:
- 复用现有
POST /api/ai/chat - 复用现有模型配置和 Prompt 模板体系
- 学生端只切到学生场景模板,不复用教师问答文案
因此后续建议补一个新的 Prompt 模板:
student_chat_default
建议学生端一级导航如下:
首页
我的课程
我的作业
错题本
AI 学习助手
个人中心
说明:
- 不暴露后台“系统管理 / 教育基础 / AI 管理”
- 不把教师端菜单直接搬到学生端
- 课程
- 章节
- 知识点
- 题库题目
- 作业
- 题目分值
- 学生答题记录
- 作业提交状态
- AI 对话学习痕迹(如果后续落库)
- AI 批改建议
- 教师确认后的最终分数
- 错题本
- AI 复盘建议
学生端第一版尽量复用现有接口;不足的再新增学生视角接口。
POST /api/auth/loginPOST /api/auth/logoutGET /api/edu/coursesGET /api/edu/chaptersGET /api/edu/homeworksGET /api/edu/answersGET /api/edu/wrong-questionsPOST /api/ai/chat
为了避免学生端直接拉全量后台数据,建议新增学生视角聚合接口:
GET /api/student/dashboard
返回:
- 学生基本信息
- 待完成作业数
- 已完成作业数
- 错题数
- 当前课程数
GET /api/student/coursesGET /api/student/courses/{courseId}
只返回当前学生可见课程。
GET /api/student/homeworksGET /api/student/homeworks/{homeworkId}POST /api/student/homeworks/{homeworkId}/submit
说明:
- 学生提交作业建议走学生专用聚合接口
- 由后端内部再拆分写入
edu_student_answer
GET /api/student/wrong-questionsGET /api/student/wrong-questions/{id}
GET /api/student/profile
学生端第一版不新增大批业务表,主要复用现有表。
| 学生端功能 | 主要数据表 |
|---|---|
| 登录 | sys_user、sys_user_role、sys_role |
| 学生身份 | edu_student |
| 班级关系 | edu_class、edu_class_student |
| 课程 | edu_course、edu_course_teacher |
| 章节 | edu_chapter |
| 知识点 | edu_knowledge_point |
| 作业 | edu_homework、edu_homework_question |
| 作答 | edu_student_answer |
| 错题本 | edu_wrong_question |
| AI 对话审计 | ai_generation_record、ai_token_usage |
后续如果要增强学生端 AI 历史,可再新增:
ai_chat_sessionai_chat_message
但第一版不是必须项。
沿用当前系统 Sa-Token 登录态机制。
学生端需:
- 保存 token
- 每次请求自动带上 token
- token 失效时自动跳登录页
学生端最关键的不是菜单权限,而是“数据必须只属于当前学生本人”。
必须保证:
- 学生只能看到自己的作业
- 学生只能看到自己的答题记录
- 学生只能看到自己的错题本
- 学生不能查看其他学生的成绩与反馈
学生端不应暴露教师端 AI 管理功能。
即使知道接口地址,也不应允许调用:
- 文档批阅
- 知识脑图(教师版本)
- 生成练习(教师版本)
- 教学素材
- 项目生成
后端建议后续增加角色校验拦截:
- 教师功能接口:仅
teacher/admin - 学生功能接口:仅
student
学生端页面不适合继续沿用教师后台的“管理面板”风格。
建议学生端风格:
- 更轻量
- 更卡片化
- 更偏学习平台
- 首页明确学习状态
- 减少后台式表格
学生端建议单独建一个新前端目录,例如:
student-ui/
技术栈可继续沿用:
- React
- Vite
- TypeScript
- React Router
- Axios
- Zustand 或 React Context
理由:
- 与当前教师端技术栈一致
- API 复用成本低
- 团队维护成本低
建议按以下顺序建设学生端:
- 登录页
- 首页概览
- 我的课程
目标:
- 学生能登录
- 能看到自己的基础学习信息
- 我的作业
- 作业提交
- 错题本
目标:
- 学生学习主流程打通
- AI 学习助手
- 作业结果与 AI 反馈展示
- 个人中心
目标:
- 把 AI 能力接入到学生学习闭环
| 教师端功能 | 学生端对应 |
|---|---|
| 课程管理 | 我的课程 |
| 章节管理 | 课程章节浏览 |
| 题库管理 | 作业题目来源 |
| 作业管理 | 我的作业 |
| AI 批改 | 作业结果展示 |
| 错题管理/错题本数据 | 我的错题本 |
| AI 对话 | AI 学习助手 |
当前新增的教师 AI 管理功能与学生端关系如下:
| 教师 AI 功能 | 学生端关系 |
|---|---|
| 知识脑图 | 学生端暂不开放,后续可转成“课程脑图阅读页” |
| 生成练习 | 教师生成后可转为作业/练习内容,学生端只接收结果 |
| 教学素材 | 仅教师端使用 |
| 项目生成 | 仅教师端使用,后续可转成学生课程项目任务 |
为了控制范围,学生端第一版暂不做:
- 独立注册
- 手机验证码登录
- 第三方登录
- 复杂消息中心
- 直播课堂
- 在线考试监考
- 项目在线编译运行
- 学生端独立知识脑图生成
- 学生端独立出题功能
当前系统已经具备建设学生端 Web 的基础条件。
核心原因是:
- 统一账号体系已存在。
- 学生、课程、章节、作业、答题、错题表已存在。
- AI 对话与 AI 审计能力已存在。
- 教师端负责生产教学数据,学生端只需围绕学习主流程消费数据。
因此学生端第一版应定义为:
一个与教师端后台共用后端、共用账号、共用教育业务数据、但界面独立的学习型 Web 客户端。
后续如果开始正式开发,建议下一步先做两件事:
- 在根目录下新增学生端前端工程目录。
- 先补学生视角聚合接口,再开始页面开发。