# hls
**Repository Path**: dxy1848/hls
## Basic Information
- **Project Name**: hls
- **Description**: nextjs+shadcn+reactQuery开发的个人学习平台 支持课程上传 视频学习 题目练习 视频笔记等功能
- **Primary Language**: TypeScript
- **License**: MIT
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 1
- **Forks**: 0
- **Created**: 2025-12-22
- **Last Updated**: 2026-02-10
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# 🎓 Athena Platform



**Athena学习平台 **
基于艾宾浩斯遗忘曲线和自适应学习理论的现代化在线教育平台
---
## 项目简介
**Athena Platform** 是一个集视频学习、智能题库、自适应推荐于一体的现代化在线教育平台。系统采用前后端分离架构,融合了认知心理学理论与人工智能技术,为学习者提供个性化、科学化的学习体验。
### 核心亮点
- **智能推荐算法**:基于艾宾浩斯遗忘曲线的多维度评分系统
- **HLS 流媒体**:支持大文件切片上传、自动转码、断点续传
- **学习分析**:可视化学习数据、进度追踪、薄弱环节分析
- **现代化 UI**:支持深色模式、主题切换、响应式设计
- **高性能**:Web Worker 优化、React Query 缓存、数据库索引优化
---
## 核心功能
### 视频学习系统
|
#### 视频管理
- 大文件切片上传(支持 500MB+)
- 自动 HLS 转码(多码率自适应)
- 视频合集管理
- 自定义封面上传
- 上传进度实时显示
|
#### 播放体验
- HLS.js 流媒体播放
- 学习进度自动保存
- 断点续播
- 播放速度控制
- 视频笔记功能
|
### 智能题库系统
|
#### 题目类型
- Markdown 代码题
- 文本理论题
- 难度分级(简单/中等/困难)
- 标签分类管理
- 富文本编辑器
|
#### 智能推荐
- 5 种预设推荐策略
- 多维度评分算法
- 自适应难度调整
- 遗忘曲线复习提醒
- 可解释推荐理由
|
### 学习数据分析
- **练习趋势图**:7/15/30 天练习频次和时长统计
- **分布分析**:标签占比、难度分布可视化
- **题目列表**:未完成题目、最近添加、最近完成
- **薄弱环节**:自动识别需要重点练习的知识点
- **正确率统计**:实时计算答题准确率
### 个人管理系统
- **日历待办**:支持跨天事件、全天事件、颜色标记
- **打卡系统**:每日任务管理、完成率统计
- **用户中心**:个人信息、头像上传、偏好设置
- **主题切换**:深色/浅色模式、多种主题色
---
## 🏗️ 技术栈
### 前端技术
```
核心框架:Next.js 16 + React 19 + TypeScript 5
状态管理:Zustand + React Query (TanStack Query)
UI 组件:Radix UI + Tailwind CSS 4 + shadcn/ui
数据可视化:Recharts + FullCalendar
视频播放:HLS.js + React Player
代码编辑:Monaco Editor + MD Editor RT
工具库:Axios + date-fns + dayjs + ahooks
性能优化:Web Worker + React Compiler
```
### 后端技术
```
核心框架:NestJS 10 + TypeScript
数据库:MySQL 8.0
ORM:TypeORM
认证授权:JWT + Passport
文件处理:Multer + FFmpeg (HLS 转码)
API 文档:Swagger / OpenAPI
```
### 开发工具
```
代码规范:ESLint + Prettier
版本控制:Git
包管理:npm
构建工具:Next.js (Turbopack) + Webpack
```
---
## 快速开始
### 环境要求
- Node.js >= 18.0.0
- MySQL >= 8.0
- FFmpeg >= 4.0 (用于视频转码)
- npm >= 9.0.0
### 1. 克隆项目
```bash
后端仓库地址:https://gitee.com/dxy1848/hls-backend
```
### 2. 安装依赖
```bash
# 安装前端依赖
cd web-front
npm install
# 安装后端依赖
cd ../web-backend
npm install
```
### 3. 配置数据库
当前目录下hls_edu.sql
### 4. 配置环境变量
**后端配置** (`web-backend/.env`):
```env
# 数据库配置
DB_HOST=localhost
DB_PORT=3306
DB_USERNAME=root
DB_PASSWORD=your_password
DB_DATABASE=hls_edu
# JWT 配置
JWT_SECRET=your_jwt_secret_key_here
JWT_EXPIRES_IN=7d
# 服务器配置
PORT=4000
NODE_ENV=development
# 文件上传路径
UPLOAD_PATH=./uploads
```
**前端配置** (`web-front/.env.local`):
```env
NEXT_PUBLIC_API_URL=http://localhost:4000
```
### 5. 启动项目
```bash
# 启动后端(终端1)
cd web-backend
npm run start:dev
# 启动前端(终端2)
cd web-front
npm run dev
```
### 6. 访问应用
- 前端地址:http://localhost:3000
- 后端 API:http://localhost:4000
- API 文档:http://localhost:4000/api-docs
### 默认账号
```
邮箱:admin@example.com
密码:123456
```
---
## 智能推荐算法
### 算法核心
Athena 的推荐系统基于**多维度评分模型**,综合考虑三个关键维度:
```
推荐分数 = w₁ × 时间分数 + w₂ × 难度分数 + w₃ × 掌握度分数
```
### 三大维度
#### 时间分数(基于艾宾浩斯遗忘曲线)
根据上次练习时间计算复习紧迫程度:
- **30 天未复习**:100 分(急需复习)
- **14 天未复习**:90 分(遗忘较多)
- **7 天未复习**:80 分(开始遗忘)
- **3 天未复习**:70 分(轻微遗忘)
- **1 天内练习**:20 分(记忆较新)
#### 难度分数(基于最近发展区理论)
根据用户能力推荐合适难度:
- 计算用户能力值(基于最近 30 次答题)
- 最佳难度 = 用户能力 + 15%
- 难度匹配度越高,分数越高
#### 掌握度分数(基于错题本理论)
评估用户对题目的掌握程度:
- **正确率 < 50%**:90 分(薄弱环节)
- **正确率 50-80%**:60 分(部分掌握)
- **正确率 > 80%**:30 分(已掌握)
### 五种推荐策略
| 策略 | 时间权重 | 难度权重 | 掌握度权重 | 适用场景 |
| ----------- | -------- | -------- | ---------- | -------------------- |
| 复习模式 | 60% | 20% | 20% | 考前冲刺、巩固记忆 |
| 突破模式 | 20% | 60% | 20% | 提升能力、挑战难题 |
| 巩固模式 | 20% | 20% | 60% | 查漏补缺、提高正确率 |
| 探索模式 | 30% | 40% | 30% | 学习新知识、拓展广度 |
| 平衡模式 | 35% | 35% | 30% | 日常练习、综合提升 |
详细算法设计请参考:智能题目推荐系统-核心设计
---
## HLS 视频处理流程
### 上传流程
```
1. 文件选择 → 2. 切片处理 → 3. 并发上传 → 4. 服务器合并 → 5. FFmpeg 转码 → 6. HLS 输出
```
### 技术特点
- **大文件支持**:切片上传,单片 5MB,支持 500MB+ 文件
- **断点续传**:localStorage 保存进度,刷新页面可继续
- **并发控制**:同时上传 3 个切片,提高效率
- **Web Worker 优化**:文件切片在后台线程处理,不阻塞 UI
- **自动转码**:FFmpeg 生成多码率 HLS 流(1080p/720p/480p)
- **进度追踪**:实时显示上传和转码进度
## 系统截图
### 首页概览

### 视频学习

### 题库练习


### 智能推荐

### 数据统计

### 日历待办

---
---
## 🔧 开发指南
### 代码规范
项目使用 ESLint + Prettier 统一代码风格:
```bash
# 检查代码规范
npm run lint
# 自动修复
npm run lint:fix
# 格式化代码
npm run format
```
### 提交规范
使用 Conventional Commits 规范:
```
():