# 考培练系统后端项目脚手架结构

## 完整的项目目录结构

```
kaopeilian-backend/
├── app/
│   ├── __init__.py
│   ├── main.py                    # FastAPI 应用入口
│   ├── config/                    # 统一配置管理
│   │   ├── __init__.py
│   │   ├── settings.py            # 系统配置
│   │   ├── database.py            # 数据库配置
│   │   ├── coze_config.py         # Coze平台配置
│   │   └── dify_config.py         # Dify平台配置
│   ├── core/                      # 核心公共模块
│   │   ├── __init__.py
│   │   ├── dependencies.py        # 依赖注入
│   │   ├── security.py            # 认证授权
│   │   ├── exceptions.py          # 统一异常处理
│   │   ├── middleware.py          # 中间件
│   │   └── logger.py              # 日志配置
│   ├── models/                    # 数据库模型（统一）
│   │   ├── __init__.py
│   │   ├── base.py                # 基础模型类
│   │   ├── user.py                # 用户相关模型
│   │   ├── course.py              # 课程相关模型
│   │   ├── exam.py                # 考试相关模型
│   │   ├── training.py            # 陪练相关模型
│   │   └── analytics.py           # 分析相关模型
│   ├── schemas/                   # Pydantic 模式（统一）
│   │   ├── __init__.py
│   │   ├── base.py                # 基础响应模式
│   │   ├── user.py                # 用户相关模式
│   │   ├── course.py              # 课程相关模式
│   │   ├── exam.py                # 考试相关模式
│   │   ├── training.py            # 陪练相关模式
│   │   └── analytics.py           # 分析相关模式
│   ├── services/                  # 业务逻辑服务层
│   │   ├── __init__.py
│   │   ├── base_service.py        # 基础服务类
│   │   ├── user_service.py        # 用户业务逻辑
│   │   ├── course_service.py      # 课程业务逻辑
│   │   ├── exam_service.py        # 考试业务逻辑
│   │   ├── training_service.py    # 陪练业务逻辑
│   │   ├── analytics_service.py   # 分析业务逻辑
│   │   ├── ai/                    # AI平台集成服务
│   │   │   ├── __init__.py
│   │   │   ├── base_ai_service.py # AI服务基类
│   │   │   ├── coze/              # Coze API 集成
│   │   │   │   ├── __init__.py
│   │   │   │   ├── client.py      # Coze客户端封装
│   │   │   │   ├── training.py    # AI陪练功能
│   │   │   │   └── chat.py        # 课程对话功能
│   │   │   └── dify/              # Dify API 集成
│   │   │       ├── __init__.py
│   │   │       ├── client.py      # Dify客户端封装
│   │   │       ├── exam.py        # 动态考试功能
│   │   │       ├── assessment.py  # 能力评估功能
│   │   │       └── recommend.py   # 课程推荐功能
│   │   └── external/              # 外部服务集成
│   │       ├── __init__.py
│   │       ├── sms_service.py     # 短信服务
│   │       └── badge_service.py   # 智能工牌API
│   └── api/                       # API 路由（按模块分离）
│       ├── __init__.py
│       ├── deps.py                # 路由依赖
│       └── v1/                    # API v1版本
│           ├── __init__.py
│           ├── auth.py            # 认证相关
│           ├── users.py           # 用户管理
│           ├── courses.py         # 课程管理
│           ├── exams.py           # 考试模块
│           ├── training.py        # 陪练模块
│           ├── analytics.py       # 数据分析
│           ├── admin.py           # 系统管理
│           └── websocket.py       # WebSocket支持
├── migrations/                    # 数据库迁移
│   └── alembic/                  
│       ├── alembic.ini
│       └── versions/
├── tests/                         # 测试代码
│   ├── __init__.py
│   ├── conftest.py               # 测试配置
│   ├── unit/                     # 单元测试
│   ├── integration/              # 集成测试
│   └── e2e/                      # 端到端测试
├── scripts/                      # 脚本工具
│   ├── init_db.py               # 初始化数据库
│   ├── seed_data.py             # 种子数据
│   └── generate_docs.py         # 生成文档
├── docs/                        # 项目文档
│   ├── api/                     # API文档
│   ├── development/             # 开发文档
│   └── deployment/              # 部署文档
├── requirements/                # 依赖管理
│   ├── base.txt                # 基础依赖
│   ├── dev.txt                 # 开发依赖
│   └── prod.txt                # 生产依赖
├── docker/                      # Docker相关
│   ├── Dockerfile
│   ├── Dockerfile.dev          # 开发环境
│   └── nginx/                  # Nginx配置
├── .env.example                # 环境变量示例
├── .gitignore
├── docker-compose.yml          # 本地开发
├── docker-compose.prod.yml     # 生产环境
├── Makefile                    # 快捷命令
├── README.md                   # 项目说明
└── pyproject.toml             # Python项目配置
```

## AI平台集成架构

### Coze平台集成（用于AI陪练和课程对话）
```python
# app/services/ai/coze/client.py
from cozepy import Coze, TokenAuth
from app.config.coze_config import settings

class CozeClient:
    """Coze平台客户端封装"""
    def __init__(self):
        self.client = Coze(
            auth=TokenAuth(settings.COZE_API_TOKEN),
            base_url=settings.COZE_API_BASE
        )
    
    async def create_conversation(self, bot_id: str):
        """创建会话"""
        pass
    
    async def stream_chat(self, bot_id: str, conversation_id: str, message: str):
        """流式对话"""
        pass
```

### Dify平台集成（用于动态考试和能力评估）
```python
# app/services/ai/dify/client.py
import httpx
from app.config.dify_config import settings

class DifyClient:
    """Dify平台客户端封装"""
    def __init__(self):
        self.base_url = settings.DIFY_API_BASE
        self.api_key = settings.DIFY_API_KEY
        self.client = httpx.AsyncClient(
            base_url=self.base_url,
            headers={"Authorization": f"Bearer {self.api_key}"}
        )
    
    async def run_workflow(self, workflow_id: str, inputs: dict):
        """运行Dify工作流"""
        pass
    
    async def query_knowledge_base(self, kb_id: str, query: str):
        """查询知识库"""
        pass
```

## 配置文件示例

### Coze配置（app/config/coze_config.py）
```python
from pydantic import BaseSettings

class CozeSettings(BaseSettings):
    COZE_API_BASE: str = "https://api.coze.cn"
    COZE_WORKSPACE_ID: str
    COZE_API_TOKEN: str
    
    # Bot IDs
    COZE_TRAINING_BOT_ID: str  # AI陪练智能体
    COZE_CHAT_BOT_ID: str      # 课程对话智能体
    
    class Config:
        env_file = ".env"
```

### Dify配置（app/config/dify_config.py）
```python
from pydantic import BaseSettings

class DifySettings(BaseSettings):
    DIFY_API_BASE: str = "https://api.dify.ai/v1"
    DIFY_API_KEY: str
    
    # Workflow IDs
    DIFY_EXAM_WORKFLOW_ID: str        # 动态考试工作流
    DIFY_ASSESSMENT_WORKFLOW_ID: str  # 能力评估工作流
    DIFY_RECOMMEND_WORKFLOW_ID: str   # 课程推荐工作流
    
    class Config:
        env_file = ".env"
```

## 环境变量配置（.env.example）
```bash
# 基础配置
DEBUG=true
LOG_LEVEL=INFO
SECRET_KEY=your-secret-key

# 数据库配置
DATABASE_URL=mysql+aiomysql://user:password@localhost:3306/kaopeilian

# Coze平台配置
COZE_API_BASE=https://api.coze.cn
COZE_WORKSPACE_ID=7474971491470688296
COZE_API_TOKEN=pat_your_token_here
COZE_TRAINING_BOT_ID=7509379008556089379
COZE_CHAT_BOT_ID=7509380917472280617

# Dify平台配置
DIFY_API_BASE=https://api.dify.ai/v1
DIFY_API_KEY=app-your-api-key-here
DIFY_EXAM_WORKFLOW_ID=workflow_exam_id
DIFY_ASSESSMENT_WORKFLOW_ID=workflow_assessment_id
DIFY_RECOMMEND_WORKFLOW_ID=workflow_recommend_id

# Redis配置（用于缓存和会话）
REDIS_URL=redis://localhost:6379/0

# CORS配置
CORS_ORIGINS=["http://localhost:5173", "http://localhost:3000"]
```

