8.9 KiB
8.9 KiB
✅ API 配置功能 - 完成清单
📦 已完成的功能模块
1. 后端实现 ✅
工作流管理服务
- ✅
backend/services/comfyui_workflow_manager.py(173行)- 列出所有工作流
- 上传工作流(带验证)
- 删除工作流(保护默认文件)
- 加载工作流
- 提示词替换功能
API 端点 (6个)
- ✅
GET /api/api-config/comfyui/workflows- 获取工作流列表 - ✅
POST /api/api-config/comfyui/workflows/upload- 上传工作流 - ✅
DELETE /api/api-config/comfyui/workflows/{filename}- 删除工作流 - ✅
GET /api/api-config/comfyui/workflows/{filename}- 获取工作流详情 - ✅
POST /api/api-config/test-comfyui-connection- 测试 ComfyUI 连接 - ✅
POST /api/api-config/test-cloud-connection- 测试云端 API 连接
默认工作流
- ✅
backend/data/comfyui_workflows/default_txt2img.json- 标准 ComfyUI API 格式
- 7个节点(KSampler、CheckpointLoader、EmptyLatentImage、CLIPTextEncode x2、VAEDecode、SaveImage)
- 包含
_meta元数据 - 中文节点标题
2. 前端实现 ✅
核心组件
- ✅
ComfyUIWorkflowManager.jsx(179行)- 工作流列表显示
- 上传功能
- 删除功能
- 刷新功能
- 空状态提示
- 使用说明
主配置页面
- ✅
ApiConfig.jsx(完整重构)- 模式切换卡片(本地/云端)
- 本地 ComfyUI 配置表单
- 云端 API 配置表单
- 嵌套路径更新逻辑
- 修改跟踪系统
- 测试连接功能
样式系统
- ✅
ApiConfig.css(扩展 300+ 行)- 模式选择器样式
- Toggle Switch 开关
- 工作流管理器样式
- 响应式设计
- 防横向滚动
3. 数据结构 ✅
imageModel 新结构
{
mode: 'local', // 'local' | 'cloud'
local: {
apiUrl: 'http://comfyui:8188',
websocketEnabled: true,
queueTimeout: 300,
defaultWorkflow: 'default_txt2img.json'
},
cloud: {
provider: 'dall-e',
apiUrl: 'https://api.openai.com/v1/images/generations',
apiKey: '',
model: 'dall-e-3'
}
}
4. 响应式设计 ✅
SillyTavern 风格布局
- ✅ 无页面级滚动条 (
overflow: hidden) - ✅ 三栏独立滚动 (
overflow-y: auto) - ✅ 禁止横向滚动 (
overflow-x: hidden) - ✅ 视口高度布局 (
100vh) - ✅ 媒体查询适配 (<768px)
5. 交互逻辑 ✅
核心函数
- ✅
handleChange(e, path)- 支持嵌套路径更新 - ✅
handleImageModeChange(mode)- 模式切换 - ✅
testComfyUIConnection(apiUrl)- 测试本地连接 - ✅
testCloudConnection(config)- 测试云端连接 - ✅
handleOpenSaveModal()- 打开保存对话框 - ✅
handleSave()- 保存配置
修改跟踪
- ✅ 自动标记已修改的配置
- ✅ 保存按钮显示修改数量
- ✅ 标签页红点提示
📁 文件清单
新增文件 (7个)
- ✅
backend/data/comfyui_workflows/default_txt2img.json - ✅
backend/services/comfyui_workflow_manager.py - ✅
frontend/src/components/SideBarLeft/tabs/ApiConfig/ComfyUIWorkflowManager.jsx - ✅
COMFYUI_WORKFLOW_IMPLEMENTATION.md - ✅
API_IMAGE_CONFIG_COMPLETE.md - ✅
COMFYUI_API_CONFIG_GUIDE.md - ✅
API_CONFIG_FINAL_SUMMARY.md(本文件)
修改文件 (3个)
- ✅
backend/api/routes/apiConfigRoute.py(+148行) - ✅
frontend/src/components/SideBarLeft/tabs/ApiConfig/ApiConfig.jsx(重构) - ✅
frontend/src/components/SideBarLeft/tabs/ApiConfig/ApiConfig.css(+300行)
🎯 功能特性
工作流管理
- ✅ 上传自定义工作流 JSON
- ✅ 删除工作流(保护默认文件)
- ✅ 列表显示(文件名、节点数、大小)
- ✅ 实时刷新
- ✅ 默认工作流标记
配置管理
- ✅ 本地/云端模式切换
- ✅ 完整的本地配置表单
- ✅ 完整的云端配置表单
- ✅ 动态模型选择
- ✅ WebSocket 开关
- ✅ 超时设置
连接测试
- ✅ ComfyUI 连接测试
- 检查连通性
- 获取 VRAM 信息
- 获取设备信息
- ✅ 云端 API 连接测试
- DALL-E 验证
- Stability AI 验证
- 模型可用性检查
安全性
- ✅ API Key 加密存储(Fernet)
- ✅ 路径遍历攻击防护
- ✅ JSON 格式验证
- ✅ 工作流有效性检查
- ✅ 文件备份机制
🔧 技术栈
后端
- FastAPI
- Python requests
- OpenAI SDK
- cryptography (Fernet 加密)
- JSON 文件存储
前端
- React 18
- Zustand (状态管理)
- CSS3 (Grid + Flexbox)
- Fetch API
- FormData (文件上传)
📊 代码统计
| 模块 | 文件数 | 代码行数 |
|---|---|---|
| 后端服务 | 1 | 173 |
| 后端路由 | 1 | +148 |
| 前端组件 | 1 | 179 |
| 前端主页面 | 1 | ~800 (重构) |
| 样式文件 | 1 | +300 |
| 工作流模板 | 1 | 108 |
| 文档 | 4 | ~1500 |
| 总计 | 10 | ~3200+ |
✅ 测试清单
后端测试
# 1. 测试列出工作流
curl http://localhost:8000/api/api-config/comfyui/workflows
# 2. 测试上传工作流
curl -X POST http://localhost:8000/api/api-config/comfyui/workflows/upload \
-F "file=@my_workflow.json"
# 3. 测试删除工作流
curl -X DELETE http://localhost:8000/api/api-config/comfyui/workflows/my_workflow.json
# 4. 测试获取工作流详情
curl http://localhost:8000/api/api-config/comfyui/workflows/default_txt2img.json
# 5. 测试 ComfyUI 连接
curl -X POST http://localhost:8000/api/api-config/test-comfyui-connection \
-H "Content-Type: application/json" \
-d '{"apiUrl": "http://localhost:8188"}'
# 6. 测试云端 API 连接
curl -X POST http://localhost:8000/api/api-config/test-cloud-connection \
-H "Content-Type: application/json" \
-d '{"provider": "dall-e", "apiKey": "sk-xxx", "model": "dall-e-3"}'
前端测试
- 打开 API 配置页面
- 切换到"🎨 生图"标签
- 看到模式切换卡片
- 点击"本地 ComfyUI" → 显示本地配置
- 点击"在线 API" → 显示云端配置
- 填写配置并测试连接
- 上传工作流文件
- 查看工作流列表
- 删除工作流(非默认)
- 保存配置
- 重新加载配置
- 测试响应式布局
🚀 部署说明
Docker 环境
# docker-compose.yml
version: '3.8'
services:
llm-workflow-engine:
build: ./backend
ports:
- "23338:8000"
volumes:
- ./backend/data:/app/data
networks:
- ai-network
comfyui:
image: ghcr.io/comfyanonymous/comfyui:latest
ports:
- "8188:8188"
volumes:
- ./comfyui/models:/app/models
- ./comfyui/output:/app/output
networks:
- ai-network
command: --listen 0.0.0.0 --port 8188
networks:
ai-network:
driver: bridge
配置示例:
- API 地址:
http://comfyui:8188 - 工作流目录:
backend/data/comfyui_workflows/
本地环境
# 1. 安装依赖
cd backend
pip install -r requirements.txt
# 2. 启动后端
uvicorn main:app --reload --port 8000
# 3. 启动前端
cd frontend
npm run dev
# 4. 启动 ComfyUI
python comfyui/main.py --listen 0.0.0.0 --port 8188
配置示例:
- API 地址:
http://localhost:8188
📝 使用流程
首次配置
-
选择模式
- 点击"🎨 生图"标签
- 选择"🖥️ 本地 ComfyUI"或"☁️ 在线 API"
-
填写配置
- 本地:填写 API 地址、超时等
- 云端:填写 API Key、选择模型
-
测试连接
- 点击"测试连接"按钮
- 确认连接成功
-
管理工作流(仅本地模式)
- 查看默认工作流
- (可选)上传自定义工作流
-
保存配置
- 点击"保存配置"
- 勾选"🎨 生图"
- 确认保存
运行时生图
用户输入:"画一只猫"
↓
聊天接口检测生图意图
↓
读取 imageModel 配置
↓
调用 ImageGenerator.generate_image()
↓
如果 mode === 'local':
1. 加载工作流 JSON
2. 替换提示词为"画一只猫"
3. 发送到 ComfyUI (/prompt)
4. 等待完成 (/history/{prompt_id})
5. 返回图片 URL (/view?filename=...)
否则:
1. 调用 DALL-E API
2. 返回图片 URL
↓
在聊天界面显示图片
🎊 总结
已完成 ✅
- ✅ 完整的工作流管理系统
- ✅ 本地/云端双模式支持
- ✅ 标准的 ComfyUI API 格式
- ✅ 连接测试功能
- ✅ 响应式 UI 设计
- ✅ SillyTavern 风格布局
- ✅ 安全性保障(加密、验证)
- ✅ 完善的文档
待完成 ⚠️
- ⚠️ 生图服务实现 (
image_generator.py) - ⚠️ 集成到聊天接口
- ⚠️ Store 保存逻辑更新(处理嵌套结构)
下一步建议
- 测试前端 UI 和后端 API
- 创建
image_generator.py服务 - 集成到聊天流程
- 添加进度显示和错误处理
当前状态: 🟢 API 配置功能完成,等待生图服务集成
文档版本: v1.0.0
最后更新: 2026-04-28