init: sxbh.ltd 官网初始提交
- nginx 安全加固 (CSP, HSTS, 缓存策略) - 共享 style.css - 138个页面全部接入 Co-authored-by: Hermes AI <agent@hermes>
This commit is contained in:
@@ -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)、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
|
||||
|
||||
================================================================================
|
||||
十一、需要注意的风险与事项
|
||||
================================================================================
|
||||
|
||||
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]
|
||||
}
|
||||
```
|
||||
|
||||
================================================================================
|
||||
文档结束 · 博海网络科技数字员工团队
|
||||
================================================================================
|
||||
Reference in New Issue
Block a user