一个基于 AI 的智能学习系统,支持知识图谱生成、智能出卷、自动批改和每日涂鸦记录。
- 知识图谱生成:输入科目名称,AI 自动生成知识树,每个知识点有 0-100 的掌握度评分
- 智能出卷:根据知识点掌握情况智能出题,薄弱环节多练习
- 自动批改:客观题自动批改,主观题 AI 评分,答题后自动更新知识点分数
- AI 解答:答题后可针对每道题向 AI 提问,获取详细解答
- 重新评分:AI 评分失败的题目支持重新评分
- 每日涂鸦:日历式心情记录,支持 16 种颜色和图片上传
- 学习进度:可视化展示各科目学习进度
| 层级 | 技术 |
|---|---|
| 后端 | Python 3.12 + FastAPI + SQLAlchemy (async) |
| 前端 | React 18 + TypeScript + Vite |
| 数据库 | PostgreSQL 15 |
| 对象存储 | MinIO |
| AI | 豆包 (Doubao-Seed) / 通义千问 (Qwen) |
| 部署 | Docker Compose |
# 1. 克隆项目
git clone <repo-url>
cd compoundLife
# 2. 配置环境变量
cp backend/.env.example backend/.env
# 编辑 backend/.env,填写 AI API 密钥
# 3. 创建外部数据卷(首次运行)
docker volume create learning-pg-data
docker volume create test-claude-code_minio_data
# 4. 启动所有服务
docker-compose up -d
# 5. 访问
# 前端: http://localhost
# 后端 API: http://localhost:8000/docs
# MinIO 控制台: http://localhost:9001cd backend
pip install -r requirements.txt
cp .env.example .env
# 编辑 .env 文件
uvicorn app.main:app --reload --port 8000cd frontend
npm install
npm run dev| 变量名 | 说明 | 示例 |
|---|---|---|
| DATABASE_URL | PostgreSQL 连接字符串 | postgresql+asyncpg://root:root@localhost:5432/learning_db |
| AI_PROVIDER | AI 提供商 | doubao-seed 或 qwen |
| DOUBAO_SEED_API_KEY | 豆包 API 密钥 | - |
| QWEN_API_KEY | 通义千问 API 密钥 | - |
| 变量名 | 说明 | 默认值 |
|---|---|---|
| MINIO_ENDPOINT | MinIO 内部地址 | minio:9000 |
| MINIO_PUBLIC_ENDPOINT | MinIO 外部访问地址 | localhost:9000 |
| MINIO_ACCESS_KEY | MinIO 访问密钥 | minioadmin |
| MINIO_SECRET_KEY | MinIO 密钥 | minioadmin123 |
| MINIO_BUCKET | 存储桶名称 | learning-files |
compoundLife/
├── backend/
│ ├── app/
│ │ ├── api/ # API 路由
│ │ ├── models/ # 数据模型
│ │ ├── schemas/ # Pydantic 模式
│ │ ├── services/ # 业务逻辑
│ │ ├── config.py # 配置
│ │ └── main.py # 入口
│ ├── Dockerfile
│ └── requirements.txt
├── frontend/
│ ├── src/
│ │ ├── api/ # API 客户端
│ │ ├── components/ # 组件
│ │ ├── pages/ # 页面
│ │ └── store/ # 状态管理
│ └── Dockerfile
└── docker-compose.yml
POST /api/knowledge/generate- 生成知识图谱GET /api/knowledge/{subject_id}- 获取知识图谱DELETE /api/knowledge/{subject_id}- 删除知识图谱
POST /api/exam/generate- 生成试卷GET /api/exam/{exam_id}- 获取试卷POST /api/exam/{exam_id}/submit- 提交答卷并批改POST /api/exam/{exam_id}/regrade- 重新评分(AI 评分失败的题目)POST /api/exam/question/{question_id}/ask- 向 AI 提问
POST /api/user/register- 用户注册GET /api/user/{user_id}/progress- 获取学习进度
GET /api/mood/{user_id}- 获取心情记录POST /api/mood/{user_id}- 保存心情记录DELETE /api/mood/{user_id}/{date}- 删除心情记录
POST /api/upload- 上传文件到 MinIO
如果遇到 [Errno -5] No address associated with hostname 错误,已在 docker-compose.yml 中配置了备用 DNS 和 hosts 映射。如果问题仍存在,可尝试重启 Docker。
这是 AI 评分失败时的回退机制。可以通过调用 /api/exam/{exam_id}/regrade 接口重新评分。
MIT