tasks.md
6.2 KB
Tasks: 任务队列系统实现
Phase 1: 核心数据结构
1.1 实现 Task 数据模型
-
创建
task_queue.py模块 -
定义
TaskType和TaskStatus枚举 -
实现
Taskdataclass - 添加类型注解和文档字符串
- 验收: 可以实例化 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 组件
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: 集成现有代码
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: 打磨与优化
4.1 错误处理
- 处理 API 密钥缺失
- 处理网络错误
- 处理 Worker 异常终止
- 添加日志记录
- 验收: 各种错误情况下应用不崩溃
4.2 用户体验优化
- 优化状态文本显示 (prompt 摘要长度限制)
- 优化颜色方案 (等待=蓝色, 运行=橙色, 完成=绿色, 失败=红色)
- 添加 Tooltip 显示完整 prompt
- 优化任务完成通知时长 (3 秒)
- 验收: UI 流畅美观,信息清晰
4.3 边界情况测试
- 测试快速连续点击 10+ 次生成按钮
- 测试应用关闭时有运行中任务 (优雅退出)
- 测试切换 Tab 时任务继续执行
- 测试任务失败后继续处理下一个任务
- 验收: 所有边界情况正常处理
4.4 性能测试
- 测试 10 个任务排队时 UI 流畅度
- 测试内存占用 (任务对象是否正确释放)
- 测试长时间运行 (1 小时+ 不崩溃)
- 验收: 性能满足要求
Phase 5: 文档与交付
5.1 代码文档
- 为所有新类添加 docstring
- 为复杂方法添加注释
- 更新 README (如果需要)
- 验收: 代码易读易维护
5.2 用户文档(可选)
- 更新用户手册说明任务队列功能
- 添加截图演示
- 验收: 用户能理解如何使用
5.3 验收测试
- 功能回归测试 (图片生成、款式设计、历史记录)
- 任务队列功能测试
- 跨平台测试 (Windows/macOS/Linux)
- 验收: 所有功能正常工作
依赖关系
Phase 1 (核心) → Phase 2 (UI) → Phase 3 (集成) → Phase 4 (打磨) → Phase 5 (交付)
↓ ↓
可独立测试 需要完整系统测试
️ 时间估算
- Phase 1: 4 小时
- Phase 2: 4 小时
- Phase 3: 4 小时
- Phase 4: 2 小时
- Phase 5: 2 小时
总计: 16 小时 (约 2 个工作日)
实现顺序建议
- 先实现 Phase 1.1 + 1.2,立即进行简单测试验证逻辑
- 实现 Phase 2.1,可以看到 UI 效果,增强信心
- 实现 Phase 3.1,集成到主窗口,验证整体布局
- 完成 Phase 2.2 + 2.3,实现完整 UI 交互
- 完成 Phase 3.2 + 3.3,实现完整功能
- 进行 Phase 4 打磨
- Phase 5 收尾
每个阶段的验收门槛
- Phase 1: 可以提交任务并按顺序执行(无 UI)
- Phase 2: 底部状态栏显示正常,能展开/折叠
- Phase 3: 可以从 Tab 提交任务到队列,任务完成后更新 Tab
- Phase 4: 各种异常情况不崩溃,UI 流畅
- Phase 5: 代码可维护,文档完整
待办事项摘要
- 实现 Task 数据模型
- 实现 TaskQueueManager 核心逻辑
- 实现 TaskQueueWidget UI 组件
- 集成到 MainWindow
- 修改图片生成 Tab
- 修改款式设计 Tab
- 错误处理与优化
- 测试与文档