tasks.md
7.04 KB
Tasks: Add Style Designer Tab
Overview
按照 Linus 式原则:简洁、直接、零破坏性。所有任务都面向可验证的用户价值。
Phase 1: 数据层基础设施
Task 1.1: 定义默认珠宝词库常量
-
目标:在代码中定义
DEFAULT_JEWELRY_LIBRARY字典 -
验收:
- 包含 7 个类别的完整词库
- 每个类别包含中英文标签
- 每个词库项包含
value和label_cn
-
文件:
image_generator.py或新建jewelry_lib.py
Task 1.2: 实现 JewelryLibraryManager
- 目标:实现词库加载、保存、增删改逻辑
-
验收:
-
load_library()能从 JSON 加载,不存在时创建默认词库 -
save_library()能保存到 JSON -
add_item()/remove_item()能修改词库 -
reset_to_default()能恢复默认词库
-
- 依赖:Task 1.1
-
文件:
image_generator.py或新建jewelry_lib.py
Task 1.3: 实现 PromptAssembler
- 目标:实现智能 prompt 组装逻辑
-
验收:
- 所有字段都填时,生成完整 prompt
-
CENTER_STONE为空时,调整句式 - 其他字段为空时,移除对应句段
- 连接词正确(无多余逗号)
-
测试用例:
- 全空:返回基础框架
- 仅主石为空:验证句式调整
- 随机组合:验证逻辑健壮性
-
文件:
image_generator.py或新建jewelry_lib.py
Phase 2: UI 基础框架
Task 2.1: 创建 StyleDesignerTab 类
- 目标:创建基础的 Tab 容器类
-
验收:
- 继承自
QWidget - 接受
JewelryLibraryManager作为参数 - 基础布局框架(垂直布局)
- 继承自
- 依赖:Task 1.2
-
文件:
image_generator.py
Task 2.2: 在 MainWindow 中插入新 Tab
- 目标:在"图片生成"和"历史记录"之间插入"款式设计"
-
验收:
- Tab 顺序:图片生成 → 款式设计 → 历史记录
- Tab 标签显示为"款式设计"
- 点击 Tab 能正常切换
-
位置:
ImageGeneratorWindow.setup_ui()方法,约 1260 行 - 依赖:Task 2.1
-
文件:
image_generator.py:1246-1273
Phase 3: 表单 UI 实现
Task 3.1: 实现单个字段的 UI 组件
-
目标:创建
create_field_widget()方法 -
验收:
- 包含中文标签
- ComboBox 显示中文选项
- "添加" 按钮
- "删除" 按钮
- 选项变化时触发 prompt 预览更新
- 依赖:Task 2.1
-
文件:
StyleDesignerTab类
Task 3.2: 创建 7 个字段的表单区域
-
目标:在
setup_ui()中循环创建 7 个字段 -
验收:
- 7 个字段按顺序排列
- 每个字段加载对应词库项
- 布局清晰,标签对齐
- 依赖:Task 3.1
-
文件:
StyleDesignerTab.setup_ui()
Task 3.3: 实现 Prompt 预览区
- 目标:实时显示组装后的 prompt
-
验收:
- 使用只读
QTextEdit - 任意字段变化时自动更新
- 显示完整的英文 prompt
- 使用只读
- 依赖:Task 1.3, Task 3.2
-
文件:
StyleDesignerTab.setup_ui()
Phase 4: 词库管理 UI
Task 4.1: 实现"添加词库项"对话框
- 目标:点击"添加"按钮弹出对话框
-
验收:
- 输入英文值(value)
- 输入中文标签(label_cn)
- 验证非空
- 保存到词库并刷新 ComboBox
- 依赖:Task 3.1
-
文件:
StyleDesignerTab.add_library_item()
Task 4.2: 实现"删除词库项"功能
- 目标:点击"删除"按钮移除当前选中项
-
验收:
- 确认对话框(防止误删)
- 从词库移除
- 刷新 ComboBox
- 如果删除的是当前选中项,清空选择
- 依赖:Task 3.1
-
文件:
StyleDesignerTab.remove_library_item()
Task 4.3: 实现"恢复默认词库"功能
- 目标:添加"恢复默认词库"按钮
-
验收:
- 确认对话框(警告会覆盖自定义词库)
- 调用
reset_to_default() - 刷新所有 ComboBox
- 依赖:Task 1.2, Task 3.2
-
文件:
StyleDesignerTab.reset_library()
Phase 5: 生成功能集成
Task 5.1: 添加生成设置区域
- 目标:复用现有的宽高比、尺寸、模型选择
-
验收:
- UI 与"图片生成" Tab 一致
- 默认值合理(如 1:1 / 2K)
- 依赖:Task 2.1
-
文件:
StyleDesignerTab.setup_ui()
Task 5.2: 实现"生成"按钮
- 目标:调用现有文生图 API
-
验收:
- 组装 prompt 并发送给 API
- 显示进度条
- 成功后显示图片
- 失败时显示错误信息
-
复用:
ImageGeneratorWindow.generate_image()逻辑 - 依赖:Task 1.3, Task 5.1
-
文件:
StyleDesignerTab.generate_image()
Task 5.3: 实现结果展示区
- 目标:显示生成的图片
-
验收:
- 图片自适应大小
- 提供下载按钮
- 提供预览按钮
- 复用:现有图片展示逻辑
- 依赖:Task 5.2
-
文件:
StyleDesignerTab.setup_ui()
Phase 6: 测试与验证
Task 6.1: 功能测试
- 场景 1:所有字段为空 → 验证 prompt 合理性
- 场景 2:仅主石为空 → 验证句式调整
- 场景 3:添加自定义词库项 → 验证持久化
- 场景 4:删除词库项 → 验证删除逻辑
- 场景 5:恢复默认词库 → 验证恢复逻辑
- 场景 6:生成图片 → 验证 API 调用
Task 6.2: 边界测试
- 场景 1:配置文件损坏 → 验证回退到默认词库
- 场景 2:配置文件不存在 → 验证自动创建
- 场景 3:快速切换字段 → 验证 UI 无卡顿
Task 6.3: 兼容性测试
- 场景 1:现有"图片生成"功能不受影响
- 场景 2:现有"历史记录"功能不受影响
- 场景 3:配置文件加载不冲突
Phase 7: 优化与文档
Task 7.1: 代码审查
- 目标:Linus 式代码审查
-
检查点:
- 是否有重复代码?→ 抽取公共方法
- 是否有特殊情况分支?→ 简化数据结构
- 是否有超过 3 层缩进?→ 重构
- 是否破坏向后兼容?→ 回退修改
Task 7.2: 用户文档
- 目标:更新用户手册
-
内容:
- 如何使用"款式设计"功能
- 如何添加/删除词库项
- 如何恢复默认词库
-
文件:
USER_GUIDE.md
Task Dependencies Graph
Phase 1 (数据层):
1.1 → 1.2 → 1.3
Phase 2 (UI框架):
1.2 → 2.1 → 2.2
Phase 3 (表单UI):
2.1 → 3.1 → 3.2 → 3.3
↓
1.3
Phase 4 (词库管理):
3.1 → 4.1, 4.2
1.2, 3.2 → 4.3
Phase 5 (生成功能):
2.1 → 5.1 → 5.2 → 5.3
↓
1.3
Phase 6 (测试):
所有前置任务完成 → 6.1, 6.2, 6.3
Phase 7 (优化):
6.* → 7.1 → 7.2
Estimated Effort
| Phase | 任务数 | 预估难度 |
|---|---|---|
| Phase 1 | 3 | 简单 |
| Phase 2 | 2 | 简单 |
| Phase 3 | 3 | 中等 |
| Phase 4 | 3 | 中等 |
| Phase 5 | 3 | 简单(复用现有逻辑) |
| Phase 6 | 3 | 简单 |
| Phase 7 | 2 | 简单 |
总计:19 个任务
任务清单完成日期:2025-12-10