# 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 Platform](https://img.shields.io/badge/Athena-Learning%20Platform-blue?style=for-the-badge) ![Version](https://img.shields.io/badge/version-1.0.0-green?style=for-the-badge) ![License](https://img.shields.io/badge/license-MIT-orange?style=for-the-badge) **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) - **进度追踪**:实时显示上传和转码进度 ## 系统截图 ### 首页概览 ![首页](./src/assets/home.png) ### 视频学习 ![视频学习](./src/assets/video.png) ### 题库练习 ![题库练习](./src/assets/test.png) ![题库练习详情](./src/assets/testpage.png) ### 智能推荐 ![智能推荐](./src/assets/practice.png) ### 数据统计 ![数据统计](./src/assets/sum.png) ### 日历待办 ![日历待办](./src/assets/todo.png) --- --- ## 🔧 开发指南 ### 代码规范 项目使用 ESLint + Prettier 统一代码风格: ```bash # 检查代码规范 npm run lint # 自动修复 npm run lint:fix # 格式化代码 npm run format ``` ### 提交规范 使用 Conventional Commits 规范: ``` ():