mixvideo-v2/TODO.md

14 KiB

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. 数据库设计

-- 工作流表
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. 核心服务接口设计

// 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. 错误处理策略

#[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 服务器 (用于测试)

开发配置

# 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"] }

测试策略

单元测试

#[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

💡 提示: 这是一个完全重写的计划,需要充分的准备和测试。建议在开始前进行详细的技术评审和团队讨论。

⚠️ 重要: 开始开发前请务必备份现有代码和数据,并创建独立的开发分支。