Files
111 998211c483 feat: 初始化考培练系统项目
- 从服务器拉取完整代码
- 按框架规范整理项目结构
- 配置 Drone CI 测试环境部署
- 包含后端(FastAPI)、前端(Vue3)、管理端

技术栈: Vue3 + TypeScript + FastAPI + MySQL
2026-01-24 19:33:28 +08:00

572 lines
17 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 考培练系统后端模块分工指南
## 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调用示例
- 配置文件示例
- 常见问题解答