- Complete knowledge base list and detail pages - Complete document upload component - Fix CORS config (add PUT/DELETE method support) - Fix file upload issues (disabled state and beforeUpload return value) - Add detailed debug logs (cleaned up) - Create Day 21-22 completion summary document
708 lines
13 KiB
Markdown
708 lines
13 KiB
Markdown
# 开发环境配置指南
|
||
|
||
## 🎯 核心建议:先本地开发,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**
|
||
|
||
|
||
|
||
|