Sen descrición

231250141 d87e888e66 fix bug hai 6 meses
.mvn 44a4b5912c jar hai 6 meses
src d87e888e66 fix bug hai 6 meses
.dockerignore 6d1e91a56d dockerfile hai 6 meses
.gitignore e59f7e9672 first commit hai 6 meses
Dockerfile 6d1e91a56d dockerfile hai 6 meses
README.md e59f7e9672 first commit hai 6 meses
mvnw 44a4b5912c jar hai 6 meses
mvnw.cmd 44a4b5912c jar hai 6 meses
pom.xml e59f7e9672 first commit hai 6 meses

README.md

智能复习平台后端 (Smart Review Backend)

基于 Spring Boot 3.2 的智能复习平台后端服务,集成阿里云百炼 AI 和 OSS 存储。

技术栈

  • 框架: Spring Boot 3.2.0
  • 数据库: MySQL 8.0 + Spring Data JPA
  • 缓存: Redis
  • AI服务: 阿里云百炼 (DashScope)
  • 存储: 阿里云 OSS
  • 认证: JWT
  • 文档解析: flexmark-java (Markdown)
  • PDF导出: iText7 + html2pdf

项目结构

src/main/java/com/smartreview/
├── SmartReviewApplication.java    # 主启动类
├── configure/                      # 配置类
│   ├── DashScopeConfig.java       # AI配置
│   ├── LoginInterceptor.java      # 登录拦截器
│   ├── RedisConfig.java           # Redis配置
│   ├── SecurityConfig.java        # 安全配置
│   └── WebMvcConfig.java          # Web配置
├── controller/                     # 控制器层
│   ├── UserController.java        # 用户认证
│   ├── DocumentController.java    # 文档管理
│   ├── BlockController.java       # 内容块
│   ├── CheckpointController.java  # 题目提交
│   ├── ReviewChatController.java  # AI对话
│   └── ReportController.java      # 复习报告
├── service/                        # 服务层
│   ├── impl/                      # 服务实现
│   └── AIService.java             # AI服务接口
├── repository/                     # 数据访问层
├── po/                            # 实体类
├── vo/                            # 值对象
├── enums/                         # 枚举类
├── exception/                     # 异常处理
└── utils/                         # 工具类

API 接口

用户认证模块

接口 方法 说明
/api/user/login POST 用户登录
/api/user/register POST 用户注册
/api/user/info GET 获取当前用户信息

文档管理模块

接口 方法 说明
/api/document/upload POST 上传MD文档到OSS
/api/document/parse POST(SSE) 解析文档 → 切分Block → 提取知识点
/api/document/list GET 获取用户所有复习项目
/api/document/{id} GET 获取文档详情 + 目录树
/api/document/{id} DELETE 删除复习项目

复习学习模块

接口 方法 说明
/api/block/{blockId} GET 获取Block原文内容
/api/block/{blockId}/progress PUT 更新Block学习状态
/api/block/{blockId}/generate-question POST 动态生成Checkpoint题目
/api/checkpoint/submit POST 提交答案,返回批改结果

AI助教模块(支持多轮对话)

接口 方法 说明
/api/chat/conversation POST 创建新对话
/api/chat/conversations GET 获取对话列表
/api/chat/conversation/{id} GET 获取对话详情(含消息历史)
/api/chat/message POST(SSE) 发送消息(流式响应)
/api/chat/conversation/{id}/close POST 关闭对话
/api/chat/conversation/{id} DELETE 删除对话

复习报告模块

接口 方法 说明
/api/report/{documentId} GET 获取复习报告数据
/api/report/{documentId}/pdf GET 导出PDF报告

数据库表

  1. users - 用户表
  2. documents - 复习文档表
  3. chapters - 章节表
  4. blocks - 内容块表
  5. knowledge_points - 知识点表
  6. questions - 题目表
  7. user_answers - 答题记录表
  8. conversations - 对话会话表
  9. chat_messages - 对话消息表

配置说明

编辑 src/main/resources/application-dev.yml:

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/smart_review
    username: your_username
    password: your_password

aliyun:
  oss:
    endpoint: oss-cn-hangzhou.aliyuncs.com
    accessKeyId: your_access_key_id
    accessKeySecret: your_access_key_secret
    bucketName: your_bucket_name

dashscope:
  api-key: your_dashscope_api_key
  model: qwen-plus  # 默认使用的模型
  models:
    knowledge-extractor: qwen-plus  # 知识点提取
    question-generator: qwen-plus   # 题目生成
    answer-grader: qwen-plus        # 问答题批改
    review-assistant: qwen-plus     # 复习助教对话

运行项目

  1. 创建MySQL数据库:

    CREATE DATABASE smart_review CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
    
    1. 配置 application-dev.yml 中的数据库、OSS、DashScope信息

    2. 启动Redis服务

    3. 运行项目:

      mvn spring-boot:run
      

AI模型说明

本项目直接调用阿里云 DashScope 的大语言模型(如 qwen-plus),而不是调用智能体应用。

模型功能配置

application-dev.yml 中配置各功能使用的模型:

dashscope:
  api-key: your_api_key
  model: qwen-plus  # 默认模型
  models:
    knowledge-extractor: qwen-plus  # 知识点提取
    question-generator: qwen-plus   # 题目生成
    answer-grader: qwen-plus        # 答案批改
    review-assistant: qwen-plus     # AI对话助教

1. 知识点提取 (knowledge-extractor)

用途: 从Block内容中提取3-5个关键知识点 输出格式: JSON数组

[
  {"content": "知识点描述", "sourceText": "原文定位文字"}
]

2. 题目生成 (question-generator)

用途: 根据Block内容、知识点、用户提问历史动态生成题目 输出格式:

{
  "type": "SINGLE/MULTIPLE/ESSAY",
  "questionText": "题目内容",
  "options": ["A. 选项1", ...],
  "correctAnswer": "正确答案",
  "explanation": "解析",
  "sourceEvidence": "原文依据"
}

3. 问答题批改 (answer-grader)

用途: 批改问答题答案 输出格式:

{
  "score": 85,
  "feedback": "反馈意见",
  "reviewSuggestion": "回看建议"
}

4. 复习助教对话 (review-assistant)

用途: 支持自由对话和划词提问,帮助学生理解知识点 特性:

  • 支持多轮对话,保持上下文
  • 支持流式响应
  • 两种对话类型:FREE_CHAT(自由对话)、KNOWLEDGE_QA(知识点问答/划词提问)

多轮对话功能

对话类型

  1. FREE_CHAT(自由对话): 用户可以自由向AI助教提问
  2. KNOWLEDGE_QA(知识点问答): 用户划词选中文本后进行提问

对话流程

  1. 创建对话 POST /api/chat/conversation
  2. 发送消息 POST /api/chat/message(支持多轮)
  3. 获取历史 GET /api/chat/conversation/{id}
  4. 关闭/删除对话

核心功能

  1. 文档解析: 使用Markdown库解析MD文件,按标题层级切分章节,按段落切分Block
  2. 知识点提取: AI自动从每个Block中提取3-5个关键知识点
  3. 动态题目生成: 根据Block内容、知识点、用户提问历史智能生成checkpoint题目
  4. 划词提问: 用户选中文本后可向AI助教提问,提问内容会记录为知识点用于后续出题
  5. 复习报告: 生成包含进度、正确率、薄弱点、错题的复习报告,支持PDF导出