feat: 初始化考培练系统项目

- 从服务器拉取完整代码
- 按框架规范整理项目结构
- 配置 Drone CI 测试环境部署
- 包含后端(FastAPI)、前端(Vue3)、管理端

技术栈: Vue3 + TypeScript + FastAPI + MySQL
This commit is contained in:
111
2026-01-24 19:33:28 +08:00
commit 998211c483
1197 changed files with 228429 additions and 0 deletions

View File

@@ -0,0 +1,571 @@
# 考培练系统后端模块分工指南
## 1. 模块划分总览
### 核心业务模块
| 模块名称 | Agent代号 | 负责范围 | 依赖模块 |
|---------|----------|---------|----------|
| 认证授权模块 | Agent-Auth | 登录、注册、权限管理、Token管理 | - |
| 用户管理模块 | Agent-User | 用户CRUD、个人信息、团队管理 | Auth |
| 课程管理模块 | Agent-Course | 课程CRUD、资料管理、成长路径 | Auth, User |
| 考试模块 | Agent-Exam | 动态考试、成绩管理、错题分析 | Auth, User, Dify |
| AI陪练模块 | Agent-Training | 陪练场景、实时对话、陪练记录 | Auth, User, Coze |
| 数据分析模块 | Agent-Analytics | 统计分析、数据可视化、报表生成 | Auth, User, Exam, Training |
| 系统管理模块 | Agent-Admin | 系统配置、日志管理、岗位管理 | Auth, User |
### AI集成模块
| 模块名称 | Agent代号 | 负责范围 | 对接平台 |
|---------|----------|---------|----------|
| Coze集成服务 | Agent-Coze | Coze API封装、会话管理、消息处理 | Coze平台 |
| Dify集成服务 | Agent-Dify | Dify工作流调用、知识库查询 | Dify平台 |
## 2. 详细模块说明
### 2.1 Agent-Auth认证授权模块
**负责人**: 子Agent-1
**主要职责**:
- 用户登录/登出
- 用户注册
- JWT Token生成与验证
- 权限检查中间件
- 密码重置功能
**核心文件**:
```
app/
├── core/
│ ├── security.py # JWT处理、密码加密
│ └── dependencies.py # 认证依赖注入
├── models/
│ └── user.py # User模型仅认证相关字段
├── schemas/
│ └── auth.py # 认证相关的Pydantic模型
├── services/
│ └── auth_service.py # 认证业务逻辑
└── api/v1/
└── auth.py # 认证相关API路由
```
**API接口**:
```
POST /api/v1/auth/login # 用户登录
POST /api/v1/auth/register # 用户注册
POST /api/v1/auth/logout # 用户登出
POST /api/v1/auth/refresh # 刷新Token
POST /api/v1/auth/reset-password # 重置密码
```
**与其他模块的接口**:
```python
# 提供给其他模块的依赖注入
from app.api.deps import get_current_user, require_admin
@router.get("/protected")
async def protected_route(current_user: User = Depends(get_current_user)):
return {"user": current_user}
```
### 2.2 Agent-User用户管理模块
**负责人**: 子Agent-2
**主要职责**:
- 用户信息CRUD
- 个人资料管理
- 团队/部门管理
- 用户角色分配
**核心文件**:
```
app/
├── models/
│ ├── user.py # User模型完整
│ └── team.py # Team/Department模型
├── schemas/
│ ├── user.py # 用户相关Schema
│ └── team.py # 团队相关Schema
├── services/
│ ├── user_service.py # 用户业务逻辑
│ └── team_service.py # 团队业务逻辑
└── api/v1/
└── users.py # 用户管理API
```
**API接口**:
```
GET /api/v1/users # 获取用户列表
GET /api/v1/users/{id} # 获取用户详情
PUT /api/v1/users/{id} # 更新用户信息
DELETE /api/v1/users/{id} # 删除用户
GET /api/v1/users/me # 获取当前用户信息
PUT /api/v1/users/me # 更新当前用户信息
GET /api/v1/teams # 获取团队列表
POST /api/v1/teams # 创建团队
PUT /api/v1/teams/{id} # 更新团队
POST /api/v1/teams/{id}/members # 添加团队成员
```
### 2.3 Agent-Course课程管理模块
**负责人**: 子Agent-3
**主要职责**:
- 课程CRUD操作
- 课程资料管理
- 知识点管理
- 成长路径配置
- 课程分配
**核心文件**:
```
app/
├── models/
│ ├── course.py # Course模型
│ ├── material.py # 课程资料模型
│ └── growth_path.py # 成长路径模型
├── schemas/
│ ├── course.py # 课程相关Schema
│ └── growth_path.py # 成长路径Schema
├── services/
│ ├── course_service.py # 课程业务逻辑
│ └── growth_path_service.py # 成长路径逻辑
└── api/v1/
└── courses.py # 课程管理API
```
**API接口**:
```
# 课程管理
GET /api/v1/courses # 获取课程列表
POST /api/v1/courses # 创建课程
GET /api/v1/courses/{id} # 获取课程详情
PUT /api/v1/courses/{id} # 更新课程
DELETE /api/v1/courses/{id} # 删除课程
# 课程资料
POST /api/v1/courses/{id}/materials # 上传资料
GET /api/v1/courses/{id}/materials # 获取资料列表
DELETE /api/v1/courses/{id}/materials/{material_id} # 删除资料
# 成长路径
GET /api/v1/growth-paths # 获取成长路径列表
POST /api/v1/growth-paths # 创建成长路径
PUT /api/v1/growth-paths/{id} # 更新成长路径
```
### 2.4 Agent-Exam考试模块
**负责人**: 子Agent-4
**主要职责**:
- 动态生成考题调用Dify
- 考试流程管理
- 成绩计算与存储
- 错题本管理
- 考试报告生成
**核心文件**:
```
app/
├── models/
│ ├── exam.py # Exam模型
│ ├── question.py # Question模型
│ └── exam_record.py # 考试记录模型
├── schemas/
│ ├── exam.py # 考试相关Schema
│ └── question.py # 题目相关Schema
├── services/
│ ├── exam_service.py # 考试业务逻辑
│ └── question_service.py # 题目业务逻辑
└── api/v1/
└── exams.py # 考试相关API
```
**API接口**:
```
# 考试管理
POST /api/v1/exams/start # 开始考试
POST /api/v1/exams/submit # 提交答案
GET /api/v1/exams/{id} # 获取考试详情
GET /api/v1/exams/records # 获取考试记录
# 成绩查询
GET /api/v1/scores # 获取成绩列表
GET /api/v1/scores/{id} # 获取成绩详情
GET /api/v1/scores/statistics # 成绩统计
# 错题管理
GET /api/v1/mistakes # 获取错题列表
POST /api/v1/mistakes/practice # 错题重练
```
### 2.5 Agent-TrainingAI陪练模块
**负责人**: 子Agent-5
**主要职责**:
- 陪练场景管理
- WebSocket实时对话
- 语音处理TTS/ASR
- 陪练记录管理
- 陪练报告生成
**核心文件**:
```
app/
├── models/
│ ├── training_scene.py # 陪练场景模型
│ ├── training_record.py # 陪练记录模型
│ └── training_plan.py # 陪练计划模型
├── schemas/
│ ├── training.py # 陪练相关Schema
│ └── training_plan.py # 计划相关Schema
├── services/
│ ├── training_service.py # 陪练业务逻辑
│ └── training_plan_service.py # 计划业务逻辑
└── api/v1/
├── training.py # 陪练相关API
└── websocket.py # WebSocket处理
```
**API接口**:
```
# 陪练场景管理
GET /api/v1/training-scenes # 获取场景列表
POST /api/v1/training-scenes # 创建场景
PUT /api/v1/training-scenes/{id} # 更新场景
# 陪练计划
GET /api/v1/training-plans # 获取计划列表
POST /api/v1/training-plans # 创建计划
POST /api/v1/training-plans/{id}/assign # 分配计划
# 陪练会话
WS /ws/v1/training/{scene_id} # WebSocket陪练
POST /api/v1/training/start # 开始陪练
POST /api/v1/training/end # 结束陪练
# 陪练记录
GET /api/v1/training-records # 获取记录列表
GET /api/v1/training-records/{id} # 获取记录详情
```
### 2.6 Agent-Analytics数据分析模块
**负责人**: 子Agent-6
**主要职责**:
- 学习数据统计
- 考试成绩分析
- 陪练效果分析
- 能力评估报告
- 数据可视化
**核心文件**:
```
app/
├── schemas/
│ └── analytics.py # 分析相关Schema
├── services/
│ ├── analytics_service.py # 分析业务逻辑
│ └── report_service.py # 报告生成逻辑
└── api/v1/
└── analytics.py # 分析相关API
```
**API接口**:
```
# 整体统计
GET /api/v1/analytics/overview # 总览数据
GET /api/v1/analytics/trends # 趋势分析
# 学员分析
GET /api/v1/analytics/users/{id}/ability # 能力雷达图
GET /api/v1/analytics/users/{id}/progress # 学习进度
GET /api/v1/analytics/users/{id}/report # 个人报告
# 团队分析
GET /api/v1/analytics/teams/{id}/overview # 团队概况
GET /api/v1/analytics/teams/{id}/ranking # 团队排名
```
### 2.7 Agent-CozeCoze集成服务
**负责人**: 子Agent-7
**主要职责**:
- Coze API客户端封装
- 会话管理
- 消息流处理
- 错误重试机制
- 响应数据转换
**核心文件**:
```
app/services/ai/coze/
├── __init__.py
├── client.py # Coze客户端
├── training.py # 陪练相关功能
├── chat.py # 对话相关功能
├── models.py # Coze数据模型
└── exceptions.py # Coze异常处理
```
**提供的服务接口**:
```python
class CozeService:
async def create_training_session(self, bot_id: str, user_id: int)
async def send_message(self, session_id: str, content: str)
async def stream_chat(self, session_id: str, content: str)
async def end_session(self, session_id: str)
async def get_evaluation_report(self, session_id: str)
```
**对外API统一网关供前端与第三方服务解耦**:
```
# 课程对话(与课程对话页 /trainee/chat-course 使用)
POST /api/v1/course-chat/sessions # 创建课程对话会话入参course_id可选bot_id 覆盖)
POST /api/v1/course-chat/messages # 发送消息入参session_id, content, stream?bool
WS /ws/v1/course-chat/{session_id} # 可选:流式对话通道(文本/事件流)
# 陪练语音会话AI陪练会话页 /trainee/ai-practice 使用)
POST /api/v1/training/sessions # 创建陪练会话入参scene_id 或 bot_iduser_context 可选)
POST /api/v1/training/sessions/{id}/end # 结束陪练会话
WS /ws/v1/training/{session_id} # 语音/文本实时通话(沿用现有 coze-chat-backend 接口形式)
# 配置(统一环境变量)
# COZE_TRAINING_BOT_ID 陪练用Bot
# COZE_CHAT_BOT_ID 课程对话用Bot
```
> 说明:以上为网关层标准,内部由 `Agent-Coze` 适配既有 `coze-chat-backend` 能力(接口形同,仅切换 bot_id
### 2.8 Agent-DifyDify集成服务
**负责人**: 子Agent-8
**主要职责**:
- Dify API客户端封装
- 工作流调用
- 知识库查询
- 能力评估
- 课程推荐
**核心文件**:
```
app/services/ai/dify/
├── __init__.py
├── client.py # Dify客户端
├── exam.py # 考试相关功能
├── assessment.py # 评估相关功能
├── recommend.py # 推荐相关功能
├── models.py # Dify数据模型
└── exceptions.py # Dify异常处理
```
**提供的服务接口**:
```python
class DifyService:
async def generate_exam_questions(self, course_id: int, count: int)
async def evaluate_ability(self, user_id: int, audio_data: bytes)
async def recommend_courses(self, user_id: int, weak_points: List[str])
async def query_knowledge_base(self, query: str)
```
**对外API统一网关供前端与第三方服务解耦**:
```
# 动态考试(与 /exam/practice、/trainee/score-report 匹配)
POST /api/v1/exams/start # 启动动态考卷生成入参course_id, count可选difficulty/tags
POST /api/v1/exams/submit # 提交答案
GET /api/v1/exams/{id} # 获取考试详情/题目
GET /api/v1/exams/records # 获取考试记录
# 知识拆解(课程资料上传后触发/手动重分析,供课程中心与知识点管理)
POST /api/v1/knowledge/decompose # 文档/媒体知识拆解入参course_id, file_url 或 material_id
GET /api/v1/courses/{id}/knowledge-points # 获取课程知识点清单
# 能力评估与推荐(用于成长路径/个性化推荐)
POST /api/v1/assessment/ability # 上传音频或引用外部音频记录,返回能力弱项标签
POST /api/v1/recommend/courses # 根据弱项标签返回推荐课程
```
> 说明:网关层对接既有 `ExamsSystem` 与 `Dify` 工作流,保持前端稳定接口。
## 3. 模块间协作规则
### 3.1 依赖关系原则
1. **单向依赖**: 模块间只能单向依赖,避免循环依赖
2. **接口隔离**: 通过定义清晰的接口进行通信
3. **最小依赖**: 只依赖必要的模块,减少耦合
### 3.2 数据共享机制
```python
# app/core/context.py
from dataclasses import dataclass
from typing import Dict, Any
@dataclass
class SharedContext:
"""模块间共享的上下文信息"""
user_info: Dict[str, Any]
request_id: str
trace_id: str
# 在请求中传递上下文
async def some_api_handler(
request: Request,
current_user: User = Depends(get_current_user)
):
context = SharedContext(
user_info={"id": current_user.id, "role": current_user.role},
request_id=request.state.request_id,
trace_id=request.state.trace_id
)
# 传递给服务层
result = await service.process(context, data)
```
### 3.3 事件通知机制
```python
# app/core/events.py
from enum import Enum
from typing import Any, Dict
class EventType(Enum):
USER_CREATED = "user.created"
COURSE_COMPLETED = "course.completed"
EXAM_FINISHED = "exam.finished"
TRAINING_COMPLETED = "training.completed"
class EventBus:
"""简单的事件总线实现"""
def __init__(self):
self._handlers = {}
def subscribe(self, event_type: EventType, handler):
if event_type not in self._handlers:
self._handlers[event_type] = []
self._handlers[event_type].append(handler)
async def publish(self, event_type: EventType, data: Dict[str, Any]):
if event_type in self._handlers:
for handler in self._handlers[event_type]:
await handler(data)
# 使用示例
event_bus = EventBus()
# 在用户模块中发布事件
await event_bus.publish(EventType.USER_CREATED, {"user_id": user.id})
# 在分析模块中订阅事件
async def handle_user_created(data: Dict[str, Any]):
user_id = data["user_id"]
# 初始化用户的分析数据
await analytics_service.init_user_analytics(user_id)
event_bus.subscribe(EventType.USER_CREATED, handle_user_created)
```
## 4. 开发时序安排
### 第一批次(基础模块)
1. **Agent-Auth**: 最先开发,其他模块都依赖认证
2. **Agent-User**: 紧随其后,提供用户基础数据
### 第二批次AI集成
3. **Agent-Coze**: 为陪练模块提供支持
4. **Agent-Dify**: 为考试模块提供支持
### 第三批次(业务模块)
5. **Agent-Course**: 课程管理功能
6. **Agent-Exam**: 考试功能依赖Dify
7. **Agent-Training**: 陪练功能依赖Coze
### 第四批次(高级功能)
8. **Agent-Analytics**: 数据分析(依赖其他业务模块的数据)
9. **Agent-Admin**: 系统管理功能
## 5. 接口文档规范
每个模块必须提供完整的接口文档,格式如下:
```yaml
# api_docs/auth.yaml
openapi: 3.0.0
info:
title: 认证授权模块API
version: 1.0.0
paths:
/api/v1/auth/login:
post:
summary: 用户登录
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
username:
type: string
description: 用户名或邮箱
password:
type: string
description: 密码
required:
- username
- password
responses:
200:
description: 登录成功
content:
application/json:
schema:
type: object
properties:
code:
type: integer
example: 200
message:
type: string
example: success
data:
type: object
properties:
access_token:
type: string
refresh_token:
type: string
user:
$ref: '#/components/schemas/User'
```
## 6. 模块交付标准
每个模块完成时必须包含:
1. **源代码**
- 符合编码规范
- 包含完整的类型注解
- 有充分的注释
2. **测试代码**
- 单元测试覆盖率 > 80%
- 包含集成测试用例
- 测试数据准备脚本
3. **文档**
- API接口文档OpenAPI格式
- 模块设计文档
- 部署配置说明
4. **示例**
- API调用示例
- 配置文件示例
- 常见问题解答