Capability: Task Queue Management
ADDED Requirements
Requirement: 用户可以提交多个图像生成任务到队列
系统 SHALL 允许用户在使用图片生成或款式设计功能时连续提交多个任务,而不需要等待前一个任务完成。
Scenario: 用户连续提交 3 个图片生成任务
Given 用户在"图片生成" Tab 中 When 用户输入 prompt "银戒指" 并点击"生成图片" And 立即输入 prompt "金项链" 并再次点击"生成图片" And 立即输入 prompt "钻石耳环" 并第三次点击"生成图片" Then 三个任务都被添加到队列中 And 任务按提交顺序依次执行 And UI 不阻塞,用户可以继续操作
Scenario: 用户提交任务时队列已满
Given 队列中已有 10 个等待任务(队列容量限制) When 用户尝试提交第 11 个任务 Then 显示警告对话框 "任务队列已满 (最大 10 个)" And 任务不被添加到队列
Requirement: 用户可以实时查看任务队列状态
系统 SHALL 通过底部状态栏向用户显示当前任务队列的状态,包括正在执行的任务和等待中的任务数量。
Scenario: 查看折叠状态的任务摘要
Given 队列中有 1 个运行中任务和 2 个等待任务 And 底部状态栏处于折叠状态(默认) When 用户查看状态栏 Then 显示 "● 运行中" (橙色图标) And 显示 "正在处理: 生成银戒指图片... | 等待: 2" And 显示 "[展开▼]" 按钮
Scenario: 展开查看详细任务列表
Given 队列中有多个任务 And 底部状态栏处于折叠状态 When 用户点击 "[展开▼]" 按钮 Then 状态栏展开显示详细任务列表 And 每个任务显示状态图标和 prompt 摘要 And 运行中任务显示 "●" (橙色) And 等待中任务显示 "○" (灰色) And 按钮文本变为 "[折叠▲]"
Scenario: 折叠任务列表
Given 底部状态栏处于展开状态 When 用户点击 "[折叠▲]" 按钮 Then 状态栏折叠,只显示摘要信息 And 按钮文本变为 "[展开▼]"
Requirement: 任务完成后自动更新对应 Tab 的显示
系统 MUST 在队列中的任务完成时自动更新提交该任务的 Tab 的图片显示和历史记录。
Scenario: 图片生成任务完成后更新显示
Given 用户从"图片生成" Tab 提交了一个任务 And 任务正在队列中执行 When 任务成功完成 Then "图片生成" Tab 中的预览区域显示生成的图片 And 下载按钮被启用 And 任务被保存到历史记录 And 底部状态栏显示 "✓ 完成: 生成银戒指..." 3 秒后恢复
Scenario: 款式设计任务完成后更新显示
Given 用户从"款式设计" Tab 提交了一个任务 And 任务正在队列中执行 When 任务成功完成 Then "款式设计" Tab 中的预览区域显示生成的图片 And 任务被保存到历史记录 And 底部状态栏显示完成通知
Scenario: 任务失败后显示错误信息
Given 用户提交了一个任务 And 任务在执行过程中失败(如 API 错误) When 任务失败 Then 底部状态栏显示 "✗ 失败: API 连接超时..." (红色) And 3 秒后恢复显示队列状态 And 队列继续处理下一个任务
Requirement: 任务按提交顺序依次执行
系统 SHALL 按照先进先出(FIFO)的顺序依次执行队列中的任务,确保任务执行的可预测性。
Scenario: 多个任务按顺序执行
Given 用户依次提交任务 A、B、C When 队列开始处理 Then 任务 A 首先执行 When 任务 A 完成 Then 任务 B 开始执行 When 任务 B 完成 Then 任务 C 开始执行
Scenario: 任务失败不影响后续任务
Given 队列中有任务 A、B、C And 任务 A 正在执行 When 任务 A 失败 Then 队列自动开始处理任务 B And 任务 B 和 C 正常执行
Requirement: 状态栏显示实时任务进度
系统 SHALL 在任务正在执行时通过状态栏实时显示任务的进度信息。
Scenario: 显示任务执行进度
Given 队列中有一个正在执行的任务 When Worker 发出进度信号 "正在连接 Gemini API..." Then 状态栏摘要显示 "正在处理: 生成银戒指... - 正在连接 Gemini API..."
Scenario: 无任务时显示就绪状态
Given 队列中没有任务 When 用户查看状态栏 Then 显示 "● 就绪" (绿色) And 显示 "任务队列: 无任务"
Implementation Notes
核心数据结构
-
Taskdataclass: 包含任务的所有输入参数、状态和结果 -
TaskQueueManager(单例): 管理队列和 Worker 生命周期 -
TaskQueueWidget: 底部状态栏 UI 组件
技术约束
- 队列最大容量: 10 个任务
- 任务执行方式: 串行(一次只执行一个)
- Worker 类型: 复用现有的
ImageGenerationWorker(QThread) - 信号机制: 使用 Qt Signals 实现松耦合
兼容性
- 不修改现有
ImageGenerationWorker实现 - 不破坏现有历史记录功能
- 不影响现有配置和数据库
性能要求
- UI 更新不阻塞主线程
- 队列操作时间复杂度 O(1)
- 内存占用: 任务完成后及时释放 Worker 引用
Cross-References
- 依赖: 现有的
ImageGenerationWorker类 - 依赖: 现有的
HistoryManager类 - 关联:
image_generator.py中的 MainWindow, GenerationTab, StyleDesignerTab