# 🧪 API 配置功能测试指南 ## 📋 测试前准备 ### **1. 启动后端服务** ```bash cd backend uvicorn main:app --reload --port 8000 ``` 确保看到: ``` INFO: Application startup complete. INFO: Uvicorn running on http://127.0.0.1:8000 ``` --- ### **2. (可选)启动 ComfyUI** 如果要测试 ComfyUI 连接: ```bash # 本地运行 python comfyui/main.py --listen 0.0.0.0 --port 8188 # 或 Docker docker-compose up -d comfyui ``` --- ## 🚀 运行测试 ### **方法 1: 使用 Python 脚本(推荐)** ```bash # 在项目根目录运行 python test_api_config.py ``` **预期输出**: ``` ============================================================ ComfyUI API 配置测试 ============================================================ ============================================================ 测试 1: 列出工作流 ============================================================ ✅ 成功获取 1 个工作流 📄 default_txt2img.json 节点数: 7, 大小: 1234 bytes ... ============================================================ 测试总结 ============================================================ ✅ 通过 - 列出工作流 ✅ 通过 - 获取工作流详情 ✅ 通过 - 上传工作流 ✅ 通过 - 删除工作流 ✅ 通过 - 测试 ComfyUI 连接 ✅ 通过 - 测试云端 API 连接 总计: 6/6 通过 🎉 所有测试通过! ``` --- ### **方法 2: 使用 cURL 手动测试** #### **测试 1: 列出工作流** ```bash curl http://localhost:8000/api/api-config/comfyui/workflows | jq ``` **预期响应**: ```json [ { "filename": "default_txt2img.json", "name": "default_txt2img", "nodes_count": 7, "size": 1234 } ] ``` --- #### **测试 2: 获取工作流详情** ```bash curl http://localhost:8000/api/api-config/comfyui/workflows/default_txt2img.json | jq ``` **预期响应**: ```json { "3": { "inputs": {...}, "class_type": "KSampler", "_meta": {"title": "K采样器"} }, ... } ``` --- #### **测试 3: 上传工作流** 创建一个测试文件 `test_workflow.json`: ```bash cat > test_workflow.json << 'EOF' { "3": { "inputs": { "seed": 42, "steps": 20, "cfg": 8, "sampler_name": "euler", "scheduler": "normal", "denoise": 1, "model": ["4", 0], "positive": ["6", 0], "negative": ["7", 0], "latent_image": ["5", 0] }, "class_type": "KSampler" }, "4": { "inputs": {"ckpt_name": "test.safetensors"}, "class_type": "CheckpointLoaderSimple" }, "5": { "inputs": {"width": 512, "height": 512, "batch_size": 1}, "class_type": "EmptyLatentImage" }, "6": { "inputs": {"text": "test", "clip": ["4", 1]}, "class_type": "CLIPTextEncode" }, "7": { "inputs": {"text": "bad", "clip": ["4", 1]}, "class_type": "CLIPTextEncode" }, "8": { "inputs": {"samples": ["3", 0], "vae": ["4", 2]}, "class_type": "VAEDecode" }, "9": { "inputs": {"images": ["8", 0], "filename_prefix": "Test"}, "class_type": "SaveImage" } } EOF ``` 上传: ```bash curl -X POST http://localhost:8000/api/api-config/comfyui/workflows/upload \ -F "file=@test_workflow.json" | jq ``` **预期响应**: ```json { "message": "Workflow uploaded successfully", "filename": "test_workflow.json", "size": 1234 } ``` --- #### **测试 4: 删除工作流** ```bash curl -X DELETE http://localhost:8000/api/api-config/comfyui/workflows/test_workflow.json | jq ``` **预期响应**: ```json { "message": "Workflow 'test_workflow.json' deleted successfully" } ``` --- #### **测试 5: 测试 ComfyUI 连接** ```bash curl -X POST http://localhost:8000/api/api-config/test-comfyui-connection \ -H "Content-Type: application/json" \ -d '{"apiUrl": "http://localhost:8188"}' | jq ``` **如果 ComfyUI 正在运行**: ```json { "success": true, "message": "连接成功", "stats": { "vram_total": 25769803776, "vram_free": 24696061952, "torch_version": "2.1.0+cu121", "device": "cuda" } } ``` **如果 ComfyUI 未运行**: ```json { "success": false, "message": "无法连接到 ComfyUI,请检查地址和端口" } ``` --- #### **测试 6: 测试云端 API 连接** ```bash curl -X POST http://localhost:8000/api/api-config/test-cloud-connection \ -H "Content-Type: application/json" \ -d '{ "provider": "dall-e", "apiKey": "sk-your-api-key-here", "model": "dall-e-3" }' | jq ``` **预期响应**(如果 API Key 有效): ```json { "success": true, "message": "连接成功,模型 dall-e-3 可用" } ``` --- ## ✅ 测试检查清单 ### **后端 API** - [ ] 列出工作流返回正确的列表 - [ ] 获取工作流详情返回完整的 JSON - [ ] 上传工作流成功保存文件 - [ ] 上传的工作流可以通过列表看到 - [ ] 删除工作流成功移除文件 - [ ] 默认工作流不可删除(返回 403) - [ ] ComfyUI 连接测试正确检测状态 - [ ] 云端 API 连接测试验证 Key ### **前端 UI** - [ ] 可以切换到"🎨 生图"标签 - [ ] 模式切换卡片正常显示 - [ ] 点击"本地 ComfyUI"显示本地配置 - [ ] 点击"在线 API"显示云端配置 - [ ] 表单输入正常工作 - [ ] 工作流管理器显示默认工作流 - [ ] 可以上传工作流文件 - [ ] 可以删除工作流(非默认) - [ ] 测试连接按钮正常工作 - [ ] 保存配置功能正常 ### **响应式设计** - [ ] 大屏幕(>768px)双列布局 - [ ] 小屏幕(<768px)单列布局 - [ ] 无页面级滚动条 - [ ] 侧边栏可独立滚动 - [ ] 无横向滚动 --- ## 🐛 常见问题 ### **Q1: 测试脚本提示"Connection refused"** **原因**:后端服务未启动 **解决**: ```bash cd backend uvicorn main:app --reload --port 8000 ``` --- ### **Q2: 上传工作流提示"Invalid ComfyUI workflow"** **原因**:JSON 格式不正确或缺少必要节点 **解决**: - 确保包含 `KSampler` 节点 - 使用 ComfyUI 的 "Save (API Format)" 导出 - 检查 JSON 语法是否正确 --- ### **Q3: 删除工作流提示"Cannot delete default workflow"** **这是正常的**!默认工作流受保护,不可删除。 要测试删除功能,请先上传一个自定义工作流,然后删除它。 --- ### **Q4: ComfyUI 连接测试失败** **可能原因**: 1. ComfyUI 未启动 2. 地址或端口错误 3. Docker 网络问题 **解决**: ```bash # 检查 ComfyUI 是否运行 curl http://localhost:8188/system_stats # Docker 环境下 docker ps | grep comfyui docker logs comfyui ``` --- ## 📊 测试结果解读 ### **全部通过** ✅ ``` 总计: 6/6 通过 🎉 所有测试通过! ``` → API 配置功能完全正常,可以开始使用 ### **部分失败** ⚠️ ``` 总计: 4/6 通过 ⚠️ 2 个测试失败,请检查日志 ``` → 查看失败的测试项,根据错误信息排查 ### **全部失败** ❌ ``` 总计: 0/6 通过 ``` → 检查后端服务是否正常运行 → 检查端口是否正确(8000) → 查看后端日志 --- ## 🎯 下一步 测试通过后,你可以: 1. **启动前端** ```bash cd frontend npm run dev ``` 2. **访问应用** - 打开浏览器访问 `http://localhost:5173` - 进入 API 配置页面 - 配置你的生图服务 3. **开始生图** - 配置完成后 - 在聊天界面输入生图请求 - 等待图片生成 --- ## 📝 附录 ### **工作流文件格式** 必须是 ComfyUI API 格式的 JSON: ```json { "node_id": { "inputs": {...}, "class_type": "NodeType", "_meta": {"title": "Display Name"} } } ``` ### **必需的节点类型** - `KSampler` - 采样器(必需) - `CheckpointLoaderSimple` - 模型加载器 - `EmptyLatentImage` - 潜变量图像 - `CLIPTextEncode` - 文本编码器(正向和负向) - `VAEDecode` - VAE 解码器 - `SaveImage` - 保存图像 ### **API 端点列表** | 方法 | 路径 | 说明 | |------|------|------| | 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 | --- **祝测试顺利!** 🎉