proposal.md
5.25 KB
优化款式设计标签页UI和交互体验
概述
本提案旨在系统性改进款式设计(Style Designer)标签页的用户界面和交互体验,使其与图片生成标签页保持一致性,同时优化布局、简化操作流程、修复功能性缺陷。
动机
问题来源
- 用户反馈款式设计页面与图片生成页面的界面结构不一致
- 生成过程中的模态遮罩阻塞了其他操作
- 主石选项过多导致用户选择困难
- 按钮和输入框布局不够紧凑
- 敏感信息(模型信息)不应暴露给用户
- 款式设计生成的图片未保存到历史记录
- 珠宝元素添加功能存在问题
- 缺乏快速探索功能——用户需要手动逐个调整参数,无法快速尝试不同风格组合
当前痛点
- UI一致性问题: 两个核心功能页面的下半部分结构不同,用户体验割裂
- 交互阻塞: 模态对话框阻止用户在生成过程中执行其他操作
- 选项过载: 主石字段混合了形状和材质,造成认知负担
- 空间浪费: 按钮过大、输入框过长、每行只显示一个元素
- 信息泄露: 技术细节(模型名)暴露给普通用户
- 功能缺失: 历史记录未集成款式设计生成的内容
- 文字可读性: 单行文字高度过低影响阅读
- 图片裁切: 预览区图片显示不完整
- 探索效率低: 缺少随机生成功能,新用户不知从何开始,老用户难以快速尝试新组合
为什么现在要做
- 这些问题直接影响用户体验和产品一致性
- 修复成本低,收益高
- 为后续功能扩展奠定良好基础
核心目标
- 统一款式设计和图片生成的页面布局结构
- 将模态遮罩改为非阻塞式状态提示
- 拆分主石字段为"形状"和"材质"两个独立字段
- 优化按钮尺寸和表单布局(每行两列)
- 隐藏模型选择器预览
- 修复历史记录保存功能
- 修复珠宝元素添加逻辑
- 移除单个类别的"恢复默认"按钮
- 调整文字行高至18px
- 修复预览图片显示不全问题
- 添加随机参数生成按钮,支持一键生成完整参数组合
技术方案
主要模块
-
StyleDesignerTab类 (
image_generator.py:2782)- UI布局重构
- 字段拆分逻辑
- 生成流程改造
- 历史记录集成
- 随机参数生成功能
-
JewelryLibraryManager类
- 词库结构调整(拆分主石)
- 添加/删除逻辑修复
-
ImageGeneratorWindow类
- 历史记录管理器集成
数据结构变化
珠宝词库结构
# 当前结构
{
"主石": ["圆形钻石", "方形蓝宝石", ...], # 形状+材质混合
...
}
# 新结构
{
"主石形状": ["圆形", "方形", "椭圆形", ...],
"主石材质": ["钻石", "蓝宝石", "红宝石", ...],
...
}
UI布局改变
旧布局:
[标签] [下拉框________________________] [添加] [删除] [恢复默认]
新布局(每行两个元素):
[标签1] [下拉框______] [添加] [删除] [标签2] [下拉框______] [添加] [删除]
新增按钮:
[🎲 随机生成参数] [🔄 恢复所有默认词库]
随机生成逻辑
def randomize_parameters():
"""遍历所有combo_boxes,随机选择一个索引"""
for category, combo in self.combo_boxes.items():
if combo.count() > 0:
random_index = random.randint(0, combo.count() - 1)
combo.setCurrentIndex(random_index)
# 触发prompt预览更新
self.update_prompt_preview()
与现有系统关系
- 复用
ImageGenerationWorker线程 - 复用
HistoryManager保存逻辑 - 保持
PromptAssembler接口兼容 - 扩展
JewelryLibraryManager默认词库
风险评估
兼容性风险
-
词库数据迁移: 需要将现有"主石"数据拆分为"形状"和"材质"
- 缓解措施: 提供自动迁移脚本,保留原字段作为fallback
-
历史提案影响: 可能与
add-style-designer-tab提案冲突- 缓解措施: 检查该提案状态,必要时合并修改
回滚计划
- 保留原有词库JSON文件备份
- 使用git分支隔离开发
- 如遇问题,通过版本控制快速回退
验收标准
验收方式
- 视觉验收: 对比款式设计和图片生成页面,确认布局一致
-
功能测试:
- 生成过程中切换标签页正常
- 主石形状+材质组合正确生成prompt
- 历史记录中出现款式设计生成的图片
- 添加/删除珠宝元素成功
- 随机按钮正确填充所有参数字段
- 多次点击随机按钮生成不同组合
-
UI测试:
- 模型不可见
- 按钮尺寸合理
- 文字行高18px
- 预览图完整显示
- 随机按钮位置合理(在"恢复默认"按钮旁)
测试覆盖
- 单元测试: JewelryLibraryManager 拆分逻辑
- 集成测试: 生成流程 + 历史记录保存
- UI测试: 布局渲染、响应式调整
- 回归测试: 原有图片生成功能不受影响
附录
相关文件
-
image_generator.py: 主应用逻辑 -
jewelry_library.json: 词库数据 -
config.json: 配置文件
依赖组件
- PySide6 (GUI框架)
- Google Gemini API (图片生成)
- SQLite/JSON (历史记录存储)
实现细节参考
详见 tasks.md 中的分步实现计划