# 考培练系统本地开发环境配置指南

## 🎯 概述

本文档为开发者提供本地开发环境的配置说明，确保开发者能够在本地连接远程数据库进行开发，而不与生产环境配置产生冲突。

## 📋 环境要求

### 系统要求
- Node.js 18+
- Python 3.11+
- Git
- 网络访问远程MySQL服务器

### 开发工具推荐
- VS Code / WebStorm
- Postman / Insomnia（API测试）
- MySQL Workbench（数据库管理）

## 🚀 快速开始

### 1. 克隆项目
```bash
git clone https://github.com/nongjun/ai-development-workspace.git
cd ai-development-workspace
```

### 2. 后端配置

#### 2.1 创建环境配置
```bash
cd kaopeilian-backend

# 复制环境配置模板
cp .env.example .env

# 编辑配置文件（保持远程数据库配置）
# .env 文件内容应该是：
# DATABASE_URL=mysql+aiomysql://root:Kaopeilian2025%21%40%23@120.79.247.16:3306/kaopeilian?charset=utf8mb4
# REDIS_URL=redis://localhost:6379/0
# DEBUG=true
```

#### 2.2 安装依赖
```bash
# 创建虚拟环境（推荐）
python -m venv venv
source venv/bin/activate  # Linux/Mac
# 或
venv\Scripts\activate     # Windows

# 安装依赖
pip install -r requirements.txt
```

#### 2.3 启动后端服务
```bash
# 方式1：直接运行（推荐，支持热重载）
python app/main.py

# 方式2：使用uvicorn
uvicorn app.main:app --reload --host 0.0.0.0 --port 8000

# 验证启动
curl http://localhost:8000/health
```

### 3. 前端配置

#### 3.1 安装依赖
```bash
cd kaopeilian-frontend

# 使用npm
npm install

# 或使用pnpm（推荐）
pnpm install
```

#### 3.2 配置环境变量
```bash
# 检查env.example文件
cat env.example

# 如果需要，可以创建.env.local文件覆盖配置
echo "VITE_API_BASE_URL=http://localhost:8000" > .env.local
echo "VITE_USE_MOCK_DATA=false" >> .env.local
```

#### 3.3 启动前端服务
```bash
# 开发模式启动（支持HMR热重载）
npm run dev

# 或使用pnpm
pnpm dev

# 访问地址：http://localhost:3001
```

## 🔧 配置说明

### 数据库连接配置

#### 远程MySQL连接信息
- **主机**: `120.79.247.16` 或 `aiedu.ireborn.com.cn`
- **端口**: `3306`
- **数据库**: `kaopeilian`
- **用户**: `root`
- **密码**: `Kaopeilian2025!@#`

#### 连接字符串格式
```env
# 注意：密码中的特殊字符需要URL编码
DATABASE_URL=mysql+aiomysql://root:Kaopeilian2025%21%40%23@120.79.247.16:3306/kaopeilian?charset=utf8mb4

# 特殊字符编码对照：
# ! → %21
# @ → %40  
# # → %23
```

### 前端API配置

#### 开发环境
- **API地址**: `http://localhost:8000`
- **代理配置**: Vite自动代理`/api`请求到后端
- **Mock数据**: 默认关闭（`VITE_USE_MOCK_DATA=false`）

#### 调试配置
```typescript
// src/config/env.ts
public readonly API_BASE_URL = import.meta.env.VITE_API_BASE_URL || 'http://localhost:8000'
public readonly USE_MOCK_DATA = import.meta.env.VITE_USE_MOCK_DATA === 'true'
```

## 🛠️ 开发工作流

### 日常开发流程

1. **启动后端服务**：
   ```bash
   cd kaopeilian-backend
   python app/main.py  # 自动热重载
   ```

2. **启动前端服务**：
   ```bash
   cd kaopeilian-frontend  
   npm run dev  # HMR热重载
   ```

3. **访问应用**：
   - 前端：http://localhost:3001
   - 后端API：http://localhost:8000
   - API文档：http://localhost:8000/docs

### 代码提交流程

1. **本地测试**：
   ```bash
   # 后端测试
   cd kaopeilian-backend
   pytest tests/

   # 前端测试
   cd kaopeilian-frontend
   npm run test
   npm run lint
   ```

2. **提交代码**：
   ```bash
   git add .
   git commit -m "feat: 添加新功能"
   git push origin main
   ```

3. **自动部署**：
   - 推送到main分支后，生产服务器会自动更新
   - 通过GitHub Webhook机制触发
   - 自动重新构建和部署

## 🔍 故障排查

### 常见问题

#### 1. 数据库连接失败
```bash
# 检查网络连接
ping 120.79.247.16

# 测试MySQL连接
mysql -h 120.79.247.16 -P 3306 -u root -p

# 检查环境变量
cat .env | grep DATABASE_URL
```

#### 2. 前端API请求失败
```bash
# 检查后端是否启动
curl http://localhost:8000/health

# 检查前端代理配置
cat vite.config.ts | grep proxy -A 10

# 检查浏览器Network面板
# 确认请求是否正确转发到 http://localhost:8000
```

#### 3. 热重载不工作
```bash
# 后端：确认使用--reload参数
ps aux | grep uvicorn

# 前端：确认开发模式启动
ps aux | grep vite
```

### 调试技巧

1. **后端调试**：
   ```bash
   # 查看详细日志
   python app/main.py --log-level debug
   
   # 使用调试器
   python -m pdb app/main.py
   ```

2. **前端调试**：
   ```bash
   # 查看构建信息
   npm run dev -- --debug
   
   # 检查环境变量
   npm run dev -- --mode development
   ```

3. **数据库调试**：
   ```bash
   # 连接数据库
   mysql -h 120.79.247.16 -P 3306 -u root -p kaopeilian
   
   # 查看表结构
   DESCRIBE users;
   DESCRIBE courses;
   ```

## 📚 开发规范

### 代码规范
- **后端**：使用black格式化，flake8检查
- **前端**：使用ESLint和Prettier
- **提交信息**：使用约定式提交格式

### API开发规范
- **路径**：`/api/v1/{module}/{action}`
- **响应格式**：统一使用`{code, message, data}`
- **错误处理**：统一异常处理和日志记录

### 数据库规范
- **字符集**：utf8mb4
- **命名**：下划线命名法
- **迁移**：使用Alembic管理数据库版本

## 🔄 与生产环境的区别

| 配置项 | 本地开发 | 生产环境 |
|--------|----------|----------|
| 数据库 | 远程MySQL (120.79.247.16) | 本地MySQL容器 |
| Redis | 本地Redis | Redis容器 |
| 前端 | 开发服务器 (HMR) | 静态文件 (Nginx) |
| 后端 | 直接运行 | Docker容器 |
| HTTPS | 不需要 | SSL证书 |
| 域名 | localhost | aiedu.ireborn.com.cn |

## 💡 最佳实践

### 1. 环境隔离
- 使用不同的配置文件
- 不要在开发环境修改生产数据
- 定期同步测试数据

### 2. 代码管理
- 频繁提交小的更改
- 使用有意义的提交信息
- 提交前进行本地测试

### 3. 调试技巧
- 使用浏览器开发者工具
- 查看Network面板确认API调用
- 使用Console查看前端日志
- 查看后端日志文件

### 4. 性能优化
- 使用代码分割
- 启用缓存机制
- 优化数据库查询
- 监控API响应时间

## 🆘 获取帮助

### 联系方式
- **技术支持**：查看项目README
- **问题反馈**：GitHub Issues
- **文档更新**：提交PR

### 相关文档
- [API接口文档](../全链路联调/前后端接口约定.md)
- [数据库架构](../../kaopeilian-backend/数据库架构-统一版.md)
- [联调经验](../全链路联调/联调经验汇总.md)
- [服务器部署](./服务器部署经验.md)
