项目概述

项目背景

本系统针对计算机组成原理课程,利用大模型(DeepSeek API)实现练习题的自动生成与个性化推荐。系统结合学生答题行为构建学习画像,通过贝叶斯知识追踪(BKT)算法动态更新学生知识掌握度,实现"生成-评估-推荐-反馈"的闭环学习系统。

核心功能

  • 知识点结构化管理与可视化
  • 基于大模型的多题型自动出题(选择题、填空题)
  • 学生知识掌握度动态追踪(BKT算法)
  • 个性化题目推荐算法
  • 教师端学情分析与题目审核
  • 学生端练习、错题本、学习统计

一、系统架构设计

1.1 总体架构

系统采用前后端分离的三层架构:

┌─────────────────────────────────────────────────────────┐
│                    表现层(前端)                          │
│         Vue3 + Element Plus + ECharts                    │
│         用户交互界面 / 数据可视化 / 路由管理               │
└─────────────────────────────────────────────────────────┘
                          ↕ HTTP/REST API
┌─────────────────────────────────────────────────────────┐
│                  业务逻辑层(后端)                        │
│         Django + Django REST Framework                   │
│    ┌──────────────┬──────────────┬──────────────┐       │
│    │ 知识点管理   │  智能出题    │  推荐算法    │       │
│    │   模块       │   模块       │    模块      │       │
│    └──────────────┴──────────────┴──────────────┘       │
│    ┌──────────────┬──────────────┬──────────────┐       │
│    │ 用户认证     │  答题评估    │  学情分析    │       │
│    │   模块       │   模块       │    模块      │       │
│    └──────────────┴──────────────┴──────────────┘       │
└─────────────────────────────────────────────────────────┘
                          ↕ ORM
┌─────────────────────────────────────────────────────────┐
│                    数据层(数据库)                        │
│                    SQLite 数据库                          │
│    用户表 | 知识点表 | 题目表 | 答题记录表 | 掌握度表    │
└─────────────────────────────────────────────────────────┘
                          ↕ API调用
┌─────────────────────────────────────────────────────────┐
│                  外部服务(AI模型)                        │
│              DeepSeek API (OpenAI兼容)                   │
│                  智能题目生成服务                          │
└─────────────────────────────────────────────────────────┘

1.2 核心模块说明

1.2.1 知识点管理模块

  • 知识点的增删改查操作
  • 支持树形层级结构(章节-知识点)
  • 难度标签管理(简单/中等/困难)
  • 知识点关联题目统计

1.2.2 智能出题模块

  • 调用DeepSeek API生成题目
  • 支持选择题和填空题两种题型
  • 题目质量控制(去重、格式校验)
  • 本地模板兜底机制

1.2.3 学生模型模块

  • 贝叶斯知识追踪(BKT)算法
  • 动态更新知识掌握度
  • 答题历史记录
  • 学习趋势分析

1.2.4 推荐算法模块

  • 基于掌握度的推荐策略
  • 薄弱知识点优先推荐
  • 个性化练习题推送

二、技术栈详解

2.1 后端技术栈

2.1.1 Django 5.0.7

  • Python Web框架,提供完整的MVC架构
  • 内置ORM系统,简化数据库操作
  • 强大的中间件机制,支持跨域、安全策略等
  • 自动化的管理后台

2.1.2 Django REST Framework

  • 构建RESTful API的工具包
  • 提供序列化器(Serializer)进行数据转换
  • 内置分页、过滤、认证等功能
  • 支持ViewSet快速构建CRUD接口

2.1.3 SQLite 数据库

  • 轻量级嵌入式数据库
  • 无需独立服务器进程
  • 适合中小型应用和开发测试
  • 支持标准SQL语法

2.1.4 DeepSeek API

  • 基于大语言模型的AI服务
  • 兼容OpenAI API接口规范
  • 支持结构化JSON输出
  • 用于智能生成练习题

2.2 前端技术栈

2.2.1 Vue 3.5.12

  • 渐进式JavaScript框架
  • Composition API提供更灵活的代码组织
  • 响应式数据绑定
  • 组件化开发模式

2.2.2 Vite 5.4.10

  • 新一代前端构建工具
  • 基于ES Module的快速冷启动
  • 热模块替换(HMR)
  • 生产环境优化打包

2.2.3 Element Plus 2.8.7

  • 基于Vue 3的UI组件库
  • 提供丰富的表单、表格、对话框等组件
  • 响应式布局支持
  • 主题定制能力

2.2.4 ECharts 5.5.1

  • 强大的数据可视化库
  • 支持多种图表类型(折线图、柱状图、饼图等)
  • 交互式图表展示
  • 用于学情分析和统计展示

2.2.5 Axios 1.7.7

  • 基于Promise的HTTP客户端
  • 支持请求/响应拦截器
  • 自动转换JSON数据
  • 用于前后端数据交互

2.2.6 Pinia 2.2.6

  • Vue 3官方推荐的状态管理库
  • 轻量级、类型安全
  • 支持模块化状态管理
  • 用于管理用户登录状态、全局配置等

2.3 辅助工具

2.3.1 CORS跨域处理

  • 后端使用django-cors-headers中间件
  • 允许前端跨域访问API
  • 配置允许的源、方法、头部

2.3.2 内容安全策略(CSP)

  • 使用django-csp中间件
  • 防止XSS攻击
  • 控制资源加载来源

三、数据库设计

3.1 数据库选型

本系统使用SQLite作为数据库,原因如下:

  • 轻量级,无需独立服务器
  • 适合中小型应用
  • 便于开发和部署
  • 支持完整的关系型数据库特性

3.2 数据表设计

3.2.1 角色表(Role)

字段名 类型 长度 非空 唯一 默认值 说明
id BigAutoField - 自增 主键
role_name CharField 255 ‘’ 角色名称(如:学生、教师、管理员)
description TextField - ‘’ 角色描述
created_at DateTimeField - 当前时间 创建时间

功能说明:存储系统角色信息,用于权限控制和功能区分。

3.2.2 用户信息表(Profile)

字段名 类型 长度 非空 唯一 默认值 说明
id BigAutoField - 自增 主键
username CharField 255 ‘’ 用户名(登录账号)
password CharField 255 ‘’ 密码(加密存储)
name CharField 255 ‘’ 真实姓名
gender CharField 255 ‘’ 性别
avatar ImageField - avatars/default.png 头像路径
phone CharField 255 ‘’ 手机号
email CharField 255 ‘’ 邮箱
role ForeignKey - 2 角色外键(关联Role表)
dept CharField 255 ‘’ 所属部门
notes TextField - ‘’ 备注信息

功能说明:存储用户基本信息,支持学生、教师、管理员三种角色。密码使用Django内置的make_password进行加密。

3.2.3 知识点表(Knowledge)

字段名 类型 长度 非空 唯一 默认值 说明
id BigAutoField - 自增 主键
name CharField 255 ‘’ 知识点名称
parent_id ForeignKey - NULL 父级知识点(自关联,支持树形结构)
difficulty CharField 255 ‘’ 难度等级(简单/中等/困难)
description TextField - ‘’ 知识点描述
created_at DateTimeField - 当前时间 创建时间

功能说明:存储计算机组成原理课程的知识点,支持层级结构(如:章节-知识点)。parent_id为NULL表示顶级知识点。

3.2.4 题目表(Question)

字段名 类型 长度 非空 唯一 默认值 说明
id BigAutoField - 自增 主键
type CharField 255 ‘’ 题目类型(选择题/填空题)
content TextField - ‘’ 题目内容(题干)
options JSONField - NULL 选项(选择题为数组,填空题为NULL)
answer CharField 255 ‘’ 正确答案
explanation TextField - ‘’ 答案解析
knowledge_id ForeignKey - NULL 关联知识点外键
difficulty CharField 255 ‘’ 难度等级
generated_at DateTimeField - 当前时间 生成时间
review_status CharField 32 ‘approved’ 审核状态(pending/approved/rejected)
gen_source CharField 32 ‘seed’ 题目来源(ai/template/seed)

功能说明:存储练习题信息。options字段使用JSON格式存储选择题选项(如:[[“A”,“选项A”],[“B”,“选项B”]])。review_status用于教师审核AI生成的题目。

3.2.5 答题记录表(Record)

字段名 类型 长度 非空 唯一 默认值 说明
id BigAutoField - 自增 主键
student_id ForeignKey - NULL 学生外键(关联Profile表)
question_id ForeignKey - NULL 题目外键(关联Question表)
is_correct CharField 255 ‘’ 是否正确(是/否)
create_time DateTimeField - 当前时间 答题时间

功能说明:记录学生的每次答题行为,用于统计分析和掌握度更新。

3.2.6 掌握度表(Mastery)

字段名 类型 长度 非空 唯一 默认值 说明
id BigAutoField - 自增 主键
student_id ForeignKey - NULL 学生外键(关联Profile表)
knowledge_id ForeignKey - NULL 知识点外键(关联Knowledge表)
mastery_score DecimalField 10,2 0.00 掌握度分数(0-100)
updated_at DateTimeField - 当前时间 更新时间

功能说明:存储学生对每个知识点的掌握程度,通过BKT算法动态更新。mastery_score范围为0-100,分数越高表示掌握越好。

3.2.7 系统反馈表(Feedback)

字段名 类型 长度 非空 唯一 默认值 说明
id BigAutoField - 自增 主键
user ForeignKey - NULL 用户外键(关联Profile表)
subject CharField 255 ‘’ 反馈主题
message TextField - ‘’ 反馈内容
resolved CharField 255 ‘’ 是否已解决(是/否)
image ImageField - NULL 配图路径
video FileField - NULL 视频路径
created_at DateTimeField - 当前时间 反馈时间

功能说明:用户可以提交系统使用反馈,支持文字、图片、视频等多种形式。

3.3 数据表关系图(ER图)

┌─────────────┐
│    Role     │
│  (角色表)   │
└──────┬──────┘
       │ 1
       │
       │ N
┌──────┴──────────────────────────────────────────┐
│              Profile (用户信息表)                │
│  id, username, password, name, role, ...        │
└──────┬──────────────────────────┬────────────────┘
       │ 1                        │ 1
       │                          │
       │ N                        │ N
┌──────┴──────┐          ┌────────┴────────┐
│   Record    │          │    Mastery      │
│ (答题记录表) │          │  (掌握度表)     │
└──────┬──────┘          └────────┬────────┘
       │ N                        │ N
       │                          │
       │ 1                        │ 1
┌──────┴──────────────────────────┴────────┐
│           Knowledge (知识点表)            │
│  id, name, parent_id, difficulty, ...    │
└──────┬──────────────────────────┬────────┘
       │ 1 (自关联)               │ 1
       │                          │
       │ N                        │ N
       └──────────────┐   ┌───────┘
                      │   │
                ┌─────┴───┴─────┐
                │   Question    │
                │   (题目表)    │
                └───────────────┘

┌─────────────┐
│  Feedback   │
│ (反馈表)    │
└──────┬──────┘
       │ N
       │
       │ 1
┌──────┴──────┐
│   Profile   │
└─────────────┘

关系说明

  • Role与Profile:一对多(一个角色可以有多个用户)
  • Profile与Record:一对多(一个学生有多条答题记录)
  • Profile与Mastery:一对多(一个学生对多个知识点有掌握度)
  • Knowledge与Question:一对多(一个知识点对应多道题目)
  • Knowledge自关联:支持树形层级结构
  • Question与Record:一对多(一道题目可被多次作答)
  • Knowledge与Mastery:一对多(一个知识点对应多个学生的掌握度)
  • Profile与Feedback:一对多(一个用户可提交多条反馈)

四、后端目录结构说明

4.1 整体目录结构

Backend/
├── Backend/                    Django项目配置目录
│   ├── __init__.py
│   ├── settings.py            项目配置文件(数据库、中间件、应用等)
│   ├── urls.py                项目主路由配置
│   ├── wsgi.py                WSGI部署配置
│   └── asgi.py                ASGI部署配置
├── App/                       主应用目录
│   ├── migrations/            数据库迁移文件
│   │   ├── 0001_initial.py   初始化迁移
│   │   └── 0002_question_review_source.py  题目审核字段迁移
│   ├── models.py              数据模型定义
│   ├── views.py               视图函数(API接口)
│   ├── serializers.py         序列化器(数据转换)
│   ├── urls.py                应用路由配置
│   ├── deepseek_client.py     DeepSeek API客户端
│   ├── practice_service.py    练习题业务逻辑(生成、推荐、BKT)
│   ├── admin.py               Django管理后台配置
│   ├── apps.py                应用配置
│   └── tests.py               单元测试
├── media/                     媒体文件存储
│   ├── avatars/               用户头像
│   └── feedback/              反馈附件(图片、视频)
├── db.sqlite3                 SQLite数据库文件
├── manage.py                  Django管理脚本
├── .env                       环境变量配置(API密钥等)
├── .env.example               环境变量示例
└── .gitignore                 Git忽略文件配置

4.2 核心文件详解

4.2.1 settings.py(项目配置)

主要配置项

  1. 数据库配置
DATABASES = {
    "default": {
        "ENGINE": "django.db.backends.sqlite3",
        "NAME": BASE_DIR / "db.sqlite3",
    }
}
  1. 安装的应用
  • django.contrib.admin:管理后台
  • rest_framework:REST API框架
  • corsheaders:跨域支持
  • drf_yasg:API文档生成
  • App:主应用
  1. 中间件配置
  • CorsMiddleware:处理跨域请求
  • CSPMiddleware:内容安全策略
  • 禁用CSRF(前后端分离)
  1. DeepSeek API配置
DEEPSEEK_API_KEY = os.environ.get("DEEPSEEK_API_KEY", "")
DEEPSEEK_API_BASE = "https://api.deepseek.com/v1"
DEEPSEEK_MODEL = "deepseek-chat"
DEEPSEEK_TIMEOUT = 90
  1. BKT算法参数
USE_BKT_MASTERY = True  启用贝叶斯知识追踪
BKT_GUESS = 0.25        猜测率
BKT_SLIP = 0.1          失误率
BKT_P0 = 0.5            初始掌握概率
  1. 媒体文件配置
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'

4.2.2 models.py(数据模型)

定义了7个核心数据模型:

  • Role:角色模型
  • Profile:用户信息模型
  • Knowledge:知识点模型(支持自关联树形结构)
  • Question:题目模型(JSONField存储选项)
  • Record:答题记录模型
  • Mastery:掌握度模型(DecimalField精确存储分数)
  • Feedback:系统反馈模型

关键设计

  • 使用ForeignKey建立表关联
  • on_delete=models.SET_NULL保证数据安全
  • related_name方便反向查询
  • verbose_name提供中文字段名

4.2.3 views.py(视图层)

主要功能模块

  1. 用户认证接口
  • CheckUsernameView:检查用户名是否存在
  • RegisterView:用户注册(密码加密)
  • LoginView:用户登录(密码验证)
  • SettingPasswordView:修改密码
  1. CRUD接口(ViewSet)
  • RoleViewSet:角色管理
  • ProfileViewSet:用户管理
  • KnowledgeViewSet:知识点管理
  • QuestionViewSet:题目管理
  • RecordViewSet:答题记录管理
  • MasteryViewSet:掌握度管理
  • FeedbackViewSet:反馈管理
  1. 搜索接口(GenericAPIView)
  • 支持模糊搜索和分页
  • 使用Q对象构建复杂查询条件
  1. 练习题核心接口
  • PracticeGenerateView:生成练习题(调用DeepSeek API)
  • PracticeSubmitView:提交答案(更新掌握度)
  • PracticeRecommendView:推荐知识点(基于掌握度)
  • PracticeStudentStatsView:学生统计数据
  • PracticeWrongBookView:错题本
  • PracticeKnowledgeQuestionsView:知识点题目列表
  • PracticeTeacherSummaryView:教师端概览
  • PracticeTeacherAnalyticsView:教师端学情分析

分页配置

class CustomPageNumberPagination(PageNumberPagination):
    page_size = 5                    默认每页5条
    page_size_query_param = 'page_size'  允许客户端指定
    max_page_size = 100              最大每页100

4.2.4 deepseek_client.py(AI客户端)

核心功能

  1. API调用函数
def _chat_completion(messages: list, temperature: float = 0.7) -> str
  • 使用urllib.request发送HTTP请求
  • 支持超时控制(默认90秒)
  • 错误处理和日志记录
  1. JSON提取函数
def extract_json_object(text: str) -> dict
  • 从模型返回的文本中提取JSON对象
  • 支持Markdown代码块格式
  • 正则表达式匹配
  1. 题目生成函数
def generate_question_json(
    knowledge_name: str,
    knowledge_description: str,
    difficulty: str,
    qtype: str
) -> dict
  • 构造Prompt模板
  • 调用DeepSeek API
  • 返回结构化题目数据
  1. 题目校验函数
def normalize_parsed_question(data: dict, qtype: str) -> tuple
  • 验证题目格式
  • 选择题必须有4个选项(A/B/C/D)
  • 填空题options必须为null
  • 答案格式标准化

Prompt设计

  • System角色:定义AI为计算机组成原理助教
  • User角色:提供知识点、难度、题型要求
  • 要求输出合法JSON格式
  • 提供示例格式引导

4.2.5 practice_service.py(业务逻辑层)

核心功能模块

  1. 题目生成逻辑
def generate_practice_question(knowledge_id, difficulty, qtype)

生成策略

  • 优先使用DeepSeek API生成(需配置API密钥)
  • API失败时根据配置决定是否回退到本地模板
  • 未配置API密钥时直接使用本地模板

本地模板机制

  • MC_TEMPLATES:选择题模板库(10个知识点模板)
  • FILL_TEMPLATES:填空题模板库(5个知识点模板)
  • 根据知识点名称关键词匹配模板
  • 支持难度标签(简单/中等/困难)

题目去重

def _text_similarity(a: str, b: str) -> float
  • 使用SequenceMatcher计算文本相似度
  • 相似度>0.92视为重复
  • 防止生成重复题目
  1. 答案检查逻辑
def check_answer(question, user_answer)

检查规则

  • 选择题:忽略大小写和空格,比较字母
  • 填空题:去除空格后精确匹配
  • 使用正则表达式标准化输入
  1. 掌握度更新(BKT算法)
def update_mastery_bkt(student: Profile, knowledge: Knowledge, is_correct: bool)

贝叶斯知识追踪(BKT)原理

BKT是一种认知诊断模型,用于追踪学生对知识点的掌握状态。

核心参数

  • P(L):学生已掌握知识点的概率
  • P(L0):初始掌握概率(默认0.5)
  • G:猜测率(默认0.25,即不会也有25%概率答对)
  • S:失误率(默认0.1,即会了也有10%概率答错)
  • T:学习率(本系统未显式使用)

更新公式

当学生答对时:

P(L|correct) = P(L) × (1-S) / [P(L) × (1-S) + (1-P(L)) × G]

当学生答错时:

P(L|wrong) = P(L) × S / [P(L) × S + (1-P(L)) × (1-G)]

实现流程

  1. 获取当前掌握度分数(0-100),转换为概率P(L)
  2. 根据答题结果(正确/错误)应用贝叶斯公式更新P(L)
  3. 将新概率转换回0-100分数
  4. 保存到Mastery表

优势

  • 考虑了猜测和失误因素
  • 动态调整掌握度
  • 比简单的滑动平均更科学
  1. 推荐算法
def recommend_knowledge(student_id, limit=12)

推荐策略

掌握度分数 推荐频次 优先级 推荐标签
< 40分 高频推荐 high 高频巩固
40-60分 中频推荐 medium 高频巩固
60-80分 适量推荐 medium 适量练习
> 80分 低频推荐 low 降低推荐

推荐流程

  1. 获取学生所有知识点的掌握度
  2. 未练习过的知识点默认50分
  3. 按掌握度升序排序(薄弱知识点优先)
  4. 返回前N个知识点

个性化特点

  • 针对每个学生的掌握情况
  • 动态调整推荐内容
  • 优先补强薄弱环节
  1. 学生统计分析
def student_practice_stats(student_id)

统计维度

  • 总答题数、正确数、错误数、正确率
  • 按知识点统计:掌握度、答题次数、错题率
  • 14天答题趋势(每日统计)
  • 薄弱知识点数量(掌握度<40)

返回数据结构

{
    "student_id": 学生ID,
    "total_records": 总答题数,
    "accuracy": 正确率,
    "by_knowledge": [知识点掌握度列表],
    "trend_daily": [每日答题趋势],
    "weak_knowledge_count": 薄弱知识点数,
    "mastery_mode": "BKT"  掌握度算法
}
  1. 教师端学情分析
def teacher_analytics_bundle()

分析维度

  1. 全局统计
  • 待审核题目数
  • 已拒绝题目数
  • 题目总数
  • AI生成题目数
  • 学生总数
  1. 答题趋势分析
  • 14天每日答题统计
  • 每日正确数、错误数
  1. 学生排行
  • 按平均掌握度排序
  • 显示答题数、正确率
  • 识别学习困难学生
  1. 知识点分析
  • 各知识点平均掌握度
  • 知识点错题率排行
  • 识别难点知识点

应用场景

  • 教师了解整体学情
  • 识别教学难点
  • 针对性辅导
  1. 错题本功能
def wrong_book_page(student_id: int, page: int, page_size: int)

功能特点

  • 自动收集学生答错的题目
  • 按时间倒序排列(最新错题在前)
  • 支持分页查询
  • 显示题目内容、类型、关联知识点

数据结构

{
    "count": 错题总数,
    "results": [
        {
            "record_id": 记录ID,
            "create_time": 答题时间,
            "question_id": 题目ID,
            "content": 题目内容,
            "type": 题目类型,
            "knowledge_name": 知识点名称
        }
    ]
}

五、前端目录结构说明

5.1 整体目录结构

Web/
├── public/                    静态资源
│   ├── favicon.png           网站图标
│   └── menus/                菜单配置文件
│       ├── admin-menu.json   管理员菜单
│       ├── teacher-menu.json 教师菜单
│       └── student-menu.json 学生菜单
├── src/                      源代码目录
│   ├── assets/               资源文件
│   │   ├── img/              图片资源
│   │   ├── iconfont/         图标字体
│   │   ├── js/               JavaScript工具
│   │   └── style/            样式文件
│   ├── components/           公共组件
│   │   ├── auth/             权限组件
│   │   ├── editor/           富文本编辑器
│   │   ├── table/            表格组件
│   │   ├── pagination/       分页组件
│   │   └── ...               其他组件
│   ├── views/                页面视图
│   │   ├── front/            前台页面
│   │   │   ├── login/        登录页面
│   │   │   ├── register/     注册页面
│   │   │   └── main/         学生主页
│   │   ├── back/             后台管理
│   │   │   ├── admin/        管理员页面
│   │   │   ├── teacher/      教师页面
│   │   │   └── student/      学生后台
│   │   ├── system/           系统页面
│   │   └── chart/            图表页面
│   ├── router/               路由配置
│   ├── store/                状态管理(Pinia)
│   ├── api.js                API接口配置
│   ├── App.vue               根组件
│   └── main.ts               入口文件
├── index.html                HTML模板
├── package.json              项目依赖
├── vite.config.ts            Vite配置
├── tsconfig.json             TypeScript配置
├── .env.development          开发环境变量
├── .env.production           生产环境变量
└── .gitignore                Git忽略配置

5.2 核心目录详解

5.2.1 views/front(前台页面)

登录注册模块

  • login/login.vue:用户登录界面
  • register/register.vue:用户注册界面
  • 支持粒子背景特效(particles.vue3)
  • 表单验证(Element Plus)

学生主页模块(main/):

  • main.vue:学生主界面(导航、侧边栏)
  • main_student_stats/:学习统计页面
  • main_wrong_book/:错题本页面
  • feedback/:系统反馈页面

5.2.2 views/back(后台管理)

管理员模块(admin/):

  • profile/:用户管理
  • role/:角色管理
  • knowledge/:知识点管理
  • question/:题目管理
  • record/:答题记录管理
  • mastery/:掌握度管理

教师模块(teacher/):

  • knowledge/:知识点管理
  • question/:题目管理与审核
  • record/:学生答题记录查看
  • mastery/:学生掌握度管理
  • analytics/:学情分析

学生后台模块(student/):

  • record/:个人答题记录
  • mastery/:个人掌握度查看

5.2.3 components(公共组件)

表格组件(table/):

  • 基于Element Plus Table封装
  • 支持分页、排序、筛选
  • 自动适配响应式布局

编辑器组件(editor/):

  • 基于@wangeditor/editor
  • 支持富文本编辑
  • 用于题目内容编辑

权限组件(auth/):

  • auth.vue:单个权限控制
  • authAll.vue:多权限控制
  • 根据用户角色显示/隐藏功能

分页组件(pagination/):

  • 统一的分页样式
  • 支持页码跳转
  • 每页条数选择

5.3 核心文件详解

5.3.1 api.js(API接口配置)

接口基础配置

const BASE_URL = import.meta.env.VITE_API_BASE_URL
axios.defaults.baseURL = BASE_URL

主要接口分类

  1. 用户认证接口
  • POST /api/check_username/:检查用户名
  • POST /api/register/:用户注册
  • POST /api/login/:用户登录
  • POST /api/setting_password/:修改密码
  1. CRUD接口(以知识点为例)
  • GET /api/knowledge/:获取知识点列表
  • POST /api/knowledge/:创建知识点
  • GET /api/knowledge/{id}/:获取单个知识点
  • PUT /api/knowledge/{id}/:更新知识点
  • DELETE /api/knowledge/{id}/:删除知识点
  • POST /api/knowledge_search/:搜索知识点
  1. 练习题接口
  • POST /api/practice/generate/:生成练习题
  • POST /api/practice/submit/:提交答案
  • GET /api/practice/recommend/:获取推荐知识点
  • GET /api/practice/student_stats/:学生统计
  • GET /api/practice/wrong_book/:错题本
  • GET /api/practice/knowledge_questions/:知识点题目列表
  • GET /api/practice/teacher_summary/:教师概览
  • GET /api/practice/teacher_analytics/:教师学情分析

5.3.2 路由配置(router/)

路由结构

{
  path: '/',
  redirect: '/login'
},
{
  path: '/login',
  component: Login
},
{
  path: '/register',
  component: Register
},
{
  path: '/main',
  component: Main,
  children: [
    // 学生端路由
    { path: 'stats', component: StudentStats },
    { path: 'wrong-book', component: WrongBook },
    { path: 'feedback', component: Feedback }
  ]
},
{
  path: '/back',
  component: BackLayout,
  children: [
    // 管理员路由
    { path: 'admin/profile', component: ProfileManage },
    { path: 'admin/knowledge', component: KnowledgeManage },
    // 教师路由
    { path: 'teacher/analytics', component: TeacherAnalytics },
    { path: 'teacher/question', component: QuestionReview },
    // 学生后台路由
    { path: 'student/record', component: StudentRecord }
  ]
}

路由守卫

  • 检查用户登录状态
  • 根据角色控制页面访问权限
  • 未登录重定向到登录页

5.3.3 状态管理(store/)

使用Pinia管理全局状态

  1. 用户状态
{
  userInfo: {
    id: 用户ID,
    username: 用户名,
    name: 姓名,
    role: 角色信息,
    avatar: 头像
  },
  isLogin: 是否登录
}
  1. 系统配置
{
  theme: 主题配置,
  language: 语言设置,
  menuCollapse: 菜单折叠状态
}

持久化

  • 使用pinia-plugin-persist
  • 自动保存到localStorage
  • 刷新页面状态不丢失

六、系统界面与功能详解

6.1 登录注册模块

6.1.1 登录界面

在这里插入图片描述

界面功能

  • 用户名/密码登录
  • 表单验证(必填项、格式校验)
  • 记住密码功能
  • 粒子背景动画效果
  • 响应式布局适配

技术实现

  • Element Plus表单组件
  • particles.vue3粒子特效
  • Axios发送登录请求
  • 登录成功后保存用户信息到Pinia
  • 根据角色跳转到对应页面

登录流程

用户输入账号密码
    ↓
前端表单验证
    ↓
发送POST请求到/api/login/
    ↓
后端验证用户名和密码(check_password)
    ↓
验证成功:返回用户信息
    ↓
前端保存用户信息到store
    ↓
根据角色跳转:
  - 学生 → /main
  - 教师 → /back/teacher
  - 管理员 → /back/admin

6.1.2 注册界面

界面功能

  • 用户名唯一性检查
  • 密码强度验证
  • 确认密码一致性检查
  • 角色选择(学生/教师)
  • 实时表单验证

注册流程

用户填写注册信息
    ↓
实时检查用户名是否已存在
    ↓
验证密码强度和一致性
    ↓
发送POST请求到/api/register/
    ↓
后端密码加密(make_password)
    ↓
创建用户记录
    ↓
注册成功,跳转到登录页

6.2 学生端功能模块

6.2.1 练习题生成界面

在这里插入图片描述

界面功能

  1. 知识点选择

    • 树形结构展示知识点
    • 支持搜索和筛选
    • 显示知识点难度标签
  2. 练习参数设置

    • 难度选择:简单/中等/困难
    • 题型选择:选择题/填空题
    • 题目数量设置
  3. 题目生成

    • 点击"生成题目"按钮
    • 调用DeepSeek API生成
    • 显示生成来源(AI/模板)
    • 实时显示生成进度
  4. 在线答题

    • 选择题:单选按钮
    • 填空题:文本输入框
    • 提交答案按钮
    • 实时反馈正确/错误
  5. 答案解析

    • 显示正确答案
    • 详细解析说明
    • 相关知识点链接

技术实现

// 生成题目
async generateQuestion() {
  const params = {
    knowledge_id: this.selectedKnowledge,
    difficulty: this.difficulty,
    type: this.questionType
  }
  const res = await axios.post('/api/practice/generate/', params)
  this.currentQuestion = res.data.question
  this.generationSource = res.data.source
}

// 提交答案
async submitAnswer() {
  const params = {
    student_id: this.userInfo.id,
    question_id: this.currentQuestion.id,
    user_answer: this.userAnswer
  }
  const res = await axios.post('/api/practice/submit/', params)
  this.showResult(res.data)
}

生成流程

学生选择知识点和难度
    ↓
前端发送生成请求
    ↓
后端调用practice_service.generate_practice_question()
    ↓
检查是否配置DeepSeek API密钥
    ↓
有密钥:调用deepseek_client.generate_question_json()
    ├─ 构造Prompt
    ├─ 调用API
    ├─ 解析JSON
    ├─ 题目去重检查
    └─ 保存到数据库(状态:pending)
    ↓
无密钥:使用本地模板
    ├─ 匹配知识点关键词
    ├─ 选择对应模板
    └─ 保存到数据库(状态:approved)
    ↓
返回题目给前端展示

6.2.2 错题本界面

在这里插入图片描述

界面功能

  1. 错题列表展示

    • 表格形式显示错题
    • 显示题目内容、类型、知识点
    • 答题时间记录
    • 支持分页浏览
  2. 错题筛选

    • 按知识点筛选
    • 按题型筛选
    • 按时间范围筛选
  3. 错题重做

    • 点击题目可重新作答
    • 查看历史答案
    • 查看正确答案和解析
  4. 错题统计

    • 错题总数
    • 按知识点统计错题数
    • 错题率趋势图

数据获取

async loadWrongBook() {
  const params = {
    student_id: this.userInfo.id,
    page: this.currentPage,
    page_size: this.pageSize
  }
  const res = await axios.get('/api/practice/wrong_book/', { params })
  this.wrongQuestions = res.data.results
  this.total = res.data.count
}

应用价值

  • 帮助学生针对性复习
  • 识别薄弱环节
  • 提高学习效率

6.2.3 学习统计界面

在这里插入图片描述

界面功能

  1. 总体统计卡片

    • 总答题数
    • 正确率
    • 错题数
    • 薄弱知识点数
  2. 答题趋势图(ECharts折线图)

    • 横轴:日期(最近14天)
    • 纵轴:答题数量
    • 双线:正确数、错误数
    • 交互:悬停显示详细数据
  3. 知识点掌握度表格

    • 知识点名称
    • 掌握度分数(0-100)
    • 答题次数
    • 错题率
    • 最后更新时间
    • 颜色标识:
      • 红色:掌握度<40(薄弱)
      • 橙色:40-60(一般)
      • 绿色:60-80(良好)
      • 蓝色:>80(优秀)
  4. 知识点掌握度雷达图

    • 多维度展示各知识点掌握情况
    • 直观识别薄弱环节

技术实现

// ECharts配置
const chartOption = {
  title: { text: '答题趋势' },
  xAxis: {
    type: 'category',
    data: this.trendData.map(d => d.date)
  },
  yAxis: { type: 'value' },
  series: [
    {
      name: '正确数',
      type: 'line',
      data: this.trendData.map(d => d.correct),
      itemStyle: { color: '#67C23A' }
    },
    {
      name: '错误数',
      type: 'line',
      data: this.trendData.map(d => d.wrong),
      itemStyle: { color: '#F56C6C' }
    }
  ]
}

数据来源

  • 调用/api/practice/student_stats/接口
  • 后端从Record表和Mastery表聚合数据
  • 实时计算统计指标

6.2.4 个人中心界面

在这里插入图片描述

界面功能

  1. 个人信息展示

    • 头像显示
    • 用户名、姓名
    • 角色、部门
    • 联系方式
  2. 信息修改

    • 修改姓名、性别
    • 上传头像
    • 修改联系方式
    • 修改密码
  3. 学习概览

    • 累计答题数
    • 平均掌握度
    • 学习天数
    • 学习排名

头像上传

  • 支持图片裁剪(vue-cropper)
  • 自动压缩
  • 上传到media/avatars/目录

6.2.5 系统反馈界面

在这里插入图片描述

界面功能

  1. 反馈提交

    • 反馈主题输入
    • 反馈内容(富文本编辑器)
    • 上传截图/视频
    • 提交按钮
  2. 历史反馈查看

    • 反馈列表
    • 处理状态(已解决/未解决)
    • 反馈时间
    • 管理员回复

技术实现

  • 使用@wangeditor/editor富文本编辑器
  • 文件上传到media/feedback/目录
  • 支持图片预览

6.3 教师端功能模块

6.3.1 知识点管理界面

在这里插入图片描述

界面功能

  1. 知识点树形展示

    • 层级结构显示
    • 展开/折叠节点
    • 拖拽调整层级
  2. 知识点操作

    • 添加根知识点
    • 添加子知识点
    • 编辑知识点信息
    • 删除知识点(级联删除)
  3. 知识点信息

    • 名称
    • 难度等级
    • 描述说明
    • 关联题目数
    • 学生平均掌握度
  4. 批量操作

    • 批量导入(Excel/CSV)
    • 批量导出
    • 批量设置难度

技术实现

// 树形数据构建
buildTree(data) {
  const map = {}
  const tree = []
  
  data.forEach(item => {
    map[item.id] = { ...item, children: [] }
  })
  
  data.forEach(item => {
    if (item.parent_id) {
      map[item.parent_id].children.push(map[item.id])
    } else {
      tree.push(map[item.id])
    }
  })
  
  return tree
}

6.3.2 题目管理与审核界面

在这里插入图片描述

界面功能

  1. 题目列表

    • 表格展示所有题目
    • 显示题目内容、类型、难度
    • 显示生成来源(AI/模板/手动)
    • 显示审核状态
  2. 题目筛选

    • 按知识点筛选
    • 按题型筛选
    • 按难度筛选
    • 按审核状态筛选
    • 按生成来源筛选
  3. 题目审核(针对AI生成题目)

    • 查看题目详情
    • 在线编辑题目
    • 审核操作:
      • 通过(approved)
      • 拒绝(rejected)
      • 修改后通过
    • 审核意见填写
  4. 题目编辑

    • 修改题干
    • 修改选项
    • 修改答案
    • 修改解析
    • 调整难度
    • 更换知识点
  5. 手动添加题目

    • 选择题型
    • 填写题目信息
    • 设置难度
    • 关联知识点

审核流程

AI生成题目(状态:pending)
    ↓
教师查看待审核列表
    ↓
点击题目查看详情
    ↓
评估题目质量
    ↓
选择操作:
  ├─ 通过 → 状态改为approved,学生可见
  ├─ 修改 → 编辑后状态改为approved
  └─ 拒绝 → 状态改为rejected,不可见
    ↓
保存审核结果

在这里插入图片描述

审核界面特点

  • 左侧:待审核题目列表
  • 右侧:题目详情和编辑区
  • 底部:审核按钮(通过/拒绝/修改)
  • 显示题目来源和生成时间

6.3.3 学情分析界面

在这里插入图片描述

界面功能

  1. 全局统计卡片

    • 学生总数
    • 题目总数
    • 总答题数
    • 平均正确率
    • 待审核题目数
  2. 答题趋势图(折线图)

    • 最近14天答题趋势
    • 每日答题总数
    • 每日正确数/错误数
    • 趋势分析
  3. 学生排行榜

    • 按平均掌握度排序
    • 显示学生姓名、答题数、正确率
    • 识别学习困难学生(掌握度<40)
    • 支持导出Excel
  4. 知识点难度分析

    • 各知识点平均掌握度
    • 知识点错题率排行
    • 柱状图展示
    • 识别教学难点
  5. 知识点掌握度热力图

    • 横轴:学生
    • 纵轴:知识点
    • 颜色深浅:掌握度高低
    • 快速识别薄弱环节

技术实现

// 获取学情分析数据
async loadAnalytics() {
  const res = await axios.get('/api/practice/teacher_analytics/')
  this.globalStats = {
    studentCount: res.data.student_count,
    questionTotal: res.data.question_total,
    recordsTotal: res.data.records_total,
    accuracy: res.data.records_accuracy
  }
  this.trendData = res.data.trend_daily
  this.studentRanking = res.data.students
  this.knowledgeAnalysis = res.data.knowledge_avg_mastery
  this.renderCharts()
}

// 渲染图表
renderCharts() {
  // 趋势图
  this.trendChart = echarts.init(this.$refs.trendChart)
  this.trendChart.setOption({
    xAxis: { data: this.trendData.map(d => d.date) },
    series: [{
      name: '答题数',
      type: 'line',
      data: this.trendData.map(d => d.total)
    }]
  })
  
  // 知识点难度柱状图
  this.knowledgeChart = echarts.init(this.$refs.knowledgeChart)
  this.knowledgeChart.setOption({
    xAxis: { 
      type: 'category',
      data: this.knowledgeAnalysis.map(k => k.knowledge_name)
    },
    yAxis: { type: 'value' },
    series: [{
      type: 'bar',
      data: this.knowledgeAnalysis.map(k => k.avg_mastery)
    }]
  })
}

应用价值

  • 全面了解班级学情
  • 识别教学难点和重点
  • 针对性调整教学策略
  • 及时发现学习困难学生

6.3.4 学生掌握度管理界面

在这里插入图片描述

界面功能

  1. 学生列表

    • 显示所有学生
    • 平均掌握度
    • 答题总数
    • 正确率
  2. 掌握度详情

    • 点击学生查看详细掌握度
    • 按知识点展示
    • 掌握度分数
    • 答题次数
    • 错题率
  3. 掌握度调整

    • 手动调整学生掌握度
    • 重置掌握度
    • 批量调整
  4. 数据导出

    • 导出学生掌握度报告
    • Excel格式
    • 包含详细统计

6.3.5 学生答题记录管理界面

在这里插入图片描述

界面功能

  1. 记录列表

    • 显示所有答题记录
    • 学生姓名
    • 题目内容
    • 是否正确
    • 答题时间
  2. 记录筛选

    • 按学生筛选
    • 按知识点筛选
    • 按正确性筛选
    • 按时间范围筛选
  3. 记录详情

    • 查看题目完整内容
    • 学生答案
    • 正确答案
    • 答题用时
  4. 数据分析

    • 统计图表
    • 导出报表

6.4 管理员端功能模块

6.4.1 用户管理界面

在这里插入图片描述

界面功能

  1. 用户列表

    • 表格展示所有用户
    • 用户名、姓名、角色
    • 联系方式
    • 注册时间
  2. 用户操作

    • 添加用户
    • 编辑用户信息
    • 删除用户
    • 重置密码
    • 分配角色
  3. 用户筛选

    • 按角色筛选
    • 按部门筛选
    • 搜索用户
  4. 批量操作

    • 批量导入用户
    • 批量分配角色
    • 批量删除

6.4.2 知识点管理界面

在这里插入图片描述

界面功能

  • 与教师端知识点管理类似
  • 额外权限:删除任意知识点
  • 批量操作权限
  • 系统级知识点配置

6.4.3 题目管理界面

在这里插入图片描述

界面功能

  • 查看所有题目(包括所有状态)
  • 强制通过/拒绝题目
  • 批量删除题目
  • 题目质量统计
  • 导入导出题库

6.4.4 学生掌握度管理界面

在这里插入图片描述

界面功能

  • 查看所有学生掌握度
  • 系统级掌握度调整
  • 掌握度算法参数配置
  • 批量重置掌握度

6.4.5 学生答题记录管理界面

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

界面功能

  • 查看所有答题记录
  • 数据清理功能
  • 异常记录处理
  • 数据统计分析

6.4.6 知识点推荐界面

在这里插入图片描述

界面功能

  1. 推荐算法配置

    • 设置推荐阈值
    • 调整推荐权重
    • 配置推荐策略
  2. 推荐效果分析

    • 推荐准确率统计
    • 学生接受度分析
    • 推荐效果评估
  3. 推荐规则管理

    • 添加自定义推荐规则
    • 编辑推荐规则
    • 启用/禁用规则

6.4.7 反馈管理界面

在这里插入图片描述

界面功能

  1. 反馈列表

    • 显示所有用户反馈
    • 反馈状态(已解决/未解决)
    • 反馈时间
    • 用户信息
  2. 反馈处理

    • 查看反馈详情
    • 回复反馈
    • 标记为已解决
    • 删除反馈
  3. 反馈统计

    • 反馈数量统计
    • 反馈类型分布
    • 处理效率分析

七、核心技术原理详解

7.1 贝叶斯知识追踪(BKT)算法

7.1.1 算法背景

贝叶斯知识追踪(Bayesian Knowledge Tracing, BKT)是一种认知诊断模型,由Corbett和Anderson于1995年提出,广泛应用于智能教学系统中。

7.1.2 核心思想

BKT将学生对某个知识点的掌握状态建模为一个隐藏的二值变量:

  • L = 1:学生已掌握该知识点
  • L = 0:学生未掌握该知识点

通过观察学生的答题表现(正确/错误),使用贝叶斯定理动态更新掌握概率P(L)。

7.1.3 模型参数

参数 符号 含义 本系统默认值
初始掌握概率 P(L₀) 学生初始已掌握的概率 0.5
猜测率 G 未掌握但答对的概率 0.25
失误率 S 已掌握但答错的概率 0.1
学习率 T 从未掌握到掌握的转移概率 未显式使用

7.1.4 更新公式

当学生答对时

P(L|correct) = P(L) × (1-S) / [P(L) × (1-S) + (1-P(L)) × G]

推导过程

  • P(correct|L=1) = 1-S(掌握了但可能失误)
  • P(correct|L=0) = G(未掌握但可能猜对)
  • 应用贝叶斯定理:
    P(L|correct) = P(correct|L) × P(L) / P(correct)
    

当学生答错时

P(L|wrong) = P(L) × S / [P(L) × S + (1-P(L)) × (1-G)]

推导过程

  • P(wrong|L=1) = S(掌握了但失误)
  • P(wrong|L=0) = 1-G(未掌握且没猜对)
  • 应用贝叶斯定理

7.1.5 代码实现

def update_mastery_bkt(student: Profile, knowledge: Knowledge, is_correct: bool):
    G = 0.25  猜测率
    S = 0.1   失误率
    
    获取当前掌握概率
    mastery = Mastery.objects.get_or_create(
        student_id=student,
        knowledge_id=knowledge,
        defaults={"mastery_score": Decimal("50.00")}
    )[0]
    
    p = float(mastery.mastery_score) / 100.0  转换为概率
    p = max(0.01, min(0.99, p))  避免极端值
    
    贝叶斯更新
    if is_correct:
        num = p * (1.0 - S)
        den = num + (1.0 - p) * G
    else:
        num = p * S
        den = num + (1.0 - p) * (1.0 - G)
    
    p_new = (num / den) if den > 0 else p
    
    转换回0-100分数
    score = Decimal(str(round(p_new * 100, 2)))
    mastery.mastery_score = max(Decimal("0"), min(Decimal("100"), score))
    mastery.save()

7.1.6 算法优势

  1. 考虑猜测和失误

    • 不是简单的对错统计
    • 更符合真实学习情况
  2. 动态调整

    • 每次答题都更新掌握度
    • 反映学习进度
  3. 概率建模

    • 提供不确定性量化
    • 支持个性化推荐
  4. 理论基础扎实

    • 基于贝叶斯定理
    • 广泛应用于教育领域

7.2 大模型题目生成技术

7.2.1 DeepSeek API集成

API特点

  • 兼容OpenAI接口规范
  • 支持结构化JSON输出
  • 中文理解能力强
  • 适合教育领域应用

调用流程

构造Prompt → 发送HTTP请求 → 解析响应 → 提取JSON → 验证格式 → 保存题目

7.2.2 Prompt工程

System Prompt设计

你是高校「计算机组成原理」课程助教,只输出合法JSON,
不要输出任何JSON以外的说明文字。
JSON必须可被Python json.loads解析,字符串使用双引号。

User Prompt结构

请生成一道「计算机组成原理」练习题。
知识点名称:{knowledge_name}
知识点说明:{knowledge_description}
难度:{difficulty}
题型必须是:{qtype}

要求:
1. 题目严谨,符合国内教材常见表述
2. 选择题必须恰好4个选项,键名为A/B/C/D
3. 填空题用下划线______标出空白
4. 字段type必须为「选择题」或「填空题」之一
5. options:选择题为长度4的数组;填空题必须为null
6. answer:选择题为单个字母A/B/C/D;填空题为答案文本

选择题示例:
{"type":"选择题","content":"题干","options":[["A","..."],["B","..."],["C","..."],["D","..."]],"answer":"A","explanation":"简短解析"}

填空题示例:
{"type":"填空题","content":"题干含______占位","options":null,"answer":"标准答案","explanation":"简短解析"}

Prompt设计原则

  1. 明确角色定位:定义AI为课程助教
  2. 严格格式要求:要求输出合法JSON
  3. 提供示例:给出标准格式示例
  4. 约束条件:明确题型、选项数量等要求
  5. 领域知识:强调符合教材表述

7.2.3 题目质量控制

1. 格式验证

def normalize_parsed_question(data: dict, qtype: str):
    验证必填字段
    if not data.get("content"):
        raise ValueError("题干content为空")
    if not data.get("answer"):
        raise ValueError("答案answer为空")
    
    选择题验证
    if qtype == "选择题":
        opts = data.get("options")
        if not isinstance(opts, list) or len(opts) != 4:
            raise ValueError("选择题必须有4个选项")
        验证答案为A/B/C/D
        ans = str(data.get("answer")).strip().upper()
        if ans not in ("A", "B", "C", "D"):
            raise ValueError("选择题答案必须是A/B/C/D")
    
    填空题验证
    if qtype == "填空题":
        if data.get("options") not in (None, [], ""):
            raise ValueError("填空题options应为null")

2. 去重检查

def _text_similarity(a: str, b: str) -> float:
    去除空格
    x = re.sub(r"\s+", "", (a or "")[:900])
    y = re.sub(r"\s+", "", (b or "")[:900])
    计算相似度
    return SequenceMatcher(None, x, y).ratio()

检查与已有题目的相似度
for q in Question.objects.filter(knowledge_id=k).order_by("-id")[:80]:
    if _text_similarity(content, q.content) > 0.92:
        raise RuntimeError("生成题目与题库已有题目重复度过高")

3. 人工审核机制

  • AI生成题目初始状态为pending
  • 教师审核后才能改为approved
  • 学生只能看到approved状态的题目
  • 支持教师修改题目内容

7.2.4 本地模板兜底

设计目的

  • 未配置API密钥时仍可使用
  • API调用失败时的备选方案
  • 保证系统基本可用性

模板结构

MC_TEMPLATES = [
    (
        ["关键词1", "关键词2"],  知识点匹配关键词
        [
            (题干, 选项列表, 答案, 解析),
            可以有多个题目
        ]
    ),
    更多知识点模板
]

匹配逻辑

  1. 根据知识点名称匹配关键词
  2. 找到对应模板组
  3. 随机选择一道题目
  4. 根据难度添加标签

7.3 个性化推荐算法

7.3.1 推荐策略

基于掌握度的推荐

掌握度区间 推荐策略 推荐频次 目标
0-40分 高频推荐 每次必推 快速提升薄弱环节
40-60分 中频推荐 优先推荐 巩固基础知识
60-80分 适量推荐 适度推荐 保持熟练度
80-100分 低频推荐 偶尔推荐 防止遗忘

推荐排序

def recommend_knowledge(student_id, limit=12):
    获取所有知识点掌握度
    scores = {m.knowledge_id_id: m.mastery_score 
              for m in Mastery.objects.filter(student_id=student)}
    
    rows = []
    for kn in Knowledge.objects.all():
        sc = scores.get(kn.id, Decimal("50.00"))  未练习默认50分
        rows.append({
            "knowledge": kn,
            "mastery_score": float(sc),
            "priority": "high" if sc < 40 else ("medium" if sc < 70 else "low")
        })
    
    按掌握度升序排序(薄弱优先)
    rows.sort(key=lambda x: x["mastery_score"])
    return rows[:limit]

7.3.2 推荐算法优化方向

当前实现

  • 基于单一维度(掌握度)
  • 简单排序推荐

可优化方向

  1. 多因素融合

    • 掌握度
    • 最近练习时间
    • 错题率
    • 知识点重要性
  2. 协同过滤

    • 相似学生的学习路径
    • 知识点关联推荐
  3. 强化学习

    • 根据推荐效果动态调整
    • 个性化推荐策略

7.4 前后端分离架构

7.4.1 架构优势

  1. 开发效率

    • 前后端并行开发
    • 职责分离清晰
    • 便于团队协作
  2. 可维护性

    • 代码解耦
    • 独立部署
    • 易于升级
  3. 用户体验

    • 单页应用(SPA)
    • 无刷新交互
    • 响应速度快
  4. 可扩展性

    • 前端可替换(Web/移动端)
    • 后端API可复用
    • 支持微服务架构

7.4.2 通信机制

RESTful API设计

方法 路径 功能 请求体 响应
GET /api/knowledge/ 获取知识点列表 - 知识点数组
POST /api/knowledge/ 创建知识点 知识点信息 创建的知识点
GET /api/knowledge/{id}/ 获取单个知识点 - 知识点详情
PUT /api/knowledge/{id}/ 更新知识点 知识点信息 更新后的知识点
DELETE /api/knowledge/{id}/ 删除知识点 - 成功/失败

请求响应格式

请求示例:

POST /api/practice/generate/
{
  "knowledge_id": 5,
  "difficulty": "中等",
  "type": "选择题"
}

响应示例:

{
  "message": "ok",
  "source": "deepseek",
  "question": {
    "id": 123,
    "type": "选择题",
    "content": "题目内容",
    "options": [["A","选项A"],["B","选项B"],["C","选项C"],["D","选项D"]],
    "answer": "A",
    "explanation": "解析内容",
    "difficulty": "中等"
  },
  "note": "题目由DeepSeek API实时生成。"
}

7.4.3 跨域处理

CORS配置(后端settings.py):

INSTALLED_APPS = [
    'corsheaders',
]

MIDDLEWARE = [
    'corsheaders.middleware.CorsMiddleware',
]

CORS_ORIGIN_ALLOW_ALL = True
CORS_ALLOW_CREDENTIALS = True

Axios配置(前端api.js):

axios.defaults.baseURL = 'http://localhost:8000'
axios.defaults.withCredentials = true

7.5 数据可视化技术

7.5.1 ECharts图表库

使用的图表类型

  1. 折线图(答题趋势)
{
  type: 'line',
  data: [10, 15, 13, 17, 20, 18, 22],
  smooth: true,  // 平滑曲线
  areaStyle: {}  // 区域填充
}
  1. 柱状图(知识点掌握度)
{
  type: 'bar',
  data: [65, 78, 45, 89, 72],
  itemStyle: {
    color: function(params) {
      // 根据数值设置颜色
      const value = params.value
      if (value < 40) return '#F56C6C'
      if (value < 60) return '#E6A23C'
      if (value < 80) return '#67C23A'
      return '#409EFF'
    }
  }
}
  1. 雷达图(多维度掌握度)
{
  type: 'radar',
  data: [{
    value: [65, 78, 45, 89, 72, 68],
    name: '学生掌握度'
  }],
  radar: {
    indicator: [
      { name: '冯诺依曼', max: 100 },
      { name: 'Cache', max: 100 },
      { name: '指令系统', max: 100 },
      { name: '流水线', max: 100 },
      { name: '总线', max: 100 },
      { name: '存储层次', max: 100 }
    ]
  }
}
  1. 饼图(题型分布)
{
  type: 'pie',
  data: [
    { value: 335, name: '选择题' },
    { value: 234, name: '填空题' }
  ],
  radius: ['40%', '70%']  // 环形图
}

7.5.2 响应式图表

自适应容器大小

mounted() {
  this.chart = echarts.init(this.$refs.chartContainer)
  this.chart.setOption(this.chartOption)
  
  // 监听窗口大小变化
  window.addEventListener('resize', this.handleResize)
}

methods: {
  handleResize() {
    this.chart.resize()
  }
}

beforeUnmount() {
  window.removeEventListener('resize', this.handleResize)
  this.chart.dispose()
}

八、系统部署与运行

8.1 环境要求

后端环境

  • Python 3.8+
  • Django 5.0.7
  • SQLite(内置)

前端环境

  • Node.js 16.0+
  • npm 7.0+

8.2 后端部署步骤

1. 安装依赖

cd Backend
pip install -r requirements.txt

主要依赖:

  • Django==5.0.7
  • djangorestframework
  • django-cors-headers
  • drf-yasg
  • Pillow(图片处理)

2. 配置环境变量

创建.env文件:

DeepSeek API配置
DEEPSEEK_API_KEY=your_api_key_here
DEEPSEEK_API_BASE=https://api.deepseek.com/v1
DEEPSEEK_MODEL=deepseek-chat
DEEPSEEK_TIMEOUT=90

BKT算法参数
USE_BKT_MASTERY=true
BKT_GUESS=0.25
BKT_SLIP=0.1
BKT_P0=0.5

模板兜底
DEEPSEEK_ALLOW_TEMPLATE_FALLBACK=false

3. 数据库迁移

python manage.py makemigrations
python manage.py migrate

4. 创建超级用户

python manage.py createsuperuser

5. 启动服务

python manage.py runserver 0.0.0.0:8000

8.3 前端部署步骤

1. 安装依赖

cd Web
npm install

2. 配置环境变量

.env.development(开发环境):

VITE_API_BASE_URL=http://localhost:8000

.env.production(生产环境):

VITE_API_BASE_URL=http://your-server-ip:8000

3. 启动开发服务器

npm run dev

访问:http://localhost:5173

4. 生产环境打包

npm run build

生成的文件在dist/目录,可部署到Nginx等Web服务器。

8.4 一键启动脚本

Windows批处理脚本(run.bat):

@echo off
echo 正在启动后端服务...
start cmd /k "cd Backend && python manage.py runserver 0.0.0.0:8000"

timeout /t 3

echo 正在启动前端服务...
start cmd /k "cd Web && npm run dev"

echo 系统启动完成!
echo 后端地址:http://localhost:8000
echo 前端地址:http://localhost:5173
pause

8.5 生产环境部署建议

1. 数据库升级

  • 从SQLite迁移到MySQL/PostgreSQL
  • 提高并发性能
  • 支持更大数据量

2. Web服务器

  • 使用Nginx作为反向代理
  • 配置HTTPS证书
  • 启用Gzip压缩

3. 应用服务器

  • 使用Gunicorn/uWSGI运行Django
  • 配置多进程/多线程
  • 设置进程管理(Supervisor)

4. 静态文件

  • 使用CDN加速
  • 配置缓存策略
  • 压缩静态资源

5. 安全加固

  • 关闭DEBUG模式
  • 配置ALLOWED_HOSTS
  • 启用CSRF保护
  • 使用环境变量管理密钥

九、系统特点与创新点

9.1 技术创新

9.1.1 大模型驱动的智能出题

  • 传统方式:依赖固定题库,题目有限,容易重复
  • 本系统:利用DeepSeek大模型实时生成题目,题目多样化,理论上无限

优势

  • 题目新颖,避免学生背题
  • 可根据知识点和难度定制
  • 降低题库维护成本

9.1.2 贝叶斯知识追踪(BKT)

  • 传统方式:简单统计正确率,不考虑猜测和失误
  • 本系统:使用BKT算法,科学建模学习过程

优势

  • 更准确反映真实掌握情况
  • 考虑猜测和失误因素
  • 动态调整掌握度

9.1.3 个性化推荐

  • 传统方式:统一推荐,不考虑个体差异
  • 本系统:基于掌握度的个性化推荐

优势

  • 针对薄弱环节
  • 提高学习效率
  • 因材施教

9.2 功能特色

9.2.1 多角色支持

  • 学生端:练习、统计、错题本
  • 教师端:题目审核、学情分析
  • 管理员端:系统管理、数据分析

9.2.2 完整的学习闭环

知识点管理 → 题目生成 → 学生练习 → 答题记录 
    ↑                                      ↓
推荐算法 ← 掌握度更新 ← 答案评估 ← 提交答案

9.2.3 数据可视化

  • 答题趋势图
  • 掌握度雷达图
  • 知识点分析图
  • 学生排行榜

9.2.4 题目质量控制

  • AI生成题目需人工审核
  • 题目去重检查
  • 格式严格验证
  • 支持教师修改

9.3 系统优势

9.3.1 轻量化实现

  • 使用SQLite数据库
  • 无需复杂部署
  • 适合教学演示
  • 易于二次开发

9.3.2 前后端分离

  • 开发效率高
  • 易于维护
  • 支持多端访问
  • API可复用

9.3.3 可扩展性强

  • 模块化设计
  • 接口标准化
  • 支持功能扩展
  • 易于集成其他系统

9.3.4 用户体验好

  • 界面美观(Element Plus)
  • 交互流畅(Vue3)
  • 响应式布局
  • 操作简便

9.4 应用价值

9.4.1 对学生

  • 个性化学习路径
  • 及时反馈和指导
  • 薄弱环节针对性练习
  • 学习进度可视化

9.4.2 对教师

  • 减轻出题负担
  • 全面了解学情
  • 识别教学难点
  • 数据驱动教学

9.4.3 对教学

  • 提高教学效率
  • 实现因材施教
  • 促进教学改革
  • 积累教学数据

十、系统流程图

10.1 用户注册登录流程

开始
  ↓
选择注册/登录
  ↓
┌─────────┬─────────┐
│  注册   │  登录   │
└─────────┴─────────┘
     ↓         ↓
填写信息   输入账号密码
     ↓         ↓
检查用户名  验证账号密码
     ↓         ↓
密码加密    验证成功?
     ↓         ↓
保存数据    保存用户信息到store
     ↓         ↓
注册成功    根据角色跳转页面
     ↓         ↓
跳转登录    进入系统
     ↓         ↓
    结束      结束

10.2 题目生成流程

学生选择知识点和难度
         ↓
    发送生成请求
         ↓
    后端接收请求
         ↓
  检查API密钥配置
         ↓
    ┌────┴────┐
    ↓         ↓
有密钥      无密钥
    ↓         ↓
调用DeepSeek  使用本地模板
    ↓         ↓
构造Prompt   匹配关键词
    ↓         ↓
发送API请求  选择模板
    ↓         ↓
解析JSON响应 构造题目
    ↓         ↓
格式验证     格式验证
    ↓         ↓
题目去重     题目去重
    ↓         ↓
状态:pending 状态:approved
    └────┬────┘
         ↓
    保存到数据库
         ↓
    返回题目给前端
         ↓
      展示题目
         ↓
      学生答题
         ↓
      提交答案
         ↓
      结束

10.3 掌握度更新流程(BKT)

学生提交答案
      ↓
后端接收答案
      ↓
  检查答案正确性
      ↓
  记录到Record表
      ↓
获取当前掌握度P(L)
      ↓
  ┌────┴────┐
  ↓         ↓
答对      答错
  ↓         ↓
应用公式:   应用公式:
P(L|正确)  P(L|错误)
  ↓         ↓
P×(1-S)    P×S
─────────  ─────────
P×(1-S)+   P×S+
(1-P)×G    (1-P)×(1-G)
  └────┬────┘
       ↓
  计算新掌握度
       ↓
  转换为0-100分数
       ↓
  保存到Mastery表
       ↓
  返回结果给前端
       ↓
    结束

10.4 个性化推荐流程

学生请求推荐
      ↓
后端接收请求
      ↓
获取学生所有知识点掌握度
      ↓
  ┌────┴────┐
  ↓         ↓
已练习    未练习
  ↓         ↓
使用实际   默认50分
掌握度
  └────┬────┘
       ↓
  构建推荐列表
       ↓
  按掌握度升序排序
  (薄弱知识点优先)
       ↓
  设置推荐优先级
  ┌────┴────┐
  ↓    ↓    ↓
<40  40-70 >70
high medium low
  └────┬────┘
       ↓
  返回前N个知识点
       ↓
  前端展示推荐列表
       ↓
  学生选择练习
       ↓
    结束

10.5 教师审核流程

AI生成题目(状态:pending)
         ↓
    保存到数据库
         ↓
  教师查看待审核列表
         ↓
    点击题目详情
         ↓
    评估题目质量
         ↓
  ┌──────┴──────┐
  ↓      ↓      ↓
通过    修改    拒绝
  ↓      ↓      ↓
状态:   编辑    状态:
approved 内容   rejected
  ↓      ↓      ↓
学生    保存    学生
可见    修改    不可见
  ↓      ↓      ↓
  └──────┴──────┘
         ↓
    更新数据库
         ↓
      结束

十一、数据库表关系详解

11.1 核心表关系

用户-角色关系

  • 一个角色可以有多个用户(一对多)
  • 通过Profile.role外键关联

用户-答题记录关系

  • 一个学生有多条答题记录(一对多)
  • 通过Record.student_id外键关联

用户-掌握度关系

  • 一个学生对多个知识点有掌握度(一对多)
  • 通过Mastery.student_id外键关联

知识点-题目关系

  • 一个知识点对应多道题目(一对多)
  • 通过Question.knowledge_id外键关联

知识点-掌握度关系

  • 一个知识点对应多个学生的掌握度(一对多)
  • 通过Mastery.knowledge_id外键关联

题目-答题记录关系

  • 一道题目可被多次作答(一对多)
  • 通过Record.question_id外键关联

11.2 数据完整性保证

外键约束

on_delete=models.SET_NULL
当关联对象删除时,外键设为NULL而不是级联删除
role = models.ForeignKey(Role, on_delete=models.SET_NULL, null=True)

优势

  • 保护历史数据
  • 避免误删除
  • 便于数据恢复

11.3 索引优化

常用查询字段建议添加索引

class Meta:
    indexes = [
        models.Index(fields=['student_id', 'knowledge_id']),  Mastery表
        models.Index(fields=['student_id', 'create_time']),   Record表
        models.Index(fields=['knowledge_id', 'review_status']), Question表
    ]

十二、系统性能优化

12.1 数据库优化

1. 查询优化

使用select_related减少查询次数
records = Record.objects.select_related(
    'student_id', 
    'question_id', 
    'question_id__knowledge_id'
).all()

使用prefetch_related优化多对多查询
students = Profile.objects.prefetch_related('student_id_records').all()

2. 分页查询

避免一次性加载大量数据
class CustomPageNumberPagination(PageNumberPagination):
    page_size = 10
    max_page_size = 100

3. 数据库连接池

生产环境配置
DATABASES = {
    'default': {
        'CONN_MAX_AGE': 600,  连接持久化
    }
}

12.2 前端优化

1. 组件懒加载

const StudentStats = () => import('./views/front/main/main_student_stats')
const WrongBook = () => import('./views/front/main/main_wrong_book')

2. 图片懒加载

<img v-lazy="imageUrl" />

3. 防抖节流

// 搜索输入防抖
const searchDebounced = debounce(this.search, 500)

4. 虚拟滚动

<!-- 大列表优化 -->
<virtual-list :data="longList" :item-height="50" />

12.3 API优化

1. 响应压缩

MIDDLEWARE = [
    'django.middleware.gzip.GZipMiddleware',
]

2. 缓存策略

from django.views.decorators.cache import cache_page

@cache_page(60 * 15)  缓存15分钟
def knowledge_list(request):
    pass

3. 批量操作

批量创建
Question.objects.bulk_create([q1, q2, q3])

批量更新
Question.objects.filter(id__in=ids).update(review_status='approved')

十三、系统安全性

13.1 认证与授权

密码加密

from django.contrib.auth.hashers import make_password, check_password

注册时加密
password = make_password(raw_password)

登录时验证
if check_password(raw_password, hashed_password):
    验证通过

权限控制

基于角色的访问控制
if user.role.role_name == 'teacher':
    教师权限
elif user.role.role_name == 'student':
    学生权限

13.2 数据验证

前端验证

rules: {
  username: [
    { required: true, message: '请输入用户名' },
    { min: 3, max: 20, message: '长度在3到20个字符' }
  ],
  password: [
    { required: true, message: '请输入密码' },
    { min: 6, message: '密码至少6位' }
  ]
}

后端验证

class ProfileSerializer(serializers.ModelSerializer):
    class Meta:
        model = Profile
        fields = '__all__'
    
    def validate_username(self, value):
        if len(value) < 3:
            raise serializers.ValidationError("用户名至少3个字符")
        return value

13.3 SQL注入防护

使用ORM

安全:使用ORM参数化查询
Profile.objects.filter(username=username)

危险:直接拼接SQL(避免)
cursor.execute(f"SELECT * FROM Profile WHERE username='{username}'")

13.4 XSS防护

前端转义

<!-- 自动转义 -->
<div>{{ userInput }}</div>

<!-- 不转义(危险,仅信任内容) -->
<div v-html="trustedContent"></div>

后端CSP配置

CSP_DEFAULT_SRC = ("'self'",)
CSP_SCRIPT_SRC = ("'self'", "'unsafe-inline'")

十四、系统测试

14.1 单元测试

后端测试(tests.py):

from django.test import TestCase
from .models import Knowledge, Question
from .practice_service import generate_practice_question

class PracticeServiceTest(TestCase):
    def setUp(self):
        self.knowledge = Knowledge.objects.create(
            name="测试知识点",
            difficulty="中等"
        )
    
    def test_generate_question(self):
        question = generate_practice_question(
            self.knowledge.id,
            "中等",
            "选择题"
        )
        self.assertIsNotNone(question)
        self.assertEqual(question.type, "选择题")

运行测试

python manage.py test

14.2 接口测试

使用Postman测试API

  1. 导入API文档(drf-yasg生成)
  2. 测试各个接口
  3. 验证响应格式
  4. 检查错误处理

14.3 前端测试

组件测试

import { mount } from '@vue/test-utils'
import LoginForm from '@/components/LoginForm.vue'

describe('LoginForm', () => {
  it('validates username', () => {
    const wrapper = mount(LoginForm)
    // 测试逻辑
  })
})

十五、系统总结

15.1 项目完成情况

本系统成功实现了基于大模型的个性化练习题即时生成与推荐功能,完成了以下核心目标:

15.1.1 功能完成度

知识点管理

  • 树形层级结构
  • 难度标签管理
  • 增删改查操作
  • 批量导入导出

智能出题

  • DeepSeek API集成
  • 选择题和填空题生成
  • 题目质量控制
  • 本地模板兜底

学生模型

  • BKT算法实现
  • 答题记录追踪
  • 掌握度动态更新
  • 学习趋势分析

个性化推荐

  • 基于掌握度推荐
  • 薄弱知识点优先
  • 推荐策略分级

多角色支持

  • 学生端功能完整
  • 教师端学情分析
  • 管理员系统管理

数据可视化

  • ECharts图表展示
  • 多维度统计分析
  • 交互式数据探索

15.1.2 技术实现

后端技术

  • Django 5.0.7框架
  • Django REST Framework
  • SQLite数据库
  • DeepSeek API集成
  • BKT算法实现

前端技术

  • Vue 3 + Composition API
  • Element Plus UI组件
  • ECharts数据可视化
  • Axios HTTP客户端
  • Pinia状态管理

架构设计

  • 前后端分离
  • RESTful API
  • 模块化设计
  • 可扩展架构

15.2 系统亮点

15.2.1 创新性

  1. 大模型驱动出题

    • 突破传统题库限制
    • 题目多样化、个性化
    • 降低维护成本
  2. 科学的掌握度模型

    • 采用BKT算法
    • 考虑猜测和失误
    • 动态追踪学习进度
  3. 个性化推荐

    • 针对薄弱环节
    • 因材施教
    • 提高学习效率

15.2.2 实用性

  1. 完整的学习闭环

    • 从知识点到题目生成
    • 从答题到掌握度更新
    • 从分析到推荐
  2. 多角色协同

    • 学生自主学习
    • 教师监控指导
    • 管理员系统管理
  3. 数据驱动决策

    • 可视化学情分析
    • 识别教学难点
    • 优化教学策略

15.2.3 可扩展性

  1. 模块化设计

    • 功能模块独立
    • 易于维护升级
    • 支持功能扩展
  2. 标准化接口

    • RESTful API
    • 前后端解耦
    • 支持多端访问
  3. 灵活配置

    • 环境变量管理
    • 算法参数可调
    • 支持多种部署方式

15.3 应用场景

15.3.1 高校教学

  • 计算机组成原理课程辅助教学
  • 课后练习自动生成
  • 学生学习情况监控
  • 教学效果评估

15.3.2 在线教育

  • 自适应学习平台
  • 个性化学习路径
  • 智能题库系统
  • 学习数据分析

15.3.3 企业培训

  • 员工技能培训
  • 知识掌握度评估
  • 培训效果追踪
  • 个性化培训方案

15.4 项目价值

15.4.1 教育价值

  • 提高学习效率
  • 实现因材施教
  • 促进教学改革
  • 积累教学数据

15.4.2 技术价值

  • 大模型教育应用探索
  • 认知诊断算法实践
  • 前后端分离架构示范
  • 数据可视化技术应用

15.4.3 研究价值

  • 智能教育系统研究
  • 学习分析技术研究
  • 个性化推荐算法研究
  • 教育数据挖掘研究

十六、未来展望

16.1 功能扩展

16.1.1 题型扩展

  • 判断题
  • 简答题
  • 编程题
  • 综合应用题

16.1.2 学习路径规划

  • 基于知识图谱的学习路径
  • 前置知识点推荐
  • 学习进度预测
  • 学习时间估算

16.1.3 协作学习

  • 学生讨论区
  • 题目评论功能
  • 学习小组
  • 同伴互助

16.1.4 游戏化学习

  • 积分系统
  • 成就徽章
  • 排行榜
  • 学习挑战

16.2 技术优化

16.2.1 算法优化

推荐算法

  • 引入协同过滤
  • 深度学习推荐模型
  • 强化学习优化推荐策略
  • 多目标优化

掌握度模型

  • 深度知识追踪(DKT)
  • 动态学生模型
  • 多维度能力评估
  • 遗忘曲线建模

16.2.2 性能优化

  • 数据库升级到MySQL/PostgreSQL
  • 引入Redis缓存
  • 异步任务队列(Celery)
  • 负载均衡

16.2.3 AI能力增强

  • 多模型支持(GPT-4、Claude等)
  • 题目难度自动评估
  • 答案自动评分(简答题)
  • 学习建议生成

16.3 平台扩展

16.3.1 移动端

  • 开发移动App(React Native/Flutter)
  • 微信小程序
  • 支持离线学习
  • 推送通知

16.3.2 多学科支持

  • 扩展到其他计算机课程
  • 支持理工科课程
  • 通用题库框架
  • 学科知识图谱

16.3.3 开放平台

  • 提供API接口
  • 支持第三方集成
  • 插件系统
  • 数据导出接口

16.4 数据分析

16.4.1 学习分析

  • 学习行为分析
  • 学习模式识别
  • 学习效果预测
  • 个性化干预

16.4.2 教学分析

  • 教学效果评估
  • 课程难度分析
  • 知识点关联分析
  • 教学资源优化

16.4.3 系统分析

  • 用户行为分析
  • 系统性能监控
  • 异常检测
  • 智能运维

十七、参考文献与资源

17.1 理论基础

  1. Corbett, A. T., & Anderson, J. R. (1995). Knowledge tracing: Modeling the acquisition of procedural knowledge. User modeling and user-adapted interaction, 4(4), 253-278.

  2. Piech, C., et al. (2015). Deep knowledge tracing. Advances in neural information processing systems, 28.

  3. 教育数据挖掘与学习分析相关研究

17.2 技术文档

  1. Django官方文档:https://docs.djangoproject.com/
  2. Vue.js官方文档:https://vuejs.org/
  3. Element Plus文档:https://element-plus.org/
  4. ECharts文档:https://echarts.apache.org/
  5. DeepSeek API文档:https://platform.deepseek.com/

17.3 开源项目

  1. Django REST Framework:https://www.django-rest-framework.org/
  2. Vue Router:https://router.vuejs.org/
  3. Pinia:https://pinia.vuejs.org/
  4. Axios:https://axios-http.com/

十八、附录

18.1 常见问题(FAQ)

Q1:如何配置DeepSeek API密钥?

A:在Backend目录创建.env文件,添加:

DEEPSEEK_API_KEY=your_api_key_here

Q2:未配置API密钥能否使用系统?

A:可以。系统会自动使用本地模板生成题目,功能完整可用。

Q3:如何修改BKT算法参数?

A:在.env文件中配置:

BKT_GUESS=0.25
BKT_SLIP=0.1
BKT_P0=0.5

Q4:如何添加新的知识点?

A:登录教师或管理员账号,进入知识点管理页面,点击"添加知识点"。

Q5:题目审核流程是什么?

A:AI生成的题目初始状态为pending,教师审核后可通过/拒绝/修改,只有approved状态的题目学生才能看到。

18.2 系统配置参数说明

参数名 类型 默认值 说明
DEEPSEEK_API_KEY string “” DeepSeek API密钥
DEEPSEEK_API_BASE string https://api.deepseek.com/v1 API基础URL
DEEPSEEK_MODEL string deepseek-chat 使用的模型
DEEPSEEK_TIMEOUT int 90 API超时时间(秒)
USE_BKT_MASTERY bool true 是否使用BKT算法
BKT_GUESS float 0.25 BKT猜测率
BKT_SLIP float 0.1 BKT失误率
BKT_P0 float 0.5 BKT初始掌握概率
DEEPSEEK_ALLOW_TEMPLATE_FALLBACK bool false API失败时是否回退模板

18.3 API接口速查表

接口路径 方法 功能 权限
/api/login/ POST 用户登录 公开
/api/register/ POST 用户注册 公开
/api/knowledge/ GET 获取知识点列表 登录
/api/question/ GET 获取题目列表 登录
/api/practice/generate/ POST 生成练习题 学生
/api/practice/submit/ POST 提交答案 学生
/api/practice/recommend/ GET 获取推荐 学生
/api/practice/student_stats/ GET 学生统计 学生
/api/practice/wrong_book/ GET 错题本 学生
/api/practice/teacher_analytics/ GET 学情分析 教师

结语

本系统成功将大模型技术应用于教育领域,实现了智能出题、个性化推荐和学习分析的完整闭环。通过贝叶斯知识追踪算法,系统能够科学地评估学生的知识掌握情况,并提供针对性的学习建议。

系统采用前后端分离架构,技术栈成熟稳定,代码结构清晰,易于维护和扩展。无论是作为教学辅助工具,还是作为智能教育系统的研究平台,都具有较高的实用价值和研究价值。

未来,随着人工智能技术的不断发展,智能教育系统将在个性化学习、自适应教学、学习分析等方面发挥越来越重要的作用。本系统为这一领域的探索提供了有益的实践经验。


更多推荐