# college-application **Repository Path**: smithjson/college-application ## Basic Information - **Project Name**: college-application - **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-03-17 - **Last Updated**: 2026-03-17 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 智能教育平台 前后端分离的教育网站:**进入时测评 → 智能推荐课程**,学习页 **左侧视频、右侧文档(随视频同步)、右下角白板笔记**,文档支持 **点击复制**。扩展了 **学习进度推荐下一节、错题推荐练习、视频/文档摘要与关键词** 等智能化能力;前端使用 **Less** 样式,组件封装在 **components** 目录。 ## 功能概览 - **首页**:引导用户开始测评或直接体验课程 - **测评页**:多类型选择题(能力、兴趣、目标、学习风格、时间投入),提交后由 **Python** 计算能力水平与兴趣点并推荐课程 - **学习页**: - 左侧:视频播放 - 右侧:讲义文档(含摘要与关键词)、根据视频当前时间自动滚动到对应段落(文档跟着视频动) - 文档中的代码块支持 **点击复制** - 右下角:**白板**,可切换笔色、粗细,写笔记/批注,支持清空 - **智能推荐**:根据学习进度推荐下一节/下一门课,根据错题推荐复习章节 - **标记错题**:点击「本节有疑问,标记错题」后,系统会推荐需要复习的内容 ## 技术栈 - **前端**:React 18 + Vite,React Router,**Less** 样式,**components** 组件封装 - **后端**:**Node.js (Express)** + **Python** 脚本 - Node 提供 HTTP API、存储进度与错题、调用 Python 做智能化计算 - Python 负责:测评画像(能力水平、兴趣点)、课程推荐、下一节推荐、错题练习推荐、文档摘要/关键词 - **测评题目类型**:ability(能力)、interest(兴趣)、goal(目标)、style(学习风格)、time(时间投入),用于检测兴趣点与能力水平 ## 本地运行 ### 1. 后端(端口 8000)Node.js + Python - 需安装 **Node.js** 与 **Python 3** - 后端以 Node 为主服务,测评/推荐/摘要等由 Python 脚本计算 ```bash cd backend npm install node server.js ``` (首次运行前请确保本机已安装 Python,且命令行可用 `python` 调用) ### 2. 前端(端口 5173) ```bash cd frontend npm install npm run dev ``` 浏览器访问:`http://localhost:5173` ### 3. 视频说明 课程默认使用示例视频 URL。若需使用本地视频: - 在 `backend` 下创建 `videos` 文件夹,放入 `sample.mp4` - 在 `backend/main.py` 的课程数据里将对应课程的 `video_url` 改为 `/videos/sample.mp4` - 前端已通过 Vite 代理将 `/videos` 转发到后端,可直接使用 ## 项目结构 ``` project/ ├── backend/ │ ├── server.js # Node 主服务(Express),调用 Python 做智能化 │ ├── package.json │ ├── data/ │ │ ├── assessment_questions.json # 测评题目(含类型:ability/interest/goal/style/time) │ │ └── courses.json │ ├── python/ # Python 脚本(测评画像、下一节推荐、练习推荐、摘要) │ │ ├── assessment.py │ │ ├── recommend_next.py │ │ ├── recommend_practice.py │ │ └── summary.py │ └── videos/ # 可选:放置本地视频 ├── frontend/ │ ├── src/ │ │ ├── components/ # 封装组件 │ │ │ ├── Button/ │ │ │ ├── PageHeader/ │ │ │ ├── FeatureCard/ │ │ │ ├── CourseCard/ │ │ │ ├── QuestionBlock/ │ │ │ ├── DocSection/ │ │ │ ├── Whiteboard/ │ │ │ ├── VideoPlayer/ │ │ │ ├── CopyToast/ │ │ │ ├── LearningLayout/ │ │ │ ├── CourseSummary/ │ │ │ ├── RecommendBlock/ │ │ │ └── index.js │ │ ├── styles/ │ │ │ ├── variables.less │ │ │ └── index.less │ │ ├── pages/ │ │ │ ├── Home.jsx + Home.less │ │ │ ├── Assessment.jsx + Assessment.less │ │ │ └── Learning.jsx + Learning.less │ │ ├── App.jsx │ │ └── main.jsx │ ├── index.html │ ├── package.json │ └── vite.config.js └── README.md ``` ## API 简要 - **测评**:`GET /api/assessment/questions`、`POST /api/assessment/submit`(返回 profile 与推荐 courses) - **课程**:`GET /api/courses`、`GET /api/courses/{course_id}`(含 doc_sections、summary、keywords) - **摘要**:`GET /api/courses/{course_id}/summary`(视频/文档摘要与关键词,当前从文档提取,可扩展为真实视频摘要) - **学习进度**:`POST /api/progress`(上报 course_id、section_index、video_time_sec)、`GET /api/progress/next?user_id=`(根据进度推荐下一节/下一门课) - **错题与练习**:`POST /api/practice/wrong`(记录错题)、`GET /api/practice/recommend?user_id=`(根据错题推荐复习章节) 文档与视频同步规则:根据 `video.currentTime` 落在哪一段 `[start, end)` 内,右侧文档自动滚动到该段并高亮。