chore: rename outfit prompt labels
This commit is contained in:
@@ -133,9 +133,9 @@ Excel 行 → `OutfitTask` 列表的转换由 `excel_service` 完成;核心只
|
|||||||
- **迁移**:首次无 `outfit_prompts.json` 时——有旧 `outfit_prompt.txt` 就转成一套「默认」,否则用 `DEFAULT_OUTFIT_PROMPT` 建「默认」。
|
- **迁移**:首次无 `outfit_prompts.json` 时——有旧 `outfit_prompt.txt` 就转成一套「默认」,否则用 `DEFAULT_OUTFIT_PROMPT` 建「默认」。
|
||||||
- 新函数 `load_outfit_prompts()` / `save_outfit_prompts(list)`(沿用 utf-8-sig 读、无 BOM 写、损坏回退「默认」那套的约定)。
|
- 新函数 `load_outfit_prompts()` / `save_outfit_prompts(list)`(沿用 utf-8-sig 读、无 BOM 写、损坏回退「默认」那套的约定)。
|
||||||
|
|
||||||
**界面**(「通用话术」组,套印花页范式)
|
**界面**(「穿搭生成话术」组,套印花页范式)
|
||||||
|
|
||||||
- 编辑框**上方一行**:模板下拉 +「新建」「另存为」「重命名」「删除」。
|
- 编辑框**上方一行**:「穿搭生成话术」标签 + 模板下拉;下一行放「新建」「另存为」「重命名」「删除」。
|
||||||
- 编辑框**下方**:保留「插入标题」「保存」。
|
- 编辑框**下方**:保留「插入标题」「保存」。
|
||||||
- 左栏约 360px,5 个模板按钮偏多 → 实现时可排两行或用紧凑小按钮。
|
- 左栏约 360px,5 个模板按钮偏多 → 实现时可排两行或用紧凑小按钮。
|
||||||
|
|
||||||
@@ -171,7 +171,7 @@ Excel 行 → `OutfitTask` 列表的转换由 `excel_service` 完成;核心只
|
|||||||
|
|
||||||
三栏布局:
|
三栏布局:
|
||||||
|
|
||||||
- **左栏(数据源 + 话术创作,~360px)**:`Excel` / `输出` 各为**行内一行**(标签 + 路径 + 浏览,省纵向空间);数据源概览(共 N 行 / 完成 / 待处理 / 失败);**加大的**通用话术编辑 +「保存话术」+「插入标题」;下方常驻**加大的最终提示词预览**(内嵌、实时、带样本行下拉,含 §7.1 自动附加的输出要求)。AI 模型下拉不在此(见右栏)。
|
- **左栏(数据源 + 话术创作,~360px)**:`Excel` / `输出` 各为**行内一行**(标签 + 路径 + 浏览,省纵向空间);数据源概览(共 N 行 / 完成 / 待处理 / 失败);**加大的**穿搭生成话术编辑 +「保存话术」+「插入标题」;下方常驻**加大的最终生成要求预览**(内嵌、实时,标题行右侧放样本行下拉,含 §7.1 自动附加的输出要求)。AI 模型下拉不在此(见右栏)。
|
||||||
- **中栏(结果 + 明细)**:顶部「最近结果」缩略图条——**只展示已完成的人物效果图**,新图自动加到最左、首图标「最新」,单击看大图、右键开所在文件夹;下方「处理明细」表(行 / 标题 / 货号 / 衣服图 / 状态 / 结果或原因),按 Excel 行顺序,状态用 完成 / 失败 / 生成中 / 待处理 / 跳过 徽章。
|
- **中栏(结果 + 明细)**:顶部「最近结果」缩略图条——**只展示已完成的人物效果图**,新图自动加到最左、首图标「最新」,单击看大图、右键开所在文件夹;下方「处理明细」表(行 / 标题 / 货号 / 衣服图 / 状态 / 结果或原因),按 Excel 行顺序,状态用 完成 / 失败 / 生成中 / 待处理 / 跳过 徽章。
|
||||||
- **右栏(设置 + 运行,~400px)**:生成设置(重试失败行 + 并发数 / 新请求间隔 / 单任务冷却 / 失败重试 / 分辨率 / JPG 质量,**3 列 × 2 行**);其下 **AI 模型下拉**(来自 AI 模型配置);本次进度 + 统计(完成 / 失败 / 待处理);开始生成 / 停止生成;导出失败清单 / 打开输出目录;实时日志(含 §8 心跳行)。
|
- **右栏(设置 + 运行,~400px)**:生成设置(重试失败行 + 并发数 / 新请求间隔 / 单任务冷却 / 失败重试 / 分辨率 / JPG 质量,**3 列 × 2 行**);其下 **AI 模型下拉**(来自 AI 模型配置);本次进度 + 统计(完成 / 失败 / 待处理);开始生成 / 停止生成;导出失败清单 / 打开输出目录;实时日志(含 §8 心跳行)。
|
||||||
|
|
||||||
|
|||||||
@@ -192,14 +192,17 @@ class AiOutfitPanel(QWidget):
|
|||||||
self._output_edit.setPlaceholderText("默认:程序旁的「合并后的图片」")
|
self._output_edit.setPlaceholderText("默认:程序旁的「合并后的图片」")
|
||||||
col.addLayout(self._inline_path_row("输出", self._output_edit, self._browse_output))
|
col.addLayout(self._inline_path_row("输出", self._output_edit, self._browse_output))
|
||||||
|
|
||||||
# 通用话术(多套模板;加大,随窗口高度拉伸)
|
# 穿搭生成话术(多套模板;加大,随窗口高度拉伸)
|
||||||
prm = QGroupBox("通用话术")
|
prm = QGroupBox()
|
||||||
pv = QVBoxLayout(prm)
|
pv = QVBoxLayout(prm)
|
||||||
# 模板选择行:下拉 + 新建/另存为/重命名/删除
|
# 模板选择行:下拉 + 新建/另存为/重命名/删除
|
||||||
|
prompt_header = QHBoxLayout()
|
||||||
|
prompt_header.addWidget(QLabel("穿搭生成话术"))
|
||||||
self._prompt_combo = QComboBox()
|
self._prompt_combo = QComboBox()
|
||||||
self._compact_combo(self._prompt_combo)
|
self._compact_combo(self._prompt_combo)
|
||||||
self._prompt_combo.activated.connect(self._on_prompt_template_activated)
|
self._prompt_combo.activated.connect(self._on_prompt_template_activated)
|
||||||
pv.addWidget(self._prompt_combo)
|
prompt_header.addWidget(self._prompt_combo, stretch=1)
|
||||||
|
pv.addLayout(prompt_header)
|
||||||
trow = QHBoxLayout()
|
trow = QHBoxLayout()
|
||||||
for text, slot in (("新建", self._prompt_new), ("另存为", self._prompt_save_as),
|
for text, slot in (("新建", self._prompt_new), ("另存为", self._prompt_save_as),
|
||||||
("重命名", self._prompt_rename), ("删除", self._prompt_delete)):
|
("重命名", self._prompt_rename), ("删除", self._prompt_delete)):
|
||||||
@@ -222,16 +225,16 @@ class AiOutfitPanel(QWidget):
|
|||||||
pv.addLayout(prow)
|
pv.addLayout(prow)
|
||||||
col.addWidget(prm, stretch=2)
|
col.addWidget(prm, stretch=2)
|
||||||
|
|
||||||
# 最终提示词预览(加大;内嵌、实时;替换样本行占位符 + 附加输出要求)
|
# 最终生成要求预览(加大;内嵌、实时;替换样本行占位符 + 附加输出要求)
|
||||||
prev = QGroupBox("最终提示词预览")
|
prev = QGroupBox()
|
||||||
pvw = QVBoxLayout(prev)
|
pvw = QVBoxLayout(prev)
|
||||||
srow = QHBoxLayout()
|
preview_header = QHBoxLayout()
|
||||||
srow.addWidget(QLabel("样本行"))
|
preview_header.addWidget(QLabel("最终生成要求预览"))
|
||||||
self._sample_combo = QComboBox()
|
self._sample_combo = QComboBox()
|
||||||
self._compact_combo(self._sample_combo)
|
self._compact_combo(self._sample_combo)
|
||||||
self._sample_combo.currentIndexChanged.connect(self._refresh_preview)
|
self._sample_combo.currentIndexChanged.connect(self._refresh_preview)
|
||||||
srow.addWidget(self._sample_combo, stretch=1)
|
preview_header.addWidget(self._sample_combo, stretch=1)
|
||||||
pvw.addLayout(srow)
|
pvw.addLayout(preview_header)
|
||||||
self._preview_warn = QLabel("")
|
self._preview_warn = QLabel("")
|
||||||
self._preview_warn.setStyleSheet("color:#b87a00;")
|
self._preview_warn.setStyleSheet("color:#b87a00;")
|
||||||
self._preview_warn.setVisible(False)
|
self._preview_warn.setVisible(False)
|
||||||
|
|||||||
Reference in New Issue
Block a user