tasks.md 6.45 KB

任务分解 - 优化款式设计标签页

任务顺序

Phase 1: 数据结构调整(优先级:高)

  • Task 1.1: 拆分主石词库字段

    • 修改 JewelryLibraryManager 默认词库结构
    • 将 "主石" 拆分为 "主石形状" 和 "主石材质"
    • 提取现有数据的形状和材质部分
    • 验证: 打印新词库结构,确认数据完整性
    • 依赖: 无
    • 可并行: 否
  • Task 1.2: 更新 PromptAssembler 兼容新字段

    • 修改 PromptAssembler.assemble() 方法
    • 处理 "主石形状" + "主石材质" 的组合逻辑
    • 向后兼容旧的 "主石" 字段(如果存在)
    • 验证: 单元测试不同组合的prompt输出
    • 依赖: Task 1.1
    • 可并行: 否

Phase 2: UI布局重构(优先级:高)

  • Task 2.1: 统一款式设计下半部分结构

    • 对比 setup_generation_tab() (line 1286) 和 StyleDesignerTab.setup_ui() (line 2802)
    • 调整款式设计的布局顺序和组件结构,使其与图片生成一致
    • 确保"生成设置"、"生成按钮"、"结果展示"的排列顺序相同
    • 验证: 视觉对比两个页面
    • 依赖: 无
    • 可并行: 可与 Task 2.2 并行
  • Task 2.2: 优化珠宝元素选择布局(每行两列)

    • 重构 create_field_widget() 方法
    • 使用 QGridLayout 替代当前的逐行 QVBoxLayout
    • 每行放置两个字段(标签+下拉框+操作按钮)
    • 缩短下拉框宽度,缩小按钮尺寸
    • 验证: 调整窗口大小,确认响应式布局正常
    • 依赖: Task 1.1(需要知道最终字段数量)
    • 可并行: 可与 Task 2.1 并行
  • Task 2.3: 调整文字行高至18px

    • 为所有 QLabel 设置统一样式: font-size: 14px; line-height: 18px;
    • 检查表单标签、提示文字、状态标签
    • 验证: 视觉检查文字间距是否合理
    • 依赖: 无
    • 可并行: 可随时执行
  • Task 2.4: 移除单个类别的"恢复默认"按钮

    • create_field_widget() 移除 reset_btn
    • 保留全局的 "恢复所有默认词库" 按钮
    • 验证: 确认每行只有"添加"和"删除"按钮
    • 依赖: 无
    • 可并行: 可与 Task 2.2 同时修改

Phase 3: 隐藏敏感信息(优先级:中)

  • Task 3.1: 隐藏模型选择器
    • settings_group (line 2846) 移除模型下拉框和标签
    • 硬编码使用默认模型 "imagen-3.0-generate-002"
    • 验证: 确认UI中不显示模型选项
    • 依赖: 无
    • 可并行: 是

Phase 4: 改进生成交互(优先级:高)

  • Task 4.1: 替换模态遮罩为非阻塞状态提示

    • 移除 generate_image() (line 3075) 中的 QMessageBox 模态对话框
    • status_label (类似图片生成页 line 1425) 显示 "● 生成中..."
    • 禁用生成按钮,防止重复点击
    • 在回调中恢复状态
    • 验证: 生成过程中可以切换标签页、查看历史记录
    • 依赖: 无
    • 可并行: 否
  • Task 4.2: 修复预览图片显示不全问题

    • 检查 result_label (line 2893) 的缩放逻辑
    • 确保使用 Qt.KeepAspectRatio 且不裁剪
    • 调整 result_labelminimumHeight 和布局策略
    • 验证: 测试不同宽高比的图片是否完整显示
    • 依赖: 无
    • 可并行: 是

Phase 5: 历史记录集成(优先级:高)

  • Task 5.1: 将款式设计生成结果保存到历史记录
    • on_generation_success() (line 3119) 中调用 parent_window.history_manager.add_item()
    • 构造 HistoryItem 对象,包含:
    • timestamp
    • prompt
    • generated_image_path (保存到临时目录)
    • reference_image_paths (款式设计无参考图,传空列表)
    • aspect_ratio, image_size, model
    • 验证: 生成后切换到历史记录页,确认出现新记录
    • 依赖: 无
    • 可并行: 否

Phase 6: 添加随机参数生成功能(优先级:中)

  • Task 6.1: 实现随机参数生成方法

    • StyleDesignerTab 类中添加 randomize_parameters() 方法
    • 遍历 self.combo_boxes 字典,为每个下拉框设置随机索引
    • 确保处理空下拉框的边界情况
    • 调用 update_prompt_preview() 更新prompt预览
    • 添加import语句: import random
    • 验证: 单元测试随机生成的结果分布合理
    • 依赖: 无
    • 可并行: 是
  • Task 6.2: 添加随机生成按钮到UI

    • 在"恢复所有默认词库"按钮旁添加":game_die: 随机生成参数"按钮
    • 设置按钮样式与恢复按钮保持一致(仅图标和文字不同)
    • 绑定点击事件到 randomize_parameters() 方法
    • 验证: 视觉检查按钮位置和样式
    • 依赖: Task 6.1
    • 可并行: 与其他UI任务并行

Phase 7: 修复珠宝元素添加功能(优先级:高)

  • Task 7.1: 调试并修复 add_library_item() 方法

    • 检查 QMessageBox.getText() 是否正确工作(替代方案:使用 QInputDialog.getText())
    • 验证 library_manager.add_item() 是否抛出异常
    • 确认 refresh_combo_box() 正确刷新下拉框
    • 添加日志记录,追踪添加流程
    • 验证: 手动添加词库项,确认出现在下拉框中
    • 依赖: 无
    • 可并行: 是
  • Task 7.2: 测试删除功能

    • 验证 remove_library_item() 方法正常工作
    • 确认删除后下拉框正确刷新
    • 验证: 删除已选择的词库项
    • 依赖: Task 6.1
    • 可并行: 否

Phase 8: 测试与验证(优先级:高)

  • Task 8.1: 集成测试

    • 测试完整生成流程:选择元素 → 生成图片 → 保存历史记录
    • 测试词库管理:添加 → 选择 → 删除 → 恢复默认
    • 测试随机生成:点击随机按钮多次,验证每次生成不同组合
    • 测试UI一致性:对比款式设计和图片生成页面
    • 验证: 所有功能正常,无回归问题
    • 依赖: 所有前置任务
    • 可并行: 否
  • Task 8.2: UI回归测试

    • 测试原有图片生成功能是否受影响
    • 测试历史记录显示和加载
    • 测试不同分辨率下的布局
    • 验证: 原有功能100%正常
    • 依赖: Task 7.1
    • 可并行: 否

关键路径

Task 1.1 → Task 1.2 → Task 2.2 → Task 6.1 → Task 6.2 → Task 8.1 → Task 8.2
             ↓
         Task 5.1

并行执行建议

  • Phase 2 (Task 2.1, 2.2, 2.3, 2.4) 可部分并行
  • Phase 3 (Task 3.1, 3.2) 可完全并行
  • Phase 6 (Task 6.1, 6.2) 可与其他任务并行
  • Task 4.2, 7.1 可与其他任务并行

预估工作量

  • Phase 1: 2小时
  • Phase 2: 3小时
  • Phase 3: 0.5小时
  • Phase 4: 2小时
  • Phase 6: 1.5小时
  • Phase 7: 1.5小时
  • Phase 8: 1.5小时

总计: 约13.5小时(可通过并行执行压缩至9小时)