feat: complete Dify platform deployment (Day 18)

## Dify 閮ㄧ讲瀹屾垚 鉁?
### 瀹屾垚鐨勫伐浣?1. Docker 闀滃儚鍔犻€熷櫒閰嶇疆
   - 閰嶇疆 5 涓浗鍐呴暅鍍忔簮
   - 澶у箙鎻愬崌涓嬭浇閫熷害鍜屾垚鍔熺巼

2. Dify 闀滃儚鎷夊彇 (鍏?11 涓湇鍔?
   - langgenius/dify-api:1.9.1
   - langgenius/dify-web:1.9.1
   - postgres, redis, weaviate, nginx 绛?   - 鎬诲ぇ灏忕害 2GB锛岃€楁椂绾?15 鍒嗛挓

3. Dify 鏈嶅姟鍚姩
   - 鉁?nginx (80/443)
   - 鉁?api, worker, worker_beat
   - 鉁?web (3000)
   - 鉁?db (PostgreSQL), redis
   - 鉁?weaviate (鍚戦噺鏁版嵁搴?
   - 鉁?sandbox, plugin_daemon, ssrf_proxy

4. Dify 鍒濆鍖栭厤缃?   - 鍒涘缓绠$悊鍛樿处鍙?   - 鍒涘缓搴旂敤: AI Clinical Research
   - 鑾峰彇 API Key: app-VZRn0vMXdmltEJkvatHVGv5j

5. 鍚庣鐜閰嶇疆
   - DIFY_API_URL=http://localhost/v1
   - DIFY_API_KEY 宸查厤缃?
### 鏂囨。鏇存柊
- 鏂板: docs/05-姣忔棩杩涘害/Day18-Dify閮ㄧ讲瀹屾垚.md
- 鏇存柊: docs/04-寮€鍙戣鍒?寮€鍙戦噷绋嬬.md (Day 18 鏍囪涓哄畬鎴?

### 涓嬩竴姝?Day 19-24: 鐭ヨ瘑搴撶郴缁熷紑鍙?- Dify 瀹㈡埛绔皝瑁?- 鐭ヨ瘑搴撶鐞?CRUD
- 鏂囨。涓婁紶涓庡鐞?- @鐭ヨ瘑搴撻泦鎴?- RAG 闂瓟楠岃瘉

---
Progress: 閲岀▼纰?1 (MVP) 85% -> 鐭ヨ瘑搴撶郴缁熷紑鍙戜腑
This commit is contained in:
AI Clinical Dev Team
2025-10-11 08:58:41 +08:00
parent 0f0940534f
commit 9acbb0ae2b
70 changed files with 504 additions and 2 deletions

2
.gitignore vendored
View File

@@ -48,3 +48,5 @@ tmp/
temp/
*.tmp

View File

@@ -295,3 +295,5 @@ docker system df
**💪 加油!配置镜像加速器后成功率会大大提升!**

View File

@@ -18,3 +18,5 @@ echo.
echo 按任意键退出...
pause >nul

View File

@@ -169,3 +169,5 @@ npm run dev
**🎊 现在可以愉快地使用系统了!**
**祝您测试顺利!** 🚀

View File

@@ -307,3 +307,5 @@ agents:
# - outputFormat: 输出格式text/structured/document
# - tags: 标签列表

View File

@@ -117,3 +117,5 @@
记住:你的评价将直接影响研究者的决策,因此要认真负责、专业严谨。

View File

@@ -13,3 +13,5 @@
请根据创新性、临床价值、科学性和可行性四个维度,对上述选题进行全面评价,并给出改进建议。

View File

@@ -75,3 +75,5 @@ export class LLMFactory {
}
}

View File

@@ -53,3 +53,5 @@ export interface ILLMAdapter {
// 支持的模型类型
export type ModelType = 'deepseek-v3' | 'qwen3-72b' | 'gemini-pro';

View File

@@ -33,3 +33,5 @@ process.on('beforeExit', async () => {
await closeDatabaseConnection();
});

View File

@@ -213,3 +213,5 @@ class AgentController {
export const agentController = new AgentController();

View File

@@ -108,3 +108,5 @@ export async function validateProjectUpdate(request: FastifyRequest, reply: Fast
}
}

View File

@@ -210,3 +210,5 @@ class AgentService {
// 导出单例
export const agentService = new AgentService();

View File

@@ -8,3 +8,5 @@ cd /d %~dp0
call npm run dev
pause

View File

@@ -46,3 +46,5 @@ networks:
ai-clinical-network:
driver: bridge

View File

@@ -357,3 +357,5 @@ AI智能体是产品的核心用户可以通过以下两种主要路径与智
**文档维护者:** 产品经理
**最后更新:** 2025-10-10

View File

@@ -417,3 +417,5 @@ npm run dev
**文档位置:** `docs/00-项目概述/技术架构总览.md`
**作者:** AI技术顾问

View File

@@ -295,3 +295,5 @@ AIclinicalresearch/docs/
**完成时间:** 2025-10-10
**创建者:** AI技术顾问 + 项目团队

View File

@@ -1020,3 +1020,5 @@ Response: 200 OK
**最后更新:** 2025-10-10
**维护者:** 开发团队

View File

@@ -768,3 +768,5 @@ model AdminLog {
**文档维护:** 数据库结构变更需同步更新本文档
**Review频率** 每个里程碑结束后Review一次

View File

@@ -535,3 +535,5 @@ document.addEventListener('DOMContentLoaded', () => {
</body>
</html>

View File

@@ -812,3 +812,5 @@ module.exports = {
**最后更新:** 2025-10-10
**维护者:** 技术负责人

View File

@@ -590,3 +590,5 @@
**最后更新:** 2025-10-10
**维护者:** 产品经理 + 技术负责人

View File

@@ -12,7 +12,7 @@
```
设计阶段 ████████████████████ 100% (已完成)
里程碑1 MVP ████████████████████ 100% (Week 1-4) ✅ 核心验证完成
里程碑1 MVP █████████████████░░░ 85% (Week 1-4) 🔄 知识库系统开发中
里程碑2 扩展 ░░░░░░░░░░░░░░░░░░░░ 0% (Week 5-7)
里程碑3 补充 ░░░░░░░░░░░░░░░░░░░░ 0% (Week 8-9)
里程碑4 完善 ░░░░░░░░░░░░░░░░░░░░ 0% (Week 10-11)
@@ -538,7 +538,41 @@ Phase 4: 完善系统Week 10-11
### Week 3Day 18-24知识库完整流程 ⭐⭐⭐
#### Day 18: Dify客户端封装
#### Day 18: Dify平台部署 ✅ 已完成
- [x] **Docker镜像加速器配置**
- 配置5个国内镜像源
- 提升下载速度和成功率
- [x] **Dify镜像拉取**
- 共11个服务镜像
- 总大小约2GB
- 耗时约15分钟
- [x] **Dify服务启动**
- ✅ nginx (端口80/443)
- ✅ api, worker, worker_beat
- ✅ web
- ✅ db (PostgreSQL), redis
- ✅ weaviate (向量数据库)
- ✅ sandbox, plugin_daemon, ssrf_proxy
- [x] **Dify初始化配置**
- 创建管理员账号
- 创建应用AI Clinical Research
- 获取API Key`app-VZRn0vMXdmltEJkvatHVGv5j`
- [x] **后端环境配置**
- 配置 `DIFY_API_URL=http://localhost/v1`
- 配置 `DIFY_API_KEY`
**验收:** ✅ Dify平台已部署并正常运行
**详细总结:** 参见 `docs/05-每日进度/Day18-Dify部署完成.md`
---
#### Day 19: Dify客户端封装
- [ ] **创建Dify客户端**
- `backend/src/clients/dify.ts`

View File

@@ -442,3 +442,5 @@ AIclinicalresearch/
让我们开始搭建前端基础架构吧!

View File

@@ -154,3 +154,5 @@ docker exec -it ai-clinical-redis redis-cli ping
**记录人:** 开发团队
**完成时间:** 2025-10-10 15:16

View File

@@ -371,3 +371,5 @@ Day 5的所有任务已全部完成
**下一步**开始Day 6 - 前端基础架构搭建!🎨

View File

@@ -434,3 +434,5 @@ npm run build
让我们继续完善前端页面!

View File

@@ -316,3 +316,5 @@ feat(frontend): Day 7 - 前端完整布局完成
**Day 7 任务完成!** 🎉
**下一步:** 开始Day 8-9的后端项目管理API开发

View File

@@ -460,3 +460,5 @@ feat: Day 8-9 - Project Management API completed
**Day 8-9 任务完成!** 🎉
**下一步:** 开始Day 10-11的智能体配置系统开发

View File

@@ -575,3 +575,5 @@ feat: Day 10-11 - Agent Configuration System completed
**Day 10-11 任务完成!** 🎉
**下一步:** 开始Day 12-17的对话系统和知识库集成开发

View File

@@ -741,3 +741,5 @@ feat: Day 12-13 - LLM Adapters and Conversation System completed
**注意:** 需要配置DeepSeek和Qwen API Key才能进行实际对话测试

View File

@@ -604,3 +604,5 @@ feat: Day 14-17 - Frontend Chat Interface completed
**Day 14-17 完成里程碑1 MVP 100%达成!** 🎊
**现在可以进行端到端测试了!** 🚀

View File

@@ -0,0 +1,332 @@
# Day 18 - Dify部署完成总结
**日期**: 2025-10-11
**状态**: ✅ 已完成
---
## 🎯 本次任务目标
完成Dify平台部署为知识库系统开发做好准备。
---
## ✅ 完成的工作
### 1. Docker镜像加速器配置 ✅
**操作**
- 配置了5个国内Docker镜像源
- 大幅提升镜像下载速度和成功率
**镜像源列表**
```json
{
"registry-mirrors": [
"https://docker.mirrors.ustc.edu.cn",
"https://hub-mirror.c.163.com",
"https://registry.docker-cn.com",
"https://dockerproxy.com",
"https://mirror.baidubce.com"
]
}
```
---
### 2. Dify镜像拉取 ✅
**拉取的镜像**共11个服务
```
✅ langgenius/dify-api:1.9.1
✅ langgenius/dify-web:1.9.1
✅ langgenius/dify-plugin-daemon:0.3.0-local
✅ langgenius/dify-sandbox:0.2.12
✅ postgres:15-alpine
✅ redis:6-alpine
✅ semitechnologies/weaviate:1.19.0
✅ nginx:latest
✅ ubuntu/squid:latest
```
**总下载大小**: ~2GB
**耗时**: 约15分钟得益于镜像加速
---
### 3. Dify服务启动 ✅
**运行的服务**
| 服务 | 状态 | 端口 | 说明 |
|------|------|------|------|
| nginx | ✅ Up | 80, 443 | 反向代理 |
| api | ✅ Up | 5001 | Dify API服务 |
| worker | ✅ Up | - | 后台任务处理 |
| worker_beat | ✅ Up | - | 定时任务调度 |
| web | ✅ Up | 3000 | Dify前端界面 |
| db | ✅ Healthy | 5432 | PostgreSQL |
| redis | ✅ Healthy | 6379 | 缓存服务 |
| weaviate | ✅ Up | - | 向量数据库RAG核心 |
| sandbox | ✅ Healthy | - | 代码执行沙箱 |
| plugin_daemon | ✅ Up | 5003 | 插件守护进程 |
| ssrf_proxy | ✅ Up | 3128 | SSRF防护 |
**访问地址**: http://localhost
---
### 4. Dify初始化配置 ✅
**管理员账号**
- 邮箱:`gofeng117@163.com`
- 用户名:`zhibo`
- 密码:`xilu881009`
**已创建应用**
- 应用名称:`AI Clinical Research`
- 应用类型:基础应用
- API Key`app-VZRn0vMXdmltEJkvatHVGv5j`
---
### 5. 后端环境变量配置 ✅
**文件**: `backend/.env`
**Dify配置**
```bash
# Dify
DIFY_API_URL=http://localhost/v1
DIFY_API_KEY=app-VZRn0vMXdmltEJkvatHVGv5j
```
**完整配置**
```bash
# Database
DATABASE_URL=postgresql://postgres:postgres123@localhost:5432/ai_clinical_research?schema=public
# Redis
REDIS_URL=redis://localhost:6379
# JWT
JWT_SECRET=your-secret-key-change-in-production
JWT_EXPIRES_IN=7d
# LLM API
DEEPSEEK_API_KEY=sk-7f8cc37a79fa4799860b38fc7ba2e150
DASHSCOPE_API_KEY=sk-75b4ff29a14a49e79667a331034f3298
# Dify
DIFY_API_URL=http://localhost/v1
DIFY_API_KEY=app-VZRn0vMXdmltEJkvatHVGv5j
# Server
PORT=3001
NODE_ENV=development
```
---
## 🎉 部署成功检查清单
- [x] Docker镜像加速器已配置
- [x] 所有镜像拉取完成(无报错)
- [x] `docker compose ps` 显示所有容器 "Up" 或 "Healthy"
- [x] 访问 http://localhost 可以打开Dify界面
- [x] 完成初始化,创建管理员账号
- [x] 获取Dify API Key
- [x] API Key已配置到后端 `.env`
---
## 📊 Dify架构说明
### 核心组件
**1. API层**
- `api`: 主API服务
- `worker`: 异步任务处理
- `worker_beat`: 定时任务调度
**2. 前端层**
- `web`: React前端应用
- `nginx`: 反向代理和静态文件服务
**3. 存储层**
- `db` (PostgreSQL): 结构化数据存储
- `redis`: 缓存和消息队列
- `weaviate`: 向量数据库RAG检索
**4. 安全层**
- `sandbox`: 代码执行隔离环境
- `ssrf_proxy`: SSRF攻击防护
- `plugin_daemon`: 插件安全管理
---
## 🔄 服务管理命令
### 启动服务
```bash
cd D:\MyCursor\dify\docker
docker compose up -d
```
### 停止服务
```bash
cd D:\MyCursor\dify\docker
docker compose down
```
### 查看状态
```bash
cd D:\MyCursor\dify\docker
docker compose ps
```
### 查看日志
```bash
cd D:\MyCursor\dify\docker
docker compose logs -f api
```
### 重启服务
```bash
cd D:\MyCursor\dify\docker
docker compose restart
```
---
## 🚀 下一步工作计划
### Day 19-20知识库管理功能
**后端开发**
1. 创建 `KnowledgeBase``Document` 数据库表
2. 封装Dify API客户端 (`DifyClient`)
3. 实现知识库CRUD API
4. 实现文档上传API
**前端开发**
1. 创建知识库管理页面
2. 实现知识库列表展示
3. 实现创建/删除知识库
4. 实现文档上传组件
**集成Dify**
1. 调用Dify API创建知识库
2. 调用Dify API上传文档
3. 文档向量化处理
---
## 📝 注意事项
### 1. 端口占用问题
**Dify占用的端口**
- 80: nginx HTTP
- 443: nginx HTTPS
- 5432: PostgreSQLDify自己的DB
- 6379: RedisDify自己的Redis
**与项目的端口冲突**
- 如果项目的PostgreSQL和Redis也在本地运行会产生端口冲突
- **解决方案**
- 方案A修改Dify的docker-compose.yaml映射到不同端口
- 方案B项目使用Docker容器中的数据库当前已采用
### 2. 数据持久化
Dify的数据卷
```
docker-db-data: PostgreSQL数据
docker-redis-data: Redis数据
docker-weaviate-data: Weaviate向量数据
```
**备份建议**
- 定期备份数据卷
- 重要知识库文档做好本地备份
### 3. 性能优化
**Weaviate内存占用**
- 默认占用较多内存建议8GB系统内存
- 如果内存不足可以在docker-compose.yaml中限制内存
**网络访问**
- 确保Docker网络正常
- 如需外网访问配置nginx反向代理
---
## 🐛 遇到的问题与解决
### 问题1镜像下载EOF错误
**症状**
```
failed to copy: httpReadSeeker: failed open: EOF
```
**原因**:网络不稳定,下载中断
**解决方案**
1. 配置Docker镜像加速器
2. 重试下载Docker会从断点继续
3. 最终成功拉取所有镜像
---
## 📈 项目进度总结
### 里程碑1MVP核心进度更新
**已完成**
- ✅ Day 4-5: 环境搭建前端、后端、数据库、Redis
- ✅ Day 6: 前端基础架构
- ✅ Day 7: 前端完整布局
- ✅ Day 8-9: 项目管理API
- ✅ Day 10-11: 智能体配置系统
- ✅ Day 12-13: LLM适配器与对话系统
- ✅ Day 14-17: 前端对话界面
-**Day 18: Dify平台部署** ← 当前完成
**进行中**
- 🔄 Day 19-24: 知识库系统开发
**整体进度**:约 **75%**
---
## 🎓 技术收获
### 1. Docker编排
- 熟悉了Docker Compose多服务编排
- 理解了容器间网络通信
- 掌握了健康检查配置
### 2. Dify架构
- 了解了完整的AI应用架构
- 学习了向量数据库的应用场景
- 理解了RAG系统的实现原理
### 3. 镜像加速优化
- 解决了国内Docker镜像下载慢的问题
- 掌握了网络问题排查方法
---
## 📚 相关文档
- [Dify官方文档](https://docs.dify.ai)
- [Weaviate文档](https://weaviate.io/developers/weaviate)
- [Docker Compose文档](https://docs.docker.com/compose/)
---
**总结**: Day 18的Dify部署工作圆满完成虽然遇到了网络问题但通过配置镜像加速器和多次重试最终成功部署了所有服务。为接下来的知识库功能开发打下了坚实的基础💪

View File

@@ -270,3 +270,5 @@ Dify完整部署后的资源占用
**更新时间**: 2025-10-10 16:00
**下次更新**: Dify部署成功后

View File

@@ -244,3 +244,5 @@ docs: optimize README navigation links
现在项目拥有清晰的4级README导航体系开发者可以轻松地在不同层级的文档间跳转。

2
frontend/.gitignore vendored
View File

@@ -27,3 +27,5 @@ dist-ssr
.env.local
.env.production

View File

@@ -12,3 +12,5 @@
</body>
</html>

View File

@@ -39,3 +39,5 @@
"vite": "^6.0.7"
}
}

View File

@@ -5,3 +5,5 @@ export default {
},
}

View File

@@ -21,3 +21,5 @@ export default {
getApiInfo,
}

View File

@@ -78,3 +78,5 @@
}
}

View File

@@ -177,3 +177,5 @@ const MessageInput: React.FC<MessageInputProps> = ({
export default MessageInput;

View File

@@ -50,3 +50,5 @@
}
}

View File

@@ -21,3 +21,5 @@ body {
overflow: hidden;
}

View File

@@ -16,3 +16,5 @@ ReactDOM.createRoot(document.getElementById('root')!).render(
</React.StrictMode>,
)

View File

@@ -87,3 +87,5 @@ export interface ApiResponse<T = any> {
message?: string
}

View File

@@ -9,3 +9,5 @@ interface ImportMeta {
readonly env: ImportMetaEnv
}

View File

@@ -13,3 +13,5 @@ export default {
},
}

View File

@@ -30,3 +30,5 @@
"references": [{ "path": "./tsconfig.node.json" }]
}

View File

@@ -10,3 +10,5 @@
"include": ["vite.config.ts"]
}

View File

@@ -21,3 +21,5 @@ export default defineConfig({
},
})

View File

@@ -11,3 +11,5 @@ echo.
call npm run dev
pause

View File

@@ -53,3 +53,5 @@ echo.
echo 按任意键关闭此窗口...
pause >nul

View File

@@ -54,3 +54,5 @@ echo 现在可以重新启动服务了
echo.
pause

View File

@@ -25,3 +25,5 @@ echo.
echo 按任意键退出...
pause >nul

View File

@@ -237,3 +237,5 @@ npm start
**🎉 祝开发顺利!**

View File

@@ -855,3 +855,5 @@ Dify擅长的RAG知识库检索
**文档版本v1.0**
**更新时间2025-10-10**

View File

@@ -702,3 +702,5 @@ docker-compose up -d
**文档版本v1.0**
**更新时间2025-10-10**

View File

@@ -244,3 +244,5 @@ docker ps
**✅ 按照以上步骤操作,问题应该可以解决!**

View File

@@ -406,3 +406,5 @@ npm run dev
**最后更新2025-10-10**
**作者AI技术顾问**

View File

@@ -48,3 +48,5 @@ echo 如需停止服务,请运行: 停止所有服务.bat
echo.
pause

View File

@@ -87,3 +87,5 @@ echo 3. 查看解决方案-前端获取数据失败.md
echo.
pause

View File

@@ -197,3 +197,5 @@ npx prisma studio
3. 访问 http://localhost:3001/health 的响应
4. `docker ps` 的输出

View File

@@ -566,3 +566,5 @@ GET /api/users/me/quotas // 获取用户配额信息
**文档版本v1.0**
**更新时间2025-10-10**

View File

@@ -898,3 +898,5 @@ docker --version
有任何问题随时告诉我!🚀

View File

@@ -270,3 +270,5 @@ http://localhost:3000
这通常能解决90%的问题!

View File

@@ -113,3 +113,5 @@ echo 3. 运行: cd backend ^&^& npx prisma studio 检查数据库
echo.
pause

View File

@@ -107,3 +107,5 @@ Registry Mirrors:
**完成配置后,请在终端告诉我,我们将继续下一步!**

View File

@@ -19,3 +19,5 @@ call "%~dp0一键启动.bat"
echo.
echo 重启完成!