# 学习项目后端 **Repository Path**: shen19970101/learning-backend ## Basic Information - **Project Name**: 学习项目后端 - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-04-13 - **Last Updated**: 2026-04-28 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 辅助学习软件 - 后端 ## 项目简介 基于 Spring Boot 2.7.x + MyBatis-Plus + PostgreSQL 的辅助学习软件后端服务。 ## 技术栈 | 技术 | 版本 | |------|------| | Spring Boot | 2.7.18 | | MyBatis-Plus | 3.5.5 | | PostgreSQL | 14+ | | Java | 11 | ## 功能模块 - **用户模块**: 用户注册/登录 - **视频管理**: 视频的CRUD、分类筛选、搜索 - **分类管理**: 多级分类树的管理 - **脑图管理**: 知识脑图的展示和编辑 - **知识内容**: 脑图节点对应的详细知识内容 ## 快速开始 ### 1. 数据库准备 确保已安装PostgreSQL并运行,然后执行初始化脚本: ```bash psql -U dfc_admin -d postgres -f init-db.sql ``` 或者手动连接数据库并执行 `src/main/resources/schema.sql`。 ### 2. 修改配置 根据实际情况修改 `src/main/resources/application.yml` 中的数据库连接信息。 ### 3. 启动项目 ```bash mvn clean install mvn spring-boot:run ``` 服务将在 http://localhost:8081 启动。 ## API文档 ### 分类接口 | 接口 | 方法 | 说明 | |------|------|------| | /api/category/tree | GET | 获取分类树 | | /api/category | POST | 添加分类 | | /api/category/{id} | DELETE | 删除分类 | ### 视频接口 | 接口 | 方法 | 说明 | |------|------|------| | /api/video/list | GET | 视频列表(分页、搜索、筛选) | | /api/video/{id} | GET | 视频详情 | | /api/video | POST | 添加视频 | | /api/video/{id} | DELETE | 删除视频 | ### 脑图接口 | 接口 | 方法 | 说明 | |------|------|------| | /api/mindmap/{videoId} | GET | 获取视频对应的脑图 | | /api/mindnode | POST | 添加脑图节点 | | /api/mindnode/{id} | DELETE | 删除脑图节点 | ### 知识内容接口 | 接口 | 方法 | 说明 | |------|------|------| | /api/knowledge/{nodeId} | GET | 获取节点的知识内容 | | /api/knowledge | POST | 保存知识内容 | ## 新增功能:视频自动内容提取和脑图生成 ### 功能特性 - 视频上传和管理 - 自动视频内容提取和转录 - AI 驱动的内容分析 - 自动思维导图生成 - 视频处理进度跟踪 ### 环境要求 - Java 11+ - PostgreSQL 14+ with TimescaleDB - FFmpeg (用于音频提取) - Maven 3.6+ ### 配置说明 编辑 `src/main/resources/application.yml`: ```yaml spring: datasource: url: jdbc:postgresql://localhost:5432/learning_db username: dfc_admin password: dfc_secure_pass_2024 ai: openai: api-key: your-openai-api-key base-url: https://api.openai.com # 或使用兼容的 API 端点 file: upload-dir: /tmp/learning-videos ``` ### API 使用 #### 上传视频并自动处理 ```bash curl -X POST http://localhost:8080/api/video/upload \ -F "file=@/path/to/video.mp4" \ -F "title=我的视频" \ -F "description=视频描述" \ -F "userId=1" ``` 响应: ```json { "code": 200, "message": "success", "data": 1 } ``` #### 获取视频详情(含处理状态) ```bash curl http://localhost:8080/api/video/1 ``` 响应: ```json { "code": 200, "message": "success", "data": { "id": 1, "title": "我的视频", "processStatus": "COMPLETED", "transcript": "...", ... } } ``` #### 获取视频的思维导图 ```bash curl http://localhost:8080/api/mindnode/video/1 ``` ### 处理流程 1. **上传**:视频文件保存到服务器 2. **音频提取**:使用 FFmpeg 从视频中提取音频 3. **语音转文字**:将音频转录为文本(当前使用模拟数据,生产环境可接入 OpenAI Whisper) 4. **内容分析**:使用 AI 分析内容结构 5. **脑图生成**:根据分析结果创建思维导图节点 ### 状态说明 - `PENDING` - 待处理 - `UPLOADING` - 上传中 - `UPLOADED` - 已上传 - `EXTRACTING_AUDIO` - 提取音频中 - `TRANSCRIBING` - 转录中 - `ANALYZING` - 分析中 - `GENERATING_MINDMAP` - 生成脑图中 - `COMPLETED` - 已完成 - `FAILED` - 失败 ## 项目结构 ``` learning-backend/ ├── src/ │ ├── main/ │ │ ├── java/com/learning/ │ │ │ ├── common/ # 公共类 │ │ │ ├── config/ # 配置类(新增AsyncConfig) │ │ │ ├── controller/ # 控制器 │ │ │ ├── entity/ # 实体类 │ │ │ ├── enums/ # 枚举类(新增VideoProcessStatus) │ │ │ ├── mapper/ # MyBatis Mapper │ │ │ ├── service/ # 业务逻辑(新增VideoProcessService) │ │ │ └── LearningApplication.java │ │ └── resources/ │ │ ├── application.yml │ │ └── schema.sql │ └── test/ ├── pom.xml ├── init-db.sql └── README.md ```