init: sxbh.ltd 官网初始提交

- nginx 安全加固 (CSP, HSTS, 缓存策略)
- 共享 style.css
- 138个页面全部接入

Co-authored-by: Hermes AI <agent@hermes>
This commit is contained in:
Hermes CI Fix
2026-07-11 17:29:24 +08:00
co-authored by Hermes AI
commit e1a9b25afa
177 changed files with 21447 additions and 0 deletions
+409
View File
@@ -0,0 +1,409 @@
================================================================================
博海网络科技 · 博海学习网
项目设计与规划文档 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]
}
```
================================================================================
文档结束 · 博海网络科技数字员工团队
================================================================================