# 开发环境配置指南

## 🎯 核心建议：先本地开发，MVP完成后再上云

**理由：**
- ✅ 节省成本（开发期2.5个月无需云服务器费用）
- ✅ 调试方便（本地开发响应快）
- ✅ 灵活性高（随时修改配置）
- ✅ 降低风险（等功能稳定后再上云）

---

## 📅 分阶段部署策略

### 阶段1：本地开发（0-2个月）⭐ 当前阶段

**环境：** 开发人员本地电脑

**需要的硬件：**
- CPU: 4核心以上
- 内存: 16GB以上（推荐）
- 硬盘: 50GB可用空间
- 操作系统: Windows 10+、macOS、Linux

**需要安装：**
- Docker Desktop（运行Dify）
- Node.js 18+（后端开发）
- PostgreSQL 15+（或用Docker）
- Redis 7+（或用Docker）

**费用：** ¥0（使用现有设备）

**适用于：**
- 搭建基础架构
- 开发核心功能
- 本地测试
- MVP开发

---

### 阶段2：内测环境（2-2.5个月）

**环境：** 小型云服务器

**推荐配置：**
- CPU: 2核心
- 内存: 4GB
- 硬盘: 40GB
- 带宽: 1Mbps

**云厂商选择：**
- 阿里云：轻量应用服务器 约¥60/月
- 腾讯云：轻量应用服务器 约¥50/月

**费用：** ¥50-60/月

**适用于：**
- 小范围内测（5-10人）
- 功能验证
- 性能初步测试

---

### 阶段3：正式上线（3个月后）

**环境：** 生产级云服务器

**推荐配置：**
- CPU: 4核心
- 内存: 8GB
- 硬盘: 100GB SSD
- 带宽: 5Mbps

**费用：** ¥200-300/月

**适用于：**
- 正式对外服务
- 100+用户规模

---

## 💻 本地开发环境配置（详细步骤）

### 方案A：全Docker方式（推荐 ⭐）

**优点：** 环境隔离、配置简单、一键启动

#### 1. 安装Docker Desktop

**Windows：**
```bash
# 下载并安装 Docker Desktop
# https://www.docker.com/products/docker-desktop/

# 启动后验证
docker --version
docker-compose --version
```

**macOS：**
```bash
# 使用 Homebrew
brew install --cask docker

# 或下载安装包
# https://www.docker.com/products/docker-desktop/
```

#### 2. 创建项目目录

```bash
mkdir ai-clinical-research
cd ai-clinical-research
```

#### 3. 创建 docker-compose.yml

```yaml
# docker-compose.yml
version: '3.8'

services:
  # PostgreSQL 数据库
  postgres:
    image: postgres:15-alpine
    container_name: acr-postgres
    environment:
      POSTGRES_DB: ai_clinical_research
      POSTGRES_USER: dev_user
      POSTGRES_PASSWORD: dev_password
    ports:
      - "5432:5432"
    volumes:
      - postgres_data:/var/lib/postgresql/data
    restart: unless-stopped

  # Redis 缓存
  redis:
    image: redis:7-alpine
    container_name: acr-redis
    ports:
      - "6379:6379"
    volumes:
      - redis_data:/data
    restart: unless-stopped

  # Dify（RAG系统）
  dify:
    image: langgenius/dify-api:latest
    container_name: acr-dify
    environment:
      - DB_USERNAME=dify
      - DB_PASSWORD=dify_password
      - DB_HOST=dify-postgres
      - DB_PORT=5432
      - DB_DATABASE=dify
      - REDIS_HOST=dify-redis
      - REDIS_PORT=6379
      - SECRET_KEY=your-secret-key-change-this
    ports:
      - "5001:5001"
    depends_on:
      - dify-postgres
      - dify-redis
    restart: unless-stopped

  # Dify 专用 PostgreSQL
  dify-postgres:
    image: postgres:15-alpine
    container_name: acr-dify-postgres
    environment:
      POSTGRES_DB: dify
      POSTGRES_USER: dify
      POSTGRES_PASSWORD: dify_password
    volumes:
      - dify_postgres_data:/var/lib/postgresql/data
    restart: unless-stopped

  # Dify 专用 Redis
  dify-redis:
    image: redis:7-alpine
    container_name: acr-dify-redis
    volumes:
      - dify_redis_data:/data
    restart: unless-stopped

  # Dify Web界面（可选，开发调试用）
  dify-web:
    image: langgenius/dify-web:latest
    container_name: acr-dify-web
    environment:
      - CONSOLE_API_URL=http://localhost:5001
    ports:
      - "3000:3000"
    depends_on:
      - dify
    restart: unless-stopped

volumes:
  postgres_data:
  redis_data:
  dify_postgres_data:
  dify_redis_data:

networks:
  default:
    name: acr-network
```

#### 4. 启动所有服务

```bash
# 启动所有容器
docker-compose up -d

# 查看运行状态
docker-compose ps

# 查看日志
docker-compose logs -f

# 停止所有容器
docker-compose down

# 停止并删除数据
docker-compose down -v
```

#### 5. 验证服务

```bash
# 检查 PostgreSQL
docker exec -it acr-postgres psql -U dev_user -d ai_clinical_research -c "\dt"

# 检查 Redis
docker exec -it acr-redis redis-cli ping
# 应返回: PONG

# 检查 Dify
curl http://localhost:5001/health
# 或在浏览器访问 http://localhost:3000
```

---

### 方案B：本地安装方式

**适用于：** 不想用Docker或机器配置较低

#### 1. 安装 PostgreSQL

**Windows：**
```bash
# 下载安装包
# https://www.postgresql.org/download/windows/

# 安装后创建数据库
psql -U postgres
CREATE DATABASE ai_clinical_research;
CREATE USER dev_user WITH PASSWORD 'dev_password';
GRANT ALL PRIVILEGES ON DATABASE ai_clinical_research TO dev_user;
```

**macOS：**
```bash
brew install postgresql@15
brew services start postgresql@15

# 创建数据库
createdb ai_clinical_research
```

#### 2. 安装 Redis

**Windows：**
```bash
# 使用 Memurai（Redis for Windows）
# https://www.memurai.com/get-memurai

# 或使用 WSL2 + Docker
wsl --install
# 然后在 WSL2 中运行 Docker
```

**macOS：**
```bash
brew install redis
brew services start redis
```

#### 3. 安装 Node.js

```bash
# Windows 和 macOS
# 下载 LTS 版本
# https://nodejs.org/

# 验证安装
node --version  # v18.x 或更高
npm --version
```

#### 4. 安装 Dify（本地方式）

```bash
# 克隆 Dify
git clone https://github.com/langgenius/dify.git
cd dify/api

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

# 配置环境变量
cp .env.example .env
# 编辑 .env，填入数据库连接信息

# 运行数据库迁移
flask db upgrade

# 启动 API
flask run --host=0.0.0.0 --port=5001
```

---

## 🔧 开发工具推荐

### 必需工具

1. **代码编辑器**
   - VS Code（推荐）⭐
   - WebStorm
   - Cursor（AI辅助编程）

2. **API测试工具**
   - Postman（推荐）⭐
   - Insomnia
   - VS Code REST Client 插件

3. **数据库管理工具**
   - DBeaver（推荐，免费）⭐
   - TablePlus
   - pgAdmin

4. **Git客户端**
   - Git命令行
   - GitHub Desktop
   - SourceTree

### 推荐插件（VS Code）

```json
{
  "recommendations": [
    "dbaeumer.vscode-eslint",         // ESLint
    "esbenp.prettier-vscode",         // 代码格式化
    "prisma.prisma",                  // Prisma ORM
    "ms-azuretools.vscode-docker",    // Docker
    "humao.rest-client",              // REST API 测试
    "bradlc.vscode-tailwindcss",      // TailwindCSS
    "dsznajder.es7-react-js-snippets" // React 代码片段
  ]
}
```

---

## 📝 本地开发配置文件

### 后端环境变量（.env）

```bash
# backend/.env

# 数据库
DATABASE_URL="postgresql://dev_user:dev_password@localhost:5432/ai_clinical_research"

# Redis
REDIS_URL="redis://localhost:6379"

# JWT
JWT_SECRET="your-jwt-secret-change-this-in-production"
JWT_EXPIRES_IN="7d"

# LLM API Keys（本地开发可先不填，等需要测试时再填）
DEEPSEEK_API_KEY=""
DASHSCOPE_API_KEY=""
GEMINI_API_KEY=""

# Dify
DIFY_API_URL="http://localhost:5001"
DIFY_API_KEY=""  # 启动Dify后在管理界面获取

# 对象存储（本地开发可先不配置）
OSS_ACCESS_KEY_ID=""
OSS_ACCESS_KEY_SECRET=""
OSS_BUCKET=""
OSS_REGION=""

# 应用配置
NODE_ENV="development"
PORT=3001
```

### 前端环境变量（.env.local）

```bash
# frontend/.env.local

# API 地址
VITE_API_URL="http://localhost:3001"

# 是否启用调试模式
VITE_DEBUG=true
```

---

## 🚀 快速启动脚本

### 一键启动（适用于方案A：Docker）

创建 `start-dev.sh`（macOS/Linux）或 `start-dev.bat`（Windows）：

**start-dev.sh:**
```bash
#!/bin/bash

echo "🚀 启动开发环境..."

# 启动 Docker 服务
echo "📦 启动 Docker 容器..."
docker-compose up -d

# 等待服务就绪
echo "⏳ 等待服务启动..."
sleep 10

# 启动后端
echo "🔧 启动后端服务..."
cd backend
npm run dev &
BACKEND_PID=$!

# 启动前端
echo "🎨 启动前端服务..."
cd ../frontend
npm run dev &
FRONTEND_PID=$!

echo "✅ 开发环境启动完成！"
echo ""
echo "📝 访问地址："
echo "   前端: http://localhost:5173"
echo "   后端: http://localhost:3001"
echo "   Dify: http://localhost:3000"
echo ""
echo "按 Ctrl+C 停止所有服务"

# 等待用户中断
wait $BACKEND_PID $FRONTEND_PID
```

**start-dev.bat:**
```batch
@echo off
echo 🚀 启动开发环境...

echo 📦 启动 Docker 容器...
docker-compose up -d

echo ⏳ 等待服务启动...
timeout /t 10

echo 🔧 启动后端服务...
start cmd /k "cd backend && npm run dev"

echo 🎨 启动前端服务...
start cmd /k "cd frontend && npm run dev"

echo ✅ 开发环境启动完成！
echo.
echo 📝 访问地址：
echo    前端: http://localhost:5173
echo    后端: http://localhost:3001
echo    Dify: http://localhost:3000
echo.
pause
```

---

## 💰 成本对比

### 本地开发（推荐用于开发阶段）

| 项目 | 成本 |
|------|------|
| 硬件 | ¥0（使用现有电脑） |
| 软件 | ¥0（全部开源免费） |
| LLM API | ¥10-50（少量测试） |
| **总计** | **¥10-50/2.5个月** |

### 云服务器（开发环境）

| 项目 | 成本 |
|------|------|
| 服务器（2核4G） | ¥60/月 × 2.5 = ¥150 |
| 数据库（小规格） | ¥50/月 × 2.5 = ¥125 |
| 带宽 | ¥30/月 × 2.5 = ¥75 |
| LLM API | ¥50 |
| **总计** | **¥400/2.5个月** |

**节省：约¥350-390（开发阶段）**

---

## ⚠️ 本地开发注意事项

### 1. 资源限制

**Docker Desktop 默认限制：**
- CPU: 2核心
- 内存: 2GB

**建议调整：**
```
设置 → Resources → Advanced
- CPUs: 4（如果机器允许）
- Memory: 8GB（推荐）
- Swap: 2GB
```

### 2. 端口占用

**常用端口：**
- 3000: Dify Web界面
- 3001: 后端API
- 5001: Dify API
- 5173: 前端开发服务器
- 5432: PostgreSQL
- 6379: Redis

**检查端口占用：**
```bash
# Windows
netstat -ano | findstr :3000

# macOS/Linux
lsof -i :3000
```

### 3. 数据备份

**定期备份数据库：**
```bash
# 备份
docker exec acr-postgres pg_dump -U dev_user ai_clinical_research > backup.sql

# 恢复
docker exec -i acr-postgres psql -U dev_user ai_clinical_research < backup.sql
```

### 4. API Key 管理

**开发阶段策略：**
- 使用个人API Key（不要提交到Git）
- 设置低配额（避免误操作）
- 使用便宜的模型测试（DeepSeek-V3）

---

## 🎯 什么时候需要购买云服务器？

### 场景1：需要团队协作

**时机：** 当第2名开发者加入时

**原因：**
- 共享开发环境
- 统一数据库
- 方便联调

**推荐：** 购买小型云服务器（2核4G，¥60/月）

### 场景2：需要外部测试

**时机：** MVP完成，需要给用户试用

**原因：**
- 外网访问
- 稳定性测试
- 收集反馈

**推荐：** 购买小型云服务器

### 场景3：准备正式上线

**时机：** 功能稳定，准备对外服务

**原因：**
- 生产级稳定性
- 性能优化
- 数据安全

**推荐：** 购买生产级服务器（4核8G，¥250/月）

---

## 📋 分阶段采购清单

### 第0-8周：本地开发（当前阶段）⭐

**需要购买：**
- [ ] ❌ 不需要任何云服务！

**需要准备：**
- [ ] ✅ 本地安装 Docker Desktop
- [ ] ✅ 申请 DeepSeek API Key（免费额度足够测试）
- [ ] ✅ 申请 Qwen API Key（可选）

**费用：** ¥0-10

---

### 第9-10周：内测准备（如需要）

**需要购买：**
- [ ] 🟡 轻量应用服务器（2核4G）¥60/月
- [ ] 🟡 或使用阿里云/腾讯云免费试用（新用户）

**用途：**
- 小范围内测
- 团队联调

**费用：** ¥0-120

---

### 第11周+：正式上线

**需要购买：**
- [ ] 🔴 云服务器（4核8G）¥250/月
- [ ] 🔴 对象存储 OSS ¥50/月
- [ ] 🔴 CDN加速 ¥50/月
- [ ] 🔴 域名 ¥50/年
- [ ] 🔴 SSL证书（可用免费的Let's Encrypt）

**费用：** ¥350/月起

---

## ✅ 推荐方案

### 第1-2个月（现在）：

**✅ 本地开发，不购买云服务器**

**理由：**
1. 节省成本（¥0 vs ¥400）
2. 调试方便（响应快）
3. 灵活性高（随时修改）
4. 功能还在开发中，不需要云环境

**需要做的：**
1. 安装 Docker Desktop
2. 按照本文档配置本地环境
3. 申请 DeepSeek API Key（少量测试用）

### 第2.5个月：

**🟡 考虑购买小型云服务器（如需内测）**

### 第3个月+：

**🔴 购买生产级服务器（正式上线）**

---

## 🎉 总结

**回答您的问题：不需要现在购买云服务器！**

**建议：**
1. ✅ **0-2个月：** 本地开发（Docker Desktop）
2. 🟡 **2-2.5个月：** 内测环境（小型云服务器，可选）
3. 🔴 **3个月+：** 生产环境（正式服务器）

**现在就可以开始：**
```bash
# 1. 安装 Docker Desktop
# 2. 创建项目目录
# 3. 复制上面的 docker-compose.yml
# 4. 启动开发环境
docker-compose up -d
```

**节省成本：约¥350-400（开发阶段）**

---

**文档版本：v1.0**  
**更新时间：2025-10-10**




