- nginx 安全加固 (CSP, HSTS, 缓存策略) - 共享 style.css - 138个页面全部接入 Co-authored-by: Hermes AI <agent@hermes>
23 KiB
================================================================================ 博海网络科技 · 博海学习网 项目设计与规划文档 v1.0
编制:数字员工团队(架构师) 日期:2026-05-21
================================================================================ 一、项目背景
公司业务以IT服务(电脑维修、打印机维修、网络工程)为基础,需要培养内部 博海学习网团队。结合记忆曲线理论,持续学习、巩固知识、快速提升技能。
核心痛点:
- 技术知识更新速度快,学习内容零散不成体系
- 学完就忘,缺乏科学的复习机制(艾宾浩斯记忆曲线)
- 缺少实战练手环境,理论与实践脱节
- 学习进度无法量化追踪
================================================================================ 二、项目定位
【对内】公司内部工程师技能提升平台 【对外】未来可扩展为面向公众的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)、DevOps(Docker/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
================================================================================ 十一、需要注意的风险与事项
- 代码沙箱安全:Docker 容器必须隔离,防止恶意代码逃逸 → 方案:限制 CPU/内存,禁用网络,超时自动销毁
- 内容版权:爬取其他网站文档注意遵守 robots.txt 和版权声明 → 方案:优先AI原创生成,引用来源注明出处
- AI生成质量:DeepSeek 生成的内容需要人工审核后再发布 → 方案:所有课程默认 draft 状态,审核后才 publish
- 数据备份:学习记录是用户核心资产 → 方案:每日定时备份数据库
- 记忆曲线不要太烦人:复习提醒频率要合理 → 方案:可配置复习提醒方式(不提醒/每日/仅站内)
================================================================================ 附:记忆曲线算法核心伪代码
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]
}