diff --git a/docs/11-ai-outfit.md b/docs/11-ai-outfit.md index c625963..e7f39f9 100644 --- a/docs/11-ai-outfit.md +++ b/docs/11-ai-outfit.md @@ -105,6 +105,23 @@ Excel 行 → `OutfitTask` 列表的转换由 `excel_service` 完成;核心只 - 缺标题占位符时开始前弹窗询问是否继续。 - 默认话术方向(穿搭/上身,区别于旧项目的主图场景,需另调):人物上身实穿、保留衣服款式/版型/颜色/印花、合适身材与场景、电商可用、默认纯净不加促销牛皮癣。 +### 7.1 自动附加「批量生成输出要求」 + +最终发给 AI 的提示词 = **用户话术(替换 `{title}` 后)** + **一段自动附加的输出要求**(移植自旧项目 `app/main.py` 的 `render_prompt`)。用户话术框只写创意部分,结构性要求由程序统一拼接,保证每张图都带: + +``` +批量生成输出要求: +- 参考解析度:{resolution} ← 动态,取「分辨率」设置(512/1K/2K/4K) +- 固定 1:1 正方形主图 +- 必须结合商品标题与参考商品图片 +- 服装本身、版型、颜色与图案不可跑版 +``` + +- 仅「参考解析度」动态(= 分辨率设置),其余 3 行固定;**简体文案**(与软件一致)。 +- **始终自动附加**(同旧项目,不做开关)。 +- 由 `core/ai_outfit.render_prompt(template, task, resolution)` 实现:`resolution` 为空时不附加(保持纯函数单测兼容);`generate_outfit_image` 生成时传入当前分辨率。 +- **左栏「最终提示词预览」必须包含这段**(带当前选中分辨率),否则预览与实际发送不一致;分辨率下拉变化时预览同步刷新。 + ## 8. 并发、限速、重试、停止 复用旧项目策略(`docs/旧ai穿搭项目.md` §5.3): diff --git a/tasks.md b/tasks.md index 19604d1..a96b17d 100644 --- a/tasks.md +++ b/tasks.md @@ -1080,3 +1080,14 @@ - [ ] 真实中转 API + 小批量 Excel 端到端跑通,调穿搭提示词 - [ ] 验收对照 `docs/11` §16 + +### 19.6 提示词自动附加「批量生成输出要求」— docs/11 §7.1 + +前置阅读:`docs/11-ai-outfit.md`(§7.1) + +背景:旧项目最终提示词 = 用户话术 + 自动附加的输出要求(参考解析度 / 固定 1:1 / 结合标题与参考图 / 不可跑版);当前 cmbot 的 `render_prompt` 只替换 `{title}`,缺这段。决策:简体文案、始终自动附加(不做开关)。 + +- [ ] `core/ai_outfit.py`:加 `OUTPUT_REQUIREMENTS` 常量 + `build_output_requirements(resolution)`;`render_prompt(template, task, resolution=None)` 在替换占位符后附加该段(`resolution` 为空不加);`generate_outfit_image` 传入当前 resolution +- [ ] `app/widgets/ai_outfit_panel.py`:内嵌预览改用 `render_prompt`(带当前分辨率),分辨率下拉变化时刷新预览,使「预览 = 实际发送」 +- [ ] 单测:带 `resolution` 追加尾巴且内容正确、无 `resolution` 不加;`build_output_requirements` 空/非空(加入 `tests/test_ai_outfit.py`) +- [ ] 同步 `docs/ui-ai-outfit.html` 预览框示例含该段并重渲 `.png`(可选)