mixvideo-v2/TODO.md

534 lines
14 KiB
Markdown

# ComfyUI SDK 完全重写集成计划
## 📋 项目概述
**目标**: 完全基于 `cargos/comfyui-sdk` 重新实现 MixVideo 项目的 ComfyUI 集成,构建现代化、高性能的 AI 工作流管理系统。
**核心优势**:
- 🚀 充分利用 SDK 的所有高级功能
- 🔄 WebSocket 实时通信和进度跟踪
- 📝 强大的模板系统和参数验证
- 🛡️ 类型安全和错误处理
- ⚡ 连接池和性能优化
- 🎯 统一的架构设计
**预计工期**: 3-4 周
**风险等级**: 中等 (需要充分测试)
---
## 🏗️ 架构设计
### 新架构概览
```
Frontend (React + TypeScript)
↓ Tauri Invoke
Backend (Rust + ComfyUI SDK)
├── Presentation Layer (Commands)
├── Business Layer (Services)
├── Data Layer (Models + Database)
└── Infrastructure Layer (ComfyUI SDK)
```
### 核心组件
1. **ComfyUIManager**: 统一的 SDK 管理器
2. **TemplateEngine**: 工作流模板引擎
3. **ExecutionEngine**: 工作流执行引擎
4. **RealtimeMonitor**: 实时状态监控
5. **CacheManager**: 智能缓存管理
---
## 📅 详细开发计划
## 第一阶段: 基础架构重构 (第1周)
### 🎯 目标
建立全新的基于 SDK 的基础架构,替换现有的传统实现。
### 📋 任务清单
#### 1.1 数据模型重新设计 (2天)
- [ ] **删除旧模型**: 移除 `apps/desktop/src-tauri/src/data/models/comfyui.rs`
- [ ] **创建新模型**: 基于 SDK 类型创建统一数据模型
- [ ] `WorkflowModel`: 工作流数据模型
- [ ] `TemplateModel`: 模板数据模型
- [ ] `ExecutionModel`: 执行记录模型
- [ ] `QueueModel`: 队列状态模型
- [ ] **数据库迁移**: 设计新的数据库表结构
- [ ] `comfyui_workflows`
- [ ] `comfyui_templates`
- [ ] `comfyui_executions`
- [ ] `comfyui_queue_history`
#### 1.2 核心服务重构 (3天)
- [ ] **删除旧服务**: 移除现有的 ComfyUI 服务实现
- [ ] 删除 `comfyui_service.rs`
- [ ] 删除 `comfyui_sdk_service.rs`
- [ ] **创建 ComfyUIManager**: 统一的 SDK 管理器
- [ ] 连接管理和健康检查
- [ ] 配置管理和验证
- [ ] 错误处理和重试机制
- [ ] **创建 TemplateEngine**: 模板管理引擎
- [ ] 模板加载和验证
- [ ] 参数解析和验证
- [ ] 模板实例化
- [ ] **创建 ExecutionEngine**: 执行引擎
- [ ] 工作流执行管理
- [ ] 队列管理
- [ ] 结果处理
#### 1.3 配置系统重构 (1天)
- [ ] **统一配置结构**: 基于 SDK 配置重新设计
- [ ] **配置验证**: 添加配置有效性检查
- [ ] **环境适配**: 支持开发/生产环境配置
#### 1.4 错误处理系统 (1天)
- [ ] **统一错误类型**: 基于 SDK 错误类型设计
- [ ] **错误映射**: SDK 错误到应用错误的映射
- [ ] **错误恢复**: 自动重试和降级策略
### 🧪 测试要求
- [ ] 单元测试覆盖率 > 80%
- [ ] 集成测试验证基础功能
- [ ] 性能基准测试
---
## 第二阶段: 命令层重写 (第2周)
### 🎯 目标
重新实现所有 Tauri 命令,提供完整的前端 API 接口。
### 📋 任务清单
#### 2.1 基础命令重写 (2天)
- [ ] **连接管理命令**
- [ ] `comfyui_connect`: 连接到 ComfyUI 服务
- [ ] `comfyui_disconnect`: 断开连接
- [ ] `comfyui_health_check`: 健康检查
- [ ] `comfyui_get_system_info`: 获取系统信息
#### 2.2 工作流管理命令 (2天)
- [ ] **工作流 CRUD 命令**
- [ ] `comfyui_list_workflows`: 获取工作流列表
- [ ] `comfyui_get_workflow`: 获取单个工作流
- [ ] `comfyui_create_workflow`: 创建工作流
- [ ] `comfyui_update_workflow`: 更新工作流
- [ ] `comfyui_delete_workflow`: 删除工作流
#### 2.3 模板管理命令 (2天)
- [ ] **模板系统命令**
- [ ] `comfyui_list_templates`: 获取模板列表
- [ ] `comfyui_get_template`: 获取模板详情
- [ ] `comfyui_validate_template`: 验证模板
- [ ] `comfyui_create_template_instance`: 创建模板实例
#### 2.4 执行管理命令 (1天)
- [ ] **执行控制命令**
- [ ] `comfyui_execute_workflow`: 执行工作流
- [ ] `comfyui_execute_template`: 执行模板
- [ ] `comfyui_cancel_execution`: 取消执行
- [ ] `comfyui_get_execution_status`: 获取执行状态
### 🧪 测试要求
- [ ] 每个命令的单元测试
- [ ] 命令集成测试
- [ ] 错误场景测试
---
## 第三阶段: 实时通信与高级功能 (第3周)
### 🎯 目标
实现 WebSocket 实时通信和高级功能,提供完整的用户体验。
### 📋 任务清单
#### 3.1 WebSocket 实时通信 (3天)
- [ ] **实时监控服务**
- [ ] WebSocket 连接管理
- [ ] 事件订阅和分发
- [ ] 进度更新推送
- [ ] **前端实时更新**
- [ ] 实时状态显示
- [ ] 进度条更新
- [ ] 错误实时提醒
#### 3.2 队列管理系统 (2天)
- [ ] **队列监控**
- [ ] 队列状态实时更新
- [ ] 任务优先级管理
- [ ] 队列统计信息
- [ ] **批量操作**
- [ ] 批量提交任务
- [ ] 批量取消任务
- [ ] 批量状态查询
#### 3.3 缓存和性能优化 (2天)
- [ ] **智能缓存**
- [ ] 工作流结果缓存
- [ ] 模板缓存
- [ ] 连接池管理
- [ ] **性能监控**
- [ ] 执行时间统计
- [ ] 资源使用监控
- [ ] 性能指标收集
### 🧪 测试要求
- [ ] WebSocket 连接稳定性测试
- [ ] 高并发场景测试
- [ ] 性能压力测试
---
## 第四阶段: 前端重构与UI优化 (第4周)
### 🎯 目标
重构前端代码,提供现代化的用户界面和交互体验。
### 📋 任务清单
#### 4.1 类型定义更新 (1天)
- [ ] **TypeScript 类型重写**
- [ ] 基于新后端 API 更新类型定义
- [ ] 添加 SDK 特有的类型
- [ ] 类型安全验证
#### 4.2 服务层重构 (2天)
- [ ] **前端服务重写**
- [ ] 重写 `ComfyuiService`
- [ ] 添加实时通信支持
- [ ] 错误处理优化
- [ ] **状态管理优化**
- [ ] Zustand store 重构
- [ ] 实时状态同步
- [ ] 缓存策略实现
#### 4.3 UI 组件优化 (3天)
- [ ] **核心组件重构**
- [ ] 工作流管理界面
- [ ] 模板选择器
- [ ] 执行监控面板
- [ ] 实时进度显示
- [ ] **用户体验优化**
- [ ] 加载状态优化
- [ ] 错误提示改进
- [ ] 响应式设计完善
#### 4.4 高级功能界面 (1天)
- [ ] **新功能界面**
- [ ] 模板编辑器
- [ ] 批量操作界面
- [ ] 性能监控面板
- [ ] 队列管理界面
### 🧪 测试要求
- [ ] 组件单元测试
- [ ] E2E 测试覆盖
- [ ] 用户体验测试
---
## 🗂️ 文件结构规划
### 后端文件结构
```
apps/desktop/src-tauri/src/
├── business/
│ ├── services/
│ │ ├── comfyui_manager.rs # 核心管理器
│ │ ├── template_engine.rs # 模板引擎
│ │ ├── execution_engine.rs # 执行引擎
│ │ └── realtime_monitor.rs # 实时监控
│ └── models/
│ └── comfyui/ # 新的数据模型
├── data/
│ ├── repositories/
│ │ └── comfyui_repository.rs # 数据访问层
│ └── migrations/
│ └── comfyui_tables.sql # 数据库迁移
├── presentation/
│ └── commands/
│ └── comfyui_commands.rs # 重写的命令
└── infrastructure/
└── comfyui/ # SDK 集成层
```
### 前端文件结构
```
apps/desktop/src/
├── services/
│ └── comfyuiService.ts # 重写的服务
├── types/
│ └── comfyui.ts # 更新的类型定义
├── components/
│ ├── ComfyUI/ # ComfyUI 相关组件
│ │ ├── WorkflowManager.tsx
│ │ ├── TemplateSelector.tsx
│ │ ├── ExecutionMonitor.tsx
│ │ └── RealtimeProgress.tsx
│ └── common/ # 通用组件
├── pages/
│ ├── ComfyUIManagement.tsx # 重构的管理页面
│ └── ComfyUIWorkflowTest.tsx # 重构的测试页面
└── store/
└── comfyuiStore.ts # 重构的状态管理
```
---
## ⚠️ 风险评估与应对策略
### 高风险项
1. **数据迁移风险**
- 风险: 现有数据丢失或损坏
- 应对: 完整的数据备份和迁移脚本测试
2. **功能兼容性风险**
- 风险: 新实现与现有功能不兼容
- 应对: 详细的功能对比测试
3. **性能回退风险**
- 风险: 新实现性能不如旧版本
- 应对: 性能基准测试和优化
### 中等风险项
1. **开发周期延长**
- 风险: 复杂度超出预期
- 应对: 分阶段交付,及时调整计划
2. **用户体验变化**
- 风险: 用户不适应新界面
- 应对: 渐进式界面更新,保留熟悉元素
### 应对措施
- [ ] 每周进行风险评估
- [ ] 建立回滚机制
- [ ] 充分的测试覆盖
- [ ] 用户反馈收集
---
## 📊 成功指标
### 技术指标
- [ ] 代码覆盖率 > 85%
- [ ] API 响应时间 < 200ms
- [ ] WebSocket 连接稳定性 > 99%
- [ ] 内存使用优化 > 20%
### 功能指标
- [ ] 支持所有现有功能
- [ ] 新增实时监控功能
- [ ] 新增模板管理功能
- [ ] 新增批量操作功能
### 用户体验指标
- [ ] 界面响应速度提升 > 30%
- [ ] 错误率降低 > 50%
- [ ] 用户操作步骤减少 > 20%
---
## 🚀 开始执行
### 立即行动项
1. [ ] 确认开发计划和时间安排
2. [ ] 备份现有代码和数据
3. [ ] 创建开发分支 `feature/comfyui-sdk-rewrite`
4. [ ] 开始第一阶段开发
### 每日检查项
- [ ] 代码提交和备份
- [ ] 测试执行和结果记录
- [ ] 进度更新和风险评估
- [ ] 团队沟通和问题解决
---
## 📝 实施细节补充
### 关键技术决策
#### 1. 数据库设计
```sql
-- 工作流表
CREATE TABLE comfyui_workflows (
id TEXT PRIMARY KEY,
name TEXT NOT NULL,
description TEXT,
workflow_data TEXT NOT NULL, -- JSON
version TEXT DEFAULT '1.0',
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP
);
-- 模板表
CREATE TABLE comfyui_templates (
id TEXT PRIMARY KEY,
name TEXT NOT NULL,
category TEXT,
description TEXT,
template_data TEXT NOT NULL, -- JSON
parameter_schema TEXT NOT NULL, -- JSON
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
);
-- 执行记录表
CREATE TABLE comfyui_executions (
id TEXT PRIMARY KEY,
workflow_id TEXT,
template_id TEXT,
prompt_id TEXT,
status TEXT NOT NULL, -- pending, running, completed, failed
parameters TEXT, -- JSON
results TEXT, -- JSON
error_message TEXT,
execution_time INTEGER, -- milliseconds
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
completed_at DATETIME
);
```
#### 2. 核心服务接口设计
```rust
// ComfyUIManager 核心接口
pub trait ComfyUIManagerTrait {
async fn connect(&mut self) -> Result<()>;
async fn disconnect(&mut self) -> Result<()>;
async fn is_connected(&self) -> bool;
async fn get_system_info(&self) -> Result<SystemInfo>;
async fn health_check(&self) -> Result<HealthStatus>;
}
// TemplateEngine 接口
pub trait TemplateEngineTrait {
async fn load_template(&self, id: &str) -> Result<WorkflowTemplate>;
async fn validate_parameters(&self, template_id: &str, params: &ParameterValues) -> Result<ValidationResult>;
async fn create_instance(&self, template_id: &str, params: ParameterValues) -> Result<WorkflowInstance>;
}
// ExecutionEngine 接口
pub trait ExecutionEngineTrait {
async fn execute_workflow(&self, workflow: &WorkflowInstance) -> Result<ExecutionResult>;
async fn execute_template(&self, template_id: &str, params: ParameterValues) -> Result<ExecutionResult>;
async fn cancel_execution(&self, execution_id: &str) -> Result<()>;
async fn get_execution_status(&self, execution_id: &str) -> Result<ExecutionStatus>;
}
```
#### 3. 错误处理策略
```rust
#[derive(Debug, thiserror::Error)]
pub enum ComfyUIError {
#[error("Connection error: {0}")]
Connection(String),
#[error("Template error: {0}")]
Template(String),
#[error("Execution error: {0}")]
Execution(String),
#[error("Validation error: {0}")]
Validation(String),
#[error("SDK error: {0}")]
Sdk(#[from] comfyui_sdk::error::ComfyUIError),
}
```
### 开发环境准备
#### 必需工具
- [ ] Rust 1.70+
- [ ] Node.js 18+
- [ ] PNPM 8+
- [ ] SQLite 3
- [ ] ComfyUI 服务器 (用于测试)
#### 开发配置
```toml
# Cargo.toml 依赖更新
[dependencies]
comfyui-sdk = { path = "../../../cargos/comfyui-sdk", features = ["websocket", "templates"] }
tokio = { version = "1.0", features = ["full"] }
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
anyhow = "1.0"
thiserror = "1.0"
tracing = "0.1"
sqlx = { version = "0.7", features = ["runtime-tokio-rustls", "sqlite", "chrono"] }
```
### 测试策略
#### 单元测试
```rust
#[cfg(test)]
mod tests {
use super::*;
#[tokio::test]
async fn test_comfyui_manager_connect() {
// 测试连接功能
}
#[tokio::test]
async fn test_template_validation() {
// 测试模板验证
}
#[tokio::test]
async fn test_workflow_execution() {
// 测试工作流执行
}
}
```
#### 集成测试
- [ ] 端到端工作流测试
- [ ] WebSocket 连接测试
- [ ] 数据库操作测试
- [ ] 错误恢复测试
### 部署和发布
#### 发布检查清单
- [ ] 所有测试通过
- [ ] 性能指标达标
- [ ] 文档更新完成
- [ ] 用户反馈收集
- [ ] 回滚方案准备
#### 发布策略
1. **Alpha 版本**: 内部测试 (第2周末)
2. **Beta 版本**: 小范围用户测试 (第3周末)
3. **正式版本**: 全量发布 (第4周末)
---
## 📞 联系和支持
### 技术支持
- **开发问题**: 查看项目 Issues
- **SDK 问题**: 参考 `cargos/comfyui-sdk/README.md`
- **架构问题**: 联系架构师
### 文档资源
- [ ] API 文档: `docs/api/comfyui.md`
- [ ] 开发指南: `docs/development/comfyui-integration.md`
- [ ] 故障排除: `docs/troubleshooting/comfyui.md`
---
**最后更新**: 2025-01-08
**负责人**: 开发团队
**审核人**: 项目经理
**版本**: v1.0
> 💡 **提示**: 这是一个完全重写的计划,需要充分的准备和测试。建议在开始前进行详细的技术评审和团队讨论。
> ⚠️ **重要**: 开始开发前请务必备份现有代码和数据,并创建独立的开发分支。