master
## 🚀 CI/CD 流程 ### Gitea Actions Workflow - 自动构建 Backend 和 Frontend Docker 镜像 - 推送镜像到 Harbor (192.168.1.83:8080) - 自动部署到 Kubernetes learn namespace - 支持滚动更新和健康检查 ### Docker 镜像 - **Backend**: Python 3.11 + FastAPI - 多阶段构建优化 - 健康检查探针 - 生产环境优化 - **Frontend**: Node 18 + Vue 3 + Nginx - 多阶段构建 - Gzip 压缩 - 静态资源缓存优化 ## ☸️ Kubernetes 部署 ### 基础设施 - Namespace: learn - PostgreSQL 15 (持久化存储) - ConfigMap 和 Secret 管理 - Service 和 Ingress 配置 ### 应用部署 - Backend: 2 副本,资源限制 - Frontend: 2 副本,Nginx 服务 - 健康检查:Liveness + Readiness Probes - 滚动更新策略 ### 访问配置 - Ingress: pager.learn.local - Frontend: http://pager.learn.local - API: http://pager.learn.local/api - API Docs: http://pager.learn.local/api/docs ## 📊 Grafana 监控 ### ServiceMonitor - Prometheus 自动服务发现 - Backend、Frontend、PostgreSQL 指标采集 - 30s 采集间隔 ### Dashboard 面板 - HTTP 请求速率和响应时间 - Pod CPU 和内存使用 - 数据库连接数 - 错误率 (4xx/5xx) - Pod 重启次数 - 磁盘使用率 ## 📦 新增文件 ### Docker - `backend/Dockerfile` - 后端镜像构建 - `frontend/Dockerfile` - 前端镜像构建 - `frontend/nginx.conf` - Nginx 配置 - `.dockerignore` - 构建优化 ### CI/CD - `.gitea/workflows/ci-cd.yaml` - Gitea Actions 配置 ### Kubernetes - `k8s/namespace.yaml` - Namespace 定义 - `k8s/configmap.yaml` - 应用配置 - `k8s/secret.yaml` - 敏感信息 - `k8s/postgres.yaml` - PostgreSQL 部署 - `k8s/deployment.yaml` - 应用部署 - `k8s/service.yaml` - Service 配置 - `k8s/ingress.yaml` - Ingress 路由 ### 监控 - `k8s/monitoring/servicemonitor.yaml` - Prometheus 采集 - `k8s/monitoring/grafana-dashboard.json` - Dashboard 定义 - `k8s/monitoring/install-dashboard.sh` - 安装脚本 ### 文档和脚本 - `CICD_DEPLOY.md` - 完整部署文档 - `deploy.sh` - 快速部署脚本 ## 🔧 配置要求 ### Gitea Secrets - `HARBOR_PASSWORD`: Harbor 密码 - `KUBECONFIG`: K8s 配置 (base64 编码) ### Harbor - 项目: pager - 认证: admin/admin123 ### Kubernetes - 版本: 1.24+ - Namespace: learn - Ingress Controller: nginx ## 📝 使用说明 ### 自动部署 ```bash git push origin master # 自动触发 CI/CD 流程 ``` ### 手动部署 ```bash ./deploy.sh ``` ### 查看状态 ```bash kubectl get pods -n learn kubectl logs -f -l app=pager-backend -n learn ``` ### 监控 1. 部署 ServiceMonitor: `kubectl apply -f k8s/monitoring/` 2. 安装 Grafana Dashboard: `cd k8s/monitoring && ./install-dashboard.sh` ## 🎯 特性 - ✅ 自动化 CI/CD 流程 - ✅ Docker 多阶段构建优化 - ✅ Kubernetes 高可用部署 - ✅ 滚动更新零停机 - ✅ 健康检查和自动恢复 - ✅ Prometheus + Grafana 监控 - ✅ 完整的故障排查文档 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <[email protected]>
学习助手 Pro 部署指南
这是一个基于 FastAPI + Vue3 的智能试卷管理与学习跟踪系统,支持PDF试卷智能解析、题目自动提取、错题管理和学习统计等功能。
✨ 核心功能
📄 智能试卷管理
- PDF试卷上传和预览
- 多学科试卷分类管理(数学、语文、英语等)
- 试卷信息自动识别和标注
🔍 题目智能提取
- AI驱动的PDF文本层解析,速度快准确率高(95%+)
- OCR备份解析,处理扫描版PDF
- 自动识别题目类型(选择题、填空题、解答题等)
- 智能提取题目图片(几何图形、函数图像等)
- 数学符号自动修复和优化
📊 错题管理系统
- 智能错题收集和分类
- 艾宾浩斯遗忘曲线复习提醒
- 个性化学习计划生成
- 错题复习统计和进度跟踪
📈 学习数据分析
- 详细的学习进度统计
- 多维度数据可视化
- 学科强弱项分析
- 学习效率评估
🚀 性能特点
- 超快解析速度: 0.01秒完成一页试卷解析
- 高准确率: 文本识别准确率95%+,性能提升2900倍
- 智能图片提取: 自动关联题目与图片,完美显示数学图形
- 热加载开发: 前后端完整热加载支持
🚀 快速启动
后端启动
- 进入后端目录:
cd backend
- 安装依赖:
pip install -r requirements.txt
- 启动后端服务:
python main.py
后端将在 http://0.0.0.0:8888 启动
前端启动
- 进入前端目录:
cd frontend
- 安装依赖:
npm install
- 启动开发服务器:
npm run dev
前端将在 http://localhost:3000 启动 (如端口被占用会自动选择其他端口)
📦 生产环境部署
方法1:使用 Docker (推荐)
创建 docker-compose.yml:
version: '3.8'
services:
backend:
build: ./backend
ports:
- "8000:8000"
volumes:
- ./data:/app/data
environment:
- DATABASE_URL=sqlite:///./data/wordmaster.db
frontend:
build: ./frontend
ports:
- "3000:3000"
depends_on:
- backend
启动:
docker-compose up -d
方法2:使用 PM2
- 安装 PM2:
npm install -g pm2
- 启动后端:
pm2 start "uvicorn main:app --host 0.0.0.0 --port 8000" --name wordmaster-backend
- 构建并启动前端:
cd frontend
npm run build
pm2 serve dist 3000 --name wordmaster-frontend
方法3:使用 Nginx 反向代理
Nginx 配置示例:
server {
listen 80;
server_name your-domain.com;
# 前端静态文件
location / {
root /path/to/frontend/dist;
try_files $uri $uri/ /index.html;
}
# API 反向代理
location /api {
proxy_pass http://localhost:8000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
🌐 远程访问配置
云服务器部署
-
阿里云/腾讯云/AWS:
- 创建云服务器实例
- 配置安全组,开放 8000 和 3000 端口
- 使用上述部署方法
-
域名配置:
- 购买域名并解析到服务器IP
- 配置 HTTPS (使用 Let's Encrypt)
内网穿透 (开发测试)
使用 ngrok 进行内网穿透:
# 安装 ngrok
npm install -g ngrok
# 穿透后端
ngrok http 8000
# 穿透前端
ngrok http 3000
📚 初中英语单词导入
系统已内置初中英语单词,启动后会自动导入。也可以手动导入:
1. 使用 API 导入
curl -X POST "http://localhost:8000/api/words/import" \
-H "Authorization: Bearer YOUR_TOKEN" \
-F "file=@initial_words.csv"
2. 使用前端界面导入
- 登录系统
- 进入"词库管理"页面
- 点击"导入单词"按钮
- 选择 CSV 或 JSON 文件
3. CSV 格式示例
word,meaning,example,phrases,level
abandon,放弃,He decided to abandon the project,abandon hope;abandon ship,middle_school
ability,能力,She has the ability to learn quickly,have ability;ability to do,middle_school
4. JSON 格式示例
[
{
"word": "abandon",
"meaning": "放弃",
"example": "He decided to abandon the project",
"phrases": ["abandon hope", "abandon ship"],
"level": "middle_school"
}
]
🔧 环境变量配置
后端环境变量 (可选):
# .env 文件
SECRET_KEY=your-super-secret-key-here
DATABASE_URL=sqlite:///./wordmaster.db
ACCESS_TOKEN_EXPIRE_MINUTES=30
📊 功能特性
🧠 学习算法
- SM-2 间隔重复算法:个性化复习间隔
- 主动回忆模式:输入答案,模糊匹配
- 多种学习模式:抽认卡、选择题、完形填空
- 双向练习:英→中、中→英自动切换
📈 智能分析
- 学习统计:准确率、连续天数、学习进度
- 顽固词检测:自动标记难记单词
- 记忆曲线:可视化复习预测
🎯 用户体验
- 响应式设计:支持电脑、平板、手机
- 语音朗读:TTS 发音功能
- 快捷键支持:键盘操作更高效
- 离线缓存:渐进式 Web 应用
🛠️ 技术栈
后端
- FastAPI:高性能 Python Web 框架
- SQLAlchemy:ORM 数据库操作
- JWT:用户认证
- Pydantic:数据验证
前端
- Vue 3:组合式 API
- Element Plus:UI 组件库
- Pinia:状态管理
- Vite:构建工具
数据库
- SQLite:轻量级数据库(可升级到 PostgreSQL/MySQL)
🔒 安全建议
- 修改默认密钥:
SECRET_KEY = "your-production-secret-key-very-long-and-random"
- CORS 配置:
allow_origins=["https://your-domain.com"] # 限制具体域名
-
HTTPS 部署:使用 SSL 证书
-
数据库安全:定期备份,访问控制
📱 移动端适配
系统已完全适配移动端,支持:
- 触摸手势操作
- 响应式布局
- PWA 渐进式应用
- 离线使用
🤝 技术支持
如遇问题,请检查:
- 端口是否被占用
- 防火墙设置
- Node.js 和 Python 版本
- 网络连接状态
祝您学习愉快!🎉
Languages
Vue
56.9%
Python
28.4%
Shell
7.1%
HTML
5.9%
JavaScript
1.6%
Other
0.1%