tasks.md 6.2 KB

Tasks: 任务队列系统实现

Phase 1: 核心数据结构 :white_check_mark:

1.1 实现 Task 数据模型

  • 创建 task_queue.py 模块
  • 定义 TaskTypeTaskStatus 枚举
  • 实现 Task dataclass
  • 添加类型注解和文档字符串
  • 验收: 可以实例化 Task 对象并序列化为字典

1.2 实现 TaskQueueManager

  • 实现单例模式 (__new__ + _lock)
  • 实现 submit_task() 方法
  • 实现 _process_next() 私有方法
  • 实现 _on_task_completed() 回调
  • 实现 _on_task_failed() 回调
  • 实现 _create_thumbnail() 缩略图生成
  • 实现 get_task()get_all_tasks() 查询方法
  • 实现队列容量检查 (最大 10 个)
  • 定义所有 Qt Signals (task_added, task_started, task_completed, task_failed, task_progress)
  • 验收: 可以提交任务,任务按顺序执行,信号正确触发

1.3 单元测试(可选但推荐)

  • 测试单例模式
  • 测试任务提交和执行顺序
  • 测试队列容量限制
  • 测试信号触发

Phase 2: UI 组件 :art:

2.1 实现 TaskQueueWidget (折叠状态)

  • 创建基础 QWidget 布局
  • 实现折叠状态 UI (status_label + queue_summary + toggle_btn)
  • 实现 _update_summary() 方法
  • 添加样式表 (背景色、边框)
  • 验收: 底部状态栏显示正常,UI 美观

2.2 实现 TaskQueueWidget (展开状态)

  • 实现展开状态 UI (QListWidget 任务列表)
  • 实现 toggle_expanded() 切换方法
  • 实现 _add_task_item() 添加任务项
  • 任务项显示状态图标 (●/○) 和 prompt 摘要
  • 验收: 点击展开/折叠正常工作,任务列表显示正确

2.3 绑定信号更新 UI

  • 连接 task_added 信号
  • 连接 task_started 信号
  • 连接 task_completed 信号
  • 连接 task_failed 信号
  • 连接 task_progress 信号
  • 实现临时通知显示 (完成/失败 3 秒后恢复)
  • 验收: UI 实时响应任务状态变化

Phase 3: 集成现有代码 :electric_plug:

3.1 集成到 MainWindow

  • MainWindow.__init__() 中创建 TaskQueueManager 单例
  • 创建 TaskQueueWidget 并添加到 main_layout 底部
  • task_manager 引用传递给子 Tab (或通过单例访问)
  • 验收: 应用启动时底部状态栏显示"就绪"

3.2 修改图片生成 Tab (GenerationTab)

  • 修改 generate_image_async() 使用 task_manager.submit_task()
  • 移除按钮禁用逻辑 (允许连续提交)
  • 绑定 task_completed 信号到 _on_my_task_completed() 方法
  • 实现 _on_my_task_completed() 更新图片显示
  • 处理队列已满异常 (QMessageBox 提示)
  • 验收: 可以连续点击生成按钮提交多个任务

3.3 修改款式设计 Tab (StyleDesignerTab)

  • 修改 generate_image() 使用 task_manager.submit_task()
  • 移除按钮禁用逻辑
  • 绑定 task_completed 信号到回调
  • 实现任务完成后更新预览图
  • 处理队列已满异常
  • 验收: 可以连续提交款式设计任务

3.4 历史记录集成

  • TaskQueueManager._on_task_completed() 中自动保存历史记录
  • 确保不与现有保存逻辑冲突
  • 测试历史记录功能未被破坏
  • 验收: 任务完成后自动出现在历史记录 Tab

Phase 4: 打磨与优化 :sparkles:

4.1 错误处理

  • 处理 API 密钥缺失
  • 处理网络错误
  • 处理 Worker 异常终止
  • 添加日志记录
  • 验收: 各种错误情况下应用不崩溃

4.2 用户体验优化

  • 优化状态文本显示 (prompt 摘要长度限制)
  • 优化颜色方案 (等待=蓝色, 运行=橙色, 完成=绿色, 失败=红色)
  • 添加 Tooltip 显示完整 prompt
  • 优化任务完成通知时长 (3 秒)
  • 验收: UI 流畅美观,信息清晰

4.3 边界情况测试

  • 测试快速连续点击 10+ 次生成按钮
  • 测试应用关闭时有运行中任务 (优雅退出)
  • 测试切换 Tab 时任务继续执行
  • 测试任务失败后继续处理下一个任务
  • 验收: 所有边界情况正常处理

4.4 性能测试

  • 测试 10 个任务排队时 UI 流畅度
  • 测试内存占用 (任务对象是否正确释放)
  • 测试长时间运行 (1 小时+ 不崩溃)
  • 验收: 性能满足要求

Phase 5: 文档与交付 :books:

5.1 代码文档

  • 为所有新类添加 docstring
  • 为复杂方法添加注释
  • 更新 README (如果需要)
  • 验收: 代码易读易维护

5.2 用户文档(可选)

  • 更新用户手册说明任务队列功能
  • 添加截图演示
  • 验收: 用户能理解如何使用

5.3 验收测试

  • 功能回归测试 (图片生成、款式设计、历史记录)
  • 任务队列功能测试
  • 跨平台测试 (Windows/macOS/Linux)
  • 验收: 所有功能正常工作

:dart: 依赖关系

Phase 1 (核心) → Phase 2 (UI) → Phase 3 (集成) → Phase 4 (打磨) → Phase 5 (交付)
    ↓                                  ↓
  可独立测试                       需要完整系统测试

:stopwatch:️ 时间估算

  • Phase 1: 4 小时
  • Phase 2: 4 小时
  • Phase 3: 4 小时
  • Phase 4: 2 小时
  • Phase 5: 2 小时

总计: 16 小时 (约 2 个工作日)

:construction: 实现顺序建议

  1. 先实现 Phase 1.1 + 1.2,立即进行简单测试验证逻辑
  2. 实现 Phase 2.1,可以看到 UI 效果,增强信心
  3. 实现 Phase 3.1,集成到主窗口,验证整体布局
  4. 完成 Phase 2.2 + 2.3,实现完整 UI 交互
  5. 完成 Phase 3.2 + 3.3,实现完整功能
  6. 进行 Phase 4 打磨
  7. Phase 5 收尾

:white_check_mark: 每个阶段的验收门槛

  • Phase 1: 可以提交任务并按顺序执行(无 UI)
  • Phase 2: 底部状态栏显示正常,能展开/折叠
  • Phase 3: 可以从 Tab 提交任务到队列,任务完成后更新 Tab
  • Phase 4: 各种异常情况不崩溃,UI 流畅
  • Phase 5: 代码可维护,文档完整

:clipboard: 待办事项摘要

  • 实现 Task 数据模型
  • 实现 TaskQueueManager 核心逻辑
  • 实现 TaskQueueWidget UI 组件
  • 集成到 MainWindow
  • 修改图片生成 Tab
  • 修改款式设计 Tab
  • 错误处理与优化
  • 测试与文档