Files
sxbh.ltd/learn-project-design.md
Hermes CI FixandHermes AI e1a9b25afa init: sxbh.ltd 官网初始提交
- nginx 安全加固 (CSP, HSTS, 缓存策略)
- 共享 style.css
- 138个页面全部接入

Co-authored-by: Hermes AI <agent@hermes>
2026-07-11 17:29:24 +08:00

410 lines
23 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
================================================================================
博海网络科技 · 博海学习网
项目设计与规划文档 v1.0
================================================================================
编制:数字员工团队(架构师)
日期:2026-05-21
================================================================================
一、项目背景
================================================================================
公司业务以IT服务(电脑维修、打印机维修、网络工程)为基础,需要培养内部
博海学习网团队。结合记忆曲线理论,持续学习、巩固知识、快速提升技能。
核心痛点:
1. 技术知识更新速度快,学习内容零散不成体系
2. 学完就忘,缺乏科学的复习机制(艾宾浩斯记忆曲线)
3. 缺少实战练手环境,理论与实践脱节
4. 学习进度无法量化追踪
================================================================================
二、项目定位
================================================================================
【对内】公司内部工程师技能提升平台
【对外】未来可扩展为面向公众的IT技术学习平台
**核心理念**:学 → 练 → 测 → 复 → 战
学习新知识 → 动手练习 → 测试检验 → 科学复习 → 实战应用
================================================================================
三、技术架构
================================================================================
沿用现有技术栈,与售后维修系统保持一致:
┌────────────────────────────────────────────┐
│ 前端:Vue3 + Element Plus │
│ (管理后台风格,一套代码多端适配) │
└──────────────────┬─────────────────────────┘
│ HTTP/JSON
┌──────────────────▼─────────────────────────┐
│ 后端:Python FastAPI + SQLAlchemy │
│ RESTful API + WebSocket(代码沙箱) │
└──────────────────┬─────────────────────────┘
┌──────────────────▼─────────────────────────┐
│ 数据库:SQLite (初期) → MySQL │
└────────────────────────────────────────────┘
**辅助能力**
- DeepSeek API:AI生成课程内容、编程题、代码评审
- 企微消息推送:学习提醒、复习提醒、进度通知
================================================================================
四、核心功能模块
================================================================================
┌─────────────────────────────────────────────────────────────┐
│ 博海学习网 │
├─────────────────────────────────────────────────────────────┤
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ ①课程 │ │ ②练习 │ │ ③测验 │ │ ④复习 │ │
│ │ 学习中心 │ │ 实战沙箱 │ │ 考试中心 │ │ 记忆曲线 │ │
│ └──────────┘ └──────────┘ └──────────┘ └──────────┘ │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ ⑤进度 │ │ ⑥AI助手 │ │ ⑦管理员 │ │
│ │ 看板 │ │ 智能问答 │ │ 后台管理 │ │
│ └──────────┘ └──────────┘ └──────────┘ │
└─────────────────────────────────────────────────────────────┘
4.1 课程学习中心
─────────────────────────────────────────────────────────────────
• 课程分类:前端(Vue/React/小程序)、后端(Python/FastAPI)、
数据库(MySQL/SQLite)、DevOpsDocker/Nginx/Linux
• 课程形式:Markdown富文本文章(含代码块高亮)
• 来源:① DeepSeek AI生成课程 ② 各网站最新产品说明书整理
③ 内部经验沉淀文档
• 功能:阅读进度保存、书签标记、文章收藏
• 每篇文章支持「标签」体系,如 #Python #FastAPI #入门 #进阶
4.2 练习实战沙箱
─────────────────────────────────────────────────────────────────
• 代码沙箱:基于 Docker 的在线代码运行环境
- 前端沙箱:Vue/React 代码编辑 + 实时预览
- 后端沙箱:Python 代码执行 + 输出显示
- 数据库沙箱:在线 SQL 查询练习
• 类型:代码填空题、代码改错题、自由编码题
• 提交后自动对比预期输出或调用 AI 做代码评审
4.3 测验考试中心
─────────────────────────────────────────────────────────────────
• 题目类型:单选题、多选题、简答题
• 题目来源:AI 自动生成 + 管理员人工审核
• 每学完一个章节触发「章节测验」
• 自动计分、错题本收录、答案解析
4.4 记忆曲线复习系统(核心亮点)
─────────────────────────────────────────────────────────────────
基于艾宾浩斯遗忘曲线,每个知识点/课程设置复习时间轴:
→ 第1次复习:学习后 30 分钟
→ 第2次复习:学习后 12 小时
→ 第3次复习:学习后 1 天
→ 第4次复习:学习后 3 天
→ 第5次复习:学习后 7 天
→ 第6次复习:学习后 15 天
→ 第7次复习:学习后 30 天
• 后台自动计算下次复习时间
• 登录时首页展示「今日待复习(N)」提醒
• 企微消息推送复习提醒(可选)
• 复习方式:快速回顾 + 1-2道关联测验题
• 复习记录追踪,可视化「掌握度」指标
4.5 学习进度看板
─────────────────────────────────────────────────────────────────
• 个人学习总览:已学课程、已完成练习、正确率趋势
• 技能树可视化:前端/后端/数据库/DevOps 四大能力雷达图
• 每日学习时长统计
• 连续学习天数(打卡记录)
• 排行榜(内部竞争激励)
4.6 AI智能助手
─────────────────────────────────────────────────────────────────
• 对接 DeepSeek API
• 功能:
- 根据关键词自动生成教程内容
- 代码答疑(选中代码块,AI解释/优化建议)
- 学习路径推荐(根据已完成内容推荐下一步学什么)
- 错题解析
4.7 管理员后台
─────────────────────────────────────────────────────────────────
• 课程管理:CRUD文章、设置分类、标签管理
• 题库管理:增删改查试题、批量导入
• 用户管理:学习记录查询、学习进度统计
• 内容审核:AI生成内容审核发布
• 数据统计:平台整体学习数据、课程热度排行
================================================================================
五、数据库设计(核心表结构)
================================================================================
┌─────────────────────┐
│ 用户表 users │ ← 复用企微用户体系
├─────────────────────┤
│ id, name, wecom_id │
│ role(admin/user) │
│ created_at │
└─────────┬───────────┘
┌─────────▼───────────┐ ┌─────────────────────────┐
│ 课程表 courses │ │ 分类表 categories │
├─────────────────────┤ ├─────────────────────────┤
│ id, title, content │◄─────│ id, name, parent_id │
│ category_id(FK) │ │ sort_order │
│ tags, difficulty │ └─────────────────────────┘
│ source(AI/manual) │
│ status(draft/publish)│
│ view_count │
│ created_at, updated_at│
└─────────┬───────────┘
┌─────────▼───────────┐ ┌─────────────────────────┐
│ 学习记录表 │ │ 复习计划表 │
│ learning_records │ │ review_plans │
├─────────────────────┤ ├─────────────────────────┤
│ id, user_id(FK) │ │ id, user_id(FK) │
│ course_id(FK) │ │ course_id(FK) │
│ progress(0-100) │ │ review_stage(1-7) │
│ last_study_at │ │ next_review_at │
│ completed(boolean) │ │ last_reviewed_at │
│ created_at │ │ mastery(0-100) │
└─────────────────────┘ └─────────────────────────┘
┌─────────────────────┐ ┌─────────────────────────┐
│ 题库表 questions │ │ 测验记录表 │
├─────────────────────┤ │ quiz_records │
│ id, course_id(FK) │ ├─────────────────────────┤
│ type(single/multi/ │ │ id, user_id(FK) │
│ short_answer) │ │ question_id(FK) │
│ content(题目内容) │ │ user_answer(text) │
│ options(JSON,选择题) │ │ is_correct(boolean) │
│ answer(text) │ │ score(int) │
│ explanation(解析) │ │ reviewed(boolean) │
│ difficulty │ │ created_at │
│ created_at │ └─────────────────────────┘
└─────────────────────┘
┌─────────────────────┐
│ 代码练习表 │
│ code_exercises │
├─────────────────────┤
│ id, course_id(FK) │
│ title, description │
│ template_code(text) │
│ language(py/js/sql) │
│ expected_output │
│ test_cases(JSON) │
│ user_submissions │
│ └── user_id, code, │
│ result, passed │
│ created_at │
└─────────────────────┘
================================================================================
六、记忆曲线算法设计
================================================================================
复习阶段与间隔时间对照表:
Stage | 间隔时间 | 复习内容
───────┼────────────┼─────────────────────────
1 | 30 分钟 | 快速回顾核心知识点
2 | 12 小时 | 阅读原文关键段落
3 | 1 天 | 做2-3道关联选择题
4 | 3 天 | 简答题记忆碎片
5 | 7 天 | 综合应用题
6 | 15 天 | 完整复习+项目实战
7 | 30 天 | 体系梳理+知识图谱
掌握度计算公式(简化版):
mastery = min(100, initial_mastery + sum_review_bonus)
每次复习加分:
- Stage 1-2: +10 分
- Stage 3-4: +15 分
- Stage 5-6: +20 分
- Stage 7: +25 分
初始掌握度 = min(60, 测验正确率 * 60)
每漏复习一次回退 5 分(惩罚机制)
================================================================================
七、内容来源策略
================================================================================
7.1 DeepSeek AI 生成(主要渠道)
─────────────────────────────────────────────────────────────────
• 管理员指定关键词或主题 → AI 生成课程框架 → 人工审核 → 发布
• AI 自动生成关联测验题(选择题+简答题)
• 代码练习题目 + 测试用例 AI 生成
7.2 产品说明书整理(辅助渠道)
─────────────────────────────────────────────────────────────────
• 各技术产品最新官方文档整理(FastAPI、Vue3、Docker等)
• 按「新功能速递」「版本迁移指南」「最佳实践」等分类
• 可爬取官网文档,AI自动摘要和结构化
7.3 内部经验沉淀
─────────────────────────────────────────────────────────────────
• 工程师实际踩坑记录 → 转化为「实战经验」文章
• 公司项目中用到的技术方案复盘
================================================================================
八、部署方案
================================================================================
• 子域名:learn.sxbh.ltd(暂定,需DNS添加A记录)
• 后端端口:8001(与 repair 系统8000端口错开)
• 部署方式:systemd 管理 FastAPI 进程
• 访问:https://learn.sxbh.ltd → nginx → 127.0.0.1:8001
• 数据备份:每日自动备份 SQLite 数据库到 /root/backups/
nginx 配置示例:
```
server {
listen 443 ssl http2;
server_name learn.sxbh.ltd;
ssl_certificate /etc/letsencrypt/live/sxbh.ltd/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/sxbh.ltd/privkey.pem;
client_max_body_size 50m;
location / {
proxy_pass http://127.0.0.1:8001;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
```
================================================================================
九、开发计划(三阶段)
================================================================================
┌──── 第一阶段:框架搭建 + 核心功能(预计 5 天)────┐
│ Day 1: 项目初始化(后端+前端脚手架、数据库建表) │
│ Day 2: 课程学习中心(CRUD + 文章浏览 + 阅读进度) │
│ Day 3: 测验系统(题库管理 + 答题 + 自动评分) │
│ Day 4: 记忆曲线复习系统(算法 + 复习提醒 + 进度) │
│ Day 5: 部署上线(nginx配置 + 子域名 + 数据填充) │
└─────────────────────────────────────────────────────┘
┌──── 第二阶段:完善功能(预计 5 天)──────────────────┐
│ Day 6-7: 代码沙箱(Docker在线运行环境) │
│ Day 8: 学习看板 + 技能雷达图 + 排行榜 │
│ Day 9: AI智能助手(DeepSeek对接) │
│ Day 10: 管理员后台完善 + 企微消息推送 │
└─────────────────────────────────────────────────────┘
┌──── 第三阶段:数据填充 + 持续优化──────────────────┐
│ 持续用 AI 生成课程内容 │
│ 整理各技术产品最新说明书入库 │
│ 用户反馈优化迭代 │
│ 未来考虑:扩展为对外公开平台 │
└─────────────────────────────────────────────────────┘
================================================================================
十、项目目录结构
================================================================================
/root/fullstack-learn/
├── backend/ # FastAPI 后端
│ ├── app/
│ │ ├── api/ # API 路由
│ │ │ ├── __init__.py
│ │ │ ├── courses.py # 课程相关
│ │ │ ├── quizzes.py # 测验相关
│ │ │ ├── reviews.py # 复习相关
│ │ │ ├── sandbox.py # 代码沙箱
│ │ │ ├── progress.py # 学习进度
│ │ │ ├── ai_assist.py # AI 助手
│ │ │ └── admin.py # 管理后台
│ │ ├── models/ # SQLAlchemy 模型
│ │ │ ├── __init__.py
│ │ │ ├── user.py
│ │ │ ├── course.py
│ │ │ ├── quiz.py
│ │ │ ├── review.py
│ │ │ └── exercise.py
│ │ ├── __init__.py
│ │ ├── main.py # 主应用入口
│ │ ├── database.py # 数据库配置
│ │ ├── schemas.py # Pydantic 模型
│ │ └── utils/
│ │ ├── __init__.py
│ │ ├── memory_curve.py # 记忆曲线算法
│ │ └── ai_client.py # DeepSeek API 客户端
│ ├── requirements.txt
│ ├── pyproject.toml
│ └── run.py
├── frontend/ # Vue3 前端
│ ├── src/
│ │ ├── views/
│ │ │ ├── Courses.vue # 课程列表
│ │ │ ├── CourseDetail.vue # 课程详情/学习
│ │ │ ├── Quiz.vue # 测验
│ │ │ ├── Review.vue # 复习中心
│ │ │ ├── Sandbox.vue # 代码沙箱
│ │ │ ├── Dashboard.vue # 学习看板
│ │ │ └── Admin*.vue # 管理后台
│ │ └── ...
│ ├── package.json
│ └── vite.config.ts
├── PROJECT_DESIGN.md # 本设计文档
├── docker-compose.yml # 可选 Docker 部署
└── README.md
================================================================================
十一、需要注意的风险与事项
================================================================================
1. 代码沙箱安全:Docker 容器必须隔离,防止恶意代码逃逸
→ 方案:限制 CPU/内存,禁用网络,超时自动销毁
2. 内容版权:爬取其他网站文档注意遵守 robots.txt 和版权声明
→ 方案:优先AI原创生成,引用来源注明出处
3. AI生成质量:DeepSeek 生成的内容需要人工审核后再发布
→ 方案:所有课程默认 draft 状态,审核后才 publish
4. 数据备份:学习记录是用户核心资产
→ 方案:每日定时备份数据库
5. 记忆曲线不要太烦人:复习提醒频率要合理
→ 方案:可配置复习提醒方式(不提醒/每日/仅站内)
================================================================================
附:记忆曲线算法核心伪代码
================================================================================
```python
def calculate_next_review(current_stage: int, completed: bool) -> dict:
"""计算下一次复习时间"""
intervals = {
0: timedelta(minutes=30), # 学完后30分钟
1: timedelta(hours=12), # 第1次复习后12小时
2: timedelta(days=1), # 第2次复习后1天
3: timedelta(days=3), # 第3次复习后3天
4: timedelta(days=7), # 第4次复习后7天
5: timedelta(days=15), # 第5次复习后15天
6: timedelta(days=30), # 第6次复习后30天
}
if current_stage >= 6:
return {"is_completed": True, "mastery": 100}
next_stage = current_stage + 1
next_review = datetime.now() + intervals[current_stage]
return {
"next_stage": next_stage,
"next_review_at": next_review,
"bonus_score": [10, 10, 15, 15, 20, 20, 25][current_stage]
}
```
================================================================================
文档结束 · 博海网络科技数字员工团队
================================================================================