# 智能算法展示平台 - 运行指南

## 系统要求

- Docker 和 Docker Compose
- 或者 Python 3.8+ 和 Node.js 18+

## 部署选项

### 选项1：Docker Compose 部署（推荐）

#### 完整部署（适用于网络良好环境）

```bash
# 进入部署目录
cd deploy

# 运行部署脚本
./deploy.sh
```

#### 网络受限环境部署

```bash
# 手动拉取镜像
docker pull postgres:14-alpine
docker pull redis:7-alpine
docker pull minio/minio:latest
docker pull python:3.9-slim
docker pull node:18-alpine

# 使用预拉取镜像的Compose文件
docker-compose -f compose-without-build.yml up -d
```

### 选项2：本地开发模式

#### 后端服务

```bash
# 进入后端目录
cd backend

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

# 启动服务
uvicorn app.main:app --reload
```

#### 前端服务

```bash
# 进入前端目录
cd frontend

# 安装依赖
npm install

# 启动开发服务器
npm run dev
```

## 服务地址

部署完成后，可通过以下地址访问服务：

- **前端应用**: http://localhost:3000
- **后端API**: http://localhost:8000
- **API文档**: http://localhost:8000/docs
- **MinIO控制台**: http://localhost:9001 (admin/minioadmin)
- **PostgreSQL**: localhost:5432
- **Redis**: localhost:6379

## 环境配置

### Docker环境变量

创建 `.env` 文件：

```bash
# 在 deploy 目录下创建 .env 文件
OPENAI_API_KEY=your_openai_api_key_here
SECRET_KEY=your_secret_key_here
```

### 本地开发环境变量

在本地开发时，可以创建 `.env` 文件：

```bash
# backend/.env
DATABASE_URL=postgresql://admin:password@localhost:5432/algorithm_db
REDIS_URL=redis://localhost:6379/0
MINIO_ENDPOINT=localhost:9000
MINIO_ACCESS_KEY=minioadmin
MINIO_SECRET_KEY=minioadmin
MINIO_BUCKET_NAME=algorithm-data
MINIO_SECURE=false
OPENAI_API_KEY=your_openai_api_key_here
SECRET_KEY=your_secret_key_here
ALGORITHM=HS256
ACCESS_TOKEN_EXPIRE_MINUTES=30
```

```bash
# frontend/.env
VITE_API_BASE_URL=http://localhost:8000/api
```

## 验证部署

### 检查服务状态

```bash
# Docker Compose 环境
docker-compose -f docker-compose-full.yml ps

# 检查特定服务日志
docker-compose -f docker-compose-full.yml logs backend
docker-compose -f docker-compose-full.yml logs frontend
```

### API测试

```bash
# 测试健康检查
curl http://localhost:8000/health

# 测试算法API
curl http://localhost:8000/api/v1/algorithms

# 测试API文档
open http://localhost:8000/docs
```

## 常用命令

### Docker Compose 管理

```bash
# 启动所有服务
docker-compose -f docker-compose-full.yml up -d

# 停止所有服务
docker-compose -f docker-compose-full.yml down

# 重建并启动服务
docker-compose -f docker-compose-full.yml up -d --build

# 查看服务日志
docker-compose -f docker-compose-full.yml logs -f

# 重启特定服务
docker-compose -f docker-compose-full.yml restart backend
```

### 本地开发

```bash
# 后端开发
cd backend
uvicorn app.main:app --reload --host 0.0.0.0 --port 8000

# 前端开发
cd frontend
npm run dev -- --host 0.0.0.0 --port 3000
```

## 故障排除

如果遇到问题，请参考 [TROUBLESHOOTING.md](TROUBLESHOOTING.md) 文档。

## 清理部署

```bash
# 停止并删除所有容器
docker-compose -f docker-compose-full.yml down

# 删除卷（会清除所有数据）
docker-compose -f docker-compose-full.yml down -v

# 清理未使用的Docker资源
docker system prune -a
```

## 性能调优

### Docker资源限制

可以在 `docker-compose.yml` 中添加资源限制：

```yaml
services:
  backend:
    # ... 其他配置
    deploy:
      resources:
        limits:
          cpus: '1.0'
          memory: 2G
        reservations:
          cpus: '0.5'
          memory: 1G
```

### 环境特定配置

根据部署环境调整配置：

- **开发环境**: 使用较低的资源限制，启用热重载
- **测试环境**: 适度的资源配置，禁用不必要的日志
- **生产环境**: 充足的资源，启用监控和日志聚合