docs(ai-outfit): spec prompt templates (multi, named) — §7.2 / §19.8
Upgrade the single prompt to multiple named templates (switch/new/save-as/ rename/delete/save, remember last). Decisions: all-custom (seed one 默认), dirty-check confirm on switch, include rename. Storage: outfit_prompts.json + outfit_prompt_name in app_config, migrate the old outfit_prompt.txt. Add §7.2 design + §19.8 task (not yet implemented). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -122,6 +122,32 @@ Excel 行 → `OutfitTask` 列表的转换由 `excel_service` 完成;核心只
|
||||
- 由 `core/ai_outfit.render_prompt(template, task, resolution)` 实现:`resolution` 为空时不附加(保持纯函数单测兼容);`generate_outfit_image` 生成时传入当前分辨率。
|
||||
- **左栏「最终提示词预览」必须包含这段**(带当前选中分辨率),否则预览与实际发送不一致;分辨率下拉变化时预览同步刷新。
|
||||
|
||||
### 7.2 话术模板(多套命名话术)
|
||||
|
||||
把当前"单一一份话术"升级为**多套命名话术**:下拉切换、新建、另存为、重命名、删除、保存;记住上次所选。借鉴印花页「模板」区(`template_panel.py` / `template_service.py`)的范式,但**全部自定义**(不分内置)。
|
||||
|
||||
**存储**(`config_service` 扩展)
|
||||
|
||||
- `~/.cmbot/config/outfit_prompts.json` = `[{ "name", "text" }, …]`,**始终 ≥1 套**。
|
||||
- 当前选中**名字**存进 `app_config.json` 新键 `outfit_prompt_name`(启动恢复;名字失效则回退第一套)。
|
||||
- **迁移**:首次无 `outfit_prompts.json` 时——有旧 `outfit_prompt.txt` 就转成一套「默认」,否则用 `DEFAULT_OUTFIT_PROMPT` 建「默认」。
|
||||
- 新函数 `load_outfit_prompts()` / `save_outfit_prompts(list)`(沿用 utf-8-sig 读、无 BOM 写、损坏回退「默认」那套的约定)。
|
||||
|
||||
**界面**(「通用话术」组,套印花页范式)
|
||||
|
||||
- 编辑框**上方一行**:模板下拉 +「新建」「另存为」「重命名」「删除」。
|
||||
- 编辑框**下方**:保留「插入标题」「保存」。
|
||||
- 左栏约 360px,5 个模板按钮偏多 → 实现时可排两行或用紧凑小按钮。
|
||||
|
||||
**行为**
|
||||
|
||||
- **切换 / 重命名 / 删除 / 新建 / 另存为之前**:若编辑框与当前套已存文本不同(脏)→ 弹「是否保存当前修改?」(保存 / 不保存 / 取消;取消则下拉还原到原选项)。
|
||||
- 保存=覆盖当前套;另存为=存为新名并选中;重命名=改当前套名;删除=二次确认,删后选邻近,**不可删到 0**。
|
||||
- 名字**唯一**(重名拒绝或自动加序号)。
|
||||
- 记住上次所选;生成/预览用编辑框当前文本(`render_prompt` + §7.1 尾巴不变);「开始生成」前把当前编辑存回所选套(沿用现有自动存逻辑)。
|
||||
|
||||
**解耦**:核心 `render_prompt(text, task, resolution)` 不动;"用哪段文本"由面板的模板选择决定。
|
||||
|
||||
## 8. 并发、限速、重试、停止
|
||||
|
||||
复用旧项目策略(`docs/旧ai穿搭项目.md` §5.3):
|
||||
|
||||
Reference in New Issue
Block a user