From 9de006808e264f21736570f33b3ca5926a1a46d1 Mon Sep 17 00:00:00 2001 From: chengma Date: Thu, 16 Jul 2026 15:31:43 +0800 Subject: [PATCH] docs: align T-637 prompt template with source assembly order - default template line order now follows the researched source project's assembly structure (user-accepted): category goal, index/differentiation, platform context, inline rules, reference rule, item id, user needs, trailing ratio emphasis - forced protection rules become 4 required read-only placeholders (size/long-image, banned content, price, sizing) instead of a code-appended tail block; consistency and no-fabrication fold into the reference-rule rendering - placeholders 13 -> 17, required 8 -> 12; update mockup SVG and README accordingly Co-Authored-By: Claude Fable 5 --- docs/tasks/T-637.md | 50 +++++++++----- docs/ui/README.md | 2 +- docs/ui/tab6-suite-prompt-dialog-T637.svg | 79 ++++++++++++----------- 3 files changed, 76 insertions(+), 55 deletions(-) diff --git a/docs/tasks/T-637.md b/docs/tasks/T-637.md index 6a3afc0..f87d5d5 100644 --- a/docs/tasks/T-637.md +++ b/docs/tasks/T-637.md @@ -28,7 +28,7 @@ created: 2026-07-16 3. 通过受控占位符菜单在光标处插入变量,编辑后实时刷新预览;未知或缺失必需占位符时不能保存。 4. 提示词预览与真实套图生成调用同一个纯逻辑渲染函数,保证所见即所提交。 5. 内置默认模板随安装包发布,用户模板保存到 `data/`;恢复默认不会依赖网络,也不会覆盖其他提示词。 -6. 价格、尺码、虚构参数、商品一致性等强制规则由代码追加,用户不能在模板编辑器中删除。 +6. 尺寸与长图、禁用内容、价格、尺码等强制规则由代码渲染为**必需只读占位符**内联在模板中(位置对齐调研笔记的组装顺序),用户可移动位置但不能修改内容或删除;商品一致性与不编造约束并入 `{参考图规则}` 渲染文本。 ## 实现方案 @@ -83,33 +83,44 @@ created: 2026-07-16 {差异化要求} {参考图规则} {商品卖点与要求} + {尺寸与长图规则} + {禁用内容规则} + {价格信息规则} + {尺码信息规则} ``` -- `{分类要求}`、`{套图分类}`、`{图片比例}`、`{分类序号}`、`{分类总数}`、`{差异化要求}`、`{参考图规则}`、`{商品卖点与要求}`为必需占位符;缺失时预览区显示中文校验结果,「保存」禁用。 +- `{分类要求}`、`{套图分类}`、`{图片比例}`、`{分类序号}`、`{分类总数}`、`{差异化要求}`、`{参考图规则}`、`{商品卖点与要求}`、`{尺寸与长图规则}`、`{禁用内容规则}`、`{价格信息规则}`、`{尺码信息规则}`为必需占位符;缺失时预览区显示中文校验结果,「保存」禁用。 - `{套图分类}`列为必需是因为固定分类的说明文案不保证包含分类名,删掉后最终提示词可能丢失分类信息。 - `{分类序号}`、`{分类总数}`和 `{差异化要求}`列为必需,用于保证同一分类配置多张时最终提示词具有明确序号和差异化约束;分类总数为 1 时 `{差异化要求}`可以渲染为空,但模板中仍必须保留该占位符,防止以后把数量调大时退化为完全相同的提示词。 - `{差异化要求}`每一次出现都必须独占一行(所在行去除首尾空白后只剩该占位符),否则校验失败、「保存」禁用。重复出现时必须逐个校验,不能只检查第一次。这保证渲染为空时可整行定点删除,不会产生「要求:。」之类的内联残句。 +- `{尺寸与长图规则}`、`{禁用内容规则}`、`{价格信息规则}`、`{尺码信息规则}`为**只读规则占位符**:渲染文本由业务常量提供且可能为多行,同样必须独占一行;用户可在模板中调整其位置,但不能修改渲染内容。 - 未知占位符、未闭合花括号和渲染后仍残留的占位符都视为错误,不得静默原样发送给模型。 - 重复使用合法占位符允许保存;第一版模板**不支持字面花括号**,任何非合法占位符形式的花括号一律校验报错,不定义转义规则,也不做字符串猜测。 - 占位符替换必须使用结构化上下文字典和统一 renderer,不允许在 GUI 中连续手写 `.replace()` 拼接另一套规则。 ### 4. 默认模板和分类要求 -- 新增安装包内置默认模板,例如 `app/default_prompts/product_suite/base.txt`,结构参考已完成的外部源码调研,但按 cmshopee 当前字段和单参考图事实收口: +- 新增安装包内置默认模板,例如 `app/default_prompts/product_suite/base.txt`。行序对齐调研笔记《虾皮圈电商图生成器提示词组装分析》第三节的组装顺序(分类目标 → 分类序号与差异化 → 平台上下文 → 尺寸/禁用/价格/尺码规则 → 参考图规则 → 商品ID → 用户需求 → 末行比例强调),该结构已被用户验证接受;同时按 cmshopee 当前字段和单参考图事实收口: ```text {分类要求} - 平台:{平台};国家地区:{国家地区};输出语言:{输出语言}。 - 图片比例:{图片比例}。 套图分类:{套图分类};当前为本分类第 {分类序号}/{分类总数} 张。 - 当前主参考图序号:{主参考图序号}。 - {参考图规则} {差异化要求} + 平台:{平台};国家地区:{国家地区};输出语言:{输出语言}。 + {尺寸与长图规则} + {禁用内容规则} + {价格信息规则} + {尺码信息规则} + {参考图规则} 商品ID:{商品ID} 商品卖点与要求: {商品卖点与要求} + 本次生成比例:{图片比例}。请严格按此比例输出,不能改成其他长宽比。 ``` +- 与调研笔记源结构一致,比例强调保留在末行(源项目由 worker 二次追加,本版直接写进默认模板,`{图片比例}`为必需占位符保证不丢)。 +- `{主参考图序号}`保留为合法可插入变量,但默认模板不再单列一行;参考图序号信息由 `{参考图规则}` 渲染文本带出。 + - 将当前仅存在于 GUI 的固定分类说明迁移或集中到业务层,渲染为 `{分类要求}`;GUI 通过同一来源显示说明,不能复制另一份字典。 - 自定义分类的 `{分类要求}`必须明确包含自定义分类名称,例如「生成商品套图中的『使用方法图』,按照该分类名称表达用途」,不能使用不含分类名的泛化文案。 - `{差异化要求}`至少包含分类内序号和“与本分类其他图片采用不同构图、角度或场景”的约束。若第一版没有可靠的商品语义,不自动编造具体卖点、参数或使用场景。 @@ -119,13 +130,15 @@ created: 2026-07-16 ### 5. 强制保护规则 -- 以下规则不得放入可删除的用户模板中,由业务 renderer 在模板渲染完成后统一追加: - - 保持商品主体、款式、颜色和关键细节准确; - - 不添加无依据的功能、参数、认证、价格、折扣或尺码; - - 用户和参考图均未提供的信息不得自行编造; - - 项目既有的其他内容安全约束。 -- 右侧预览必须显示「用户模板渲染结果 + 强制保护规则」的完整最终文本,让用户看到真实提交内容。 -- 强制规则应作为业务常量或只读内置资源集中维护,不得分别散落在弹窗、worker 和 `build_suite_prompt()`。 +- 为对齐调研笔记的组装顺序(规则内联在平台上下文与用户需求之间,而非文末追加),强制规则以**必需只读占位符**呈现,渲染文本由业务常量提供: + - `{尺寸与长图规则}`:最终输出必须严格符合所选比例的单张完整构图电商图,禁止海报长图、详情页长图和多宫格拼接版面。cmhub 尺寸参数已锁定画布比例,此规则真正防的是模型在正确画布内画出详情页式拼接构图; + - `{禁用内容规则}`:禁止国旗、旗帜、国徽、地图轮廓、政治符号或类似国家/地区标识(台湾站高风险项,随包默认启用); + - `{价格信息规则}`:除非用户明确提供价格、折扣或活动价,禁止自行添加价格、币别符号、折扣数字或促销金额; + - `{尺码信息规则}`:除非用户或参考图明确提供尺码、尺寸或规格,禁止自行编造尺码、尺寸、适用身高体重等内容。 +- 商品主体一致性与不编造约束并入 `{参考图规则}` 的渲染文本:当前图片为本任务唯一主参考图;保持商品主体、款式、颜色和关键细节准确;不编造用户与参考图均未提供的信息。 +- 用户可以在模板中移动规则占位符的位置,但不能修改渲染内容;删除任何一个都会校验失败、「保存」禁用,因此保护规则始终出现在最终提示词中。 +- 右侧预览显示规则占位符展开后的完整最终文本,让用户看到真实提交内容;本版**不再有文末统一追加环节**。 +- 规则文本应作为业务常量或只读内置资源集中维护,不得分别散落在弹窗、worker 和 `build_suite_prompt()`。 ### 6. 持久化、初始化与恢复 @@ -169,12 +182,13 @@ created: 2026-07-16 - [ ] 当前商品数据完整时,预览正确替换平台、地区、语言、比例、商品 ID 和商品卖点;主参考图序号默认为 1,分类序号使用步进器值,分类总数使用 `max(1, 当前分类配置数量)`。 - [ ] 当前预览分类数量为 0 或 1 时显示第 1/1 张且步进器禁用,不出现第 1/0 张;数量大于 1 时可切换预览第 1 至第 N 张。 - [ ] 临时草稿预览使用 `未绑定商品` 或等价中文值,不显示内部 `draft_` 标识。 -- [ ] 删除任一必需占位符(含分类序号、分类总数和差异化要求)、输入未知变量、花括号未闭合、`{差异化要求}`未独占一行或渲染残留变量时不能保存,并显示中文校验错误。 +- [ ] 删除任一必需占位符(含分类序号、分类总数、差异化要求和四个规则占位符)、输入未知变量、花括号未闭合、`{差异化要求}`或规则占位符未独占一行、渲染残留变量时不能保存,并显示中文校验错误。 - [ ] 固定分类说明实际进入提示词;自定义分类提示词明确包含自定义分类名称。 - [ ] 同一分类多张任务的最终提示词包含各自序号/总数和差异化要求,不再完全相同。 - [ ] 分类总数为 1 时,该分类最终提示词不含差异化残句;仅删除空的差异化占位符所在行,用户主动保留的其他段落空行不变。 - [ ] 参考图规则与实际单个 `source_asset_id` 一致,不声称未提交图片参与参考。 -- [ ] 强制商品一致性、禁止虚构参数/价格/尺码等规则始终出现在最终预览和真实请求中,用户不能从编辑器删除。 +- [ ] 尺寸与长图(禁多宫格拼接)、禁用内容(政治符号)、价格、尺码四条规则和参考图规则携带的商品一致性/不编造约束始终出现在最终预览和真实请求中;规则占位符内容不可编辑,删除任一都无法保存。 +- [ ] 默认模板行序与《虾皮圈电商图生成器提示词组装分析》第三节组装顺序一致:分类目标在首行,规则内联在平台行与参考图规则之间,末行为比例强调。 - [ ] 保存后关闭并重启程序仍加载用户模板;已有用户模板不会被启动初始化或软件升级覆盖。 - [ ] 「恢复默认」经确认后通过统一原子写入服务立即落盘,并刷新编辑区和预览;关闭弹窗不再提示该次恢复为未保存修改,且只影响商品套图模板。 - [ ] 「恢复默认」写盘前校验内置模板;内置模板无效时显示中文错误、不写盘、不改动用户模板和编辑区。 @@ -189,7 +203,8 @@ created: 2026-07-16 ## 测试要求 -- 新增纯逻辑测试覆盖全部合法占位符、必需变量(含 `{套图分类}`、`{分类序号}`、`{分类总数}`、`{差异化要求}`)、未知变量、未闭合/字面花括号报错、任一 `{差异化要求}`未独占一行报错、重复变量、强制规则追加和 Unicode 文本。 +- 新增纯逻辑测试覆盖全部合法占位符、必需变量(含 `{套图分类}`、`{分类序号}`、`{分类总数}`、`{差异化要求}`和四个规则占位符)、未知变量、未闭合/字面花括号报错、任一 `{差异化要求}`或规则占位符未独占一行报错、重复变量、规则占位符只读渲染和 Unicode 文本。 +- 断言最终 prompt 包含禁政治符号与禁多宫格拼接文本,且默认模板渲染结果的行序与调研笔记组装顺序一致、末行为比例强调。 - 覆盖白底图、其他固定分类、自定义分类、正式商品、临时草稿、分类多张、分类数量为 0/1 的预览退化、分类总数为 1 的差异化退化与定点空行删除,以及单参考图 context。 - 覆盖用户模板首次初始化、不覆盖已有文件、原子保存失败保持原文件、保存和恢复默认共用写入服务、恢复成功更新已保存基线、内置模板无效时恢复默认报错且不写盘。 - 覆盖首次初始化时内置模板缺失、不可读、缺少必需变量或包含非法占位符,断言不创建用户文件、显示中文错误且生成前中止。 @@ -231,5 +246,6 @@ git diff --check - 2026-07-16 补:按全栈评审调整规格——`{套图分类}`升为必需占位符;第一版禁止字面花括号(不做转义规则);曾提出「恢复默认」只回填编辑区及预览序号固定值方案,相关两项已被后续补充覆盖;分类总数为 1 时差异化要求退化为空;补充纯逻辑先行的推进顺序建议。 - 2026-07-16 补:修正评审后仍存在的契约缺口——分类序号/总数/差异化要求升为必需变量;预览总数最小为 1,并增加分类内序号步进器;「恢复默认」改为复用统一原子写入服务立即落盘;补充无效用户模板的加载校验和生成前阻断;空行处理限定为只删除空的差异化占位符所在行。 - 2026-07-16 补:封堵两处剩余小洞——「恢复默认」写盘前先校验内置模板,校验失败报错不写盘(防打包缺陷/资源损坏写入坏模板);`{差异化要求}`必须独占一行,校验层强制,杜绝渲染为空时的内联残句。 +- 2026-07-16 补:按用户要求把默认模板行序对齐 obsidian《虾皮圈电商图生成器提示词组装分析》第三节的组装顺序(用户接受的结构)——强制规则从「文末代码追加」改为四个必需只读占位符(尺寸与长图/禁用内容/价格/尺码)内联在平台行与参考图规则之间;比例强调移至末行;商品一致性与不编造并入 `{参考图规则}` 渲染文本;占位符总数 13→17,必需 8→12。 - 2026-07-16 补:补齐首次初始化和重复占位符语义——内置模板首次复制前同样必须校验,失败时不创建用户文件并阻断生成;重复 `{差异化要求}`的每次出现都必须独占一行,总数为 1 时定点删除全部对应行;历史执行记录标注已被后续结论覆盖。 - 待实现。 diff --git a/docs/ui/README.md b/docs/ui/README.md index 9d00712..63f7844 100644 --- a/docs/ui/README.md +++ b/docs/ui/README.md @@ -15,6 +15,6 @@ | [tab6-image-studio-v2.svg](tab6-image-studio-v2.svg) | ⑥ 图片精修(提案·重排):细图标轨、照片池放大、提示词中心整列、全宽出片盘 | | [tab6-ai-studio-v3.svg](tab6-ai-studio-v3.svg) | ⑥ AI工场(需求定稿·v3):合并提示词、完整模板 CRUD、异步任务照片池、部分导出与终选排序 | | [tab6-suite-package-v1.svg](tab6-suite-package-v1.svg) | ⑥ 商品套图(T-622 已实现):从「虾皮圈电商图生成器」商品套餐交互迁移并替换主界面 AI工场入口;单一套图类型,多任务标签,商品原图,平台/国家/语言/比例,AI 帮写,白底/场景/卖点及自定义分类,结果历史、重试、删除撤销与生成进度 | -| [tab6-suite-prompt-dialog-T637.svg](tab6-suite-prompt-dialog-T637.svg) | ⑥ 商品套图(T-637 提案):标题行「AI帮写/取消」紧随 label、最右新增「提示词设置」;提示词设置弹窗——左编辑基础模板(插入变量菜单、占位符校验)、右只读实时最终预览(预览分类下拉+分类内序号步进器、强制保护规则块)、保存/恢复默认共用原子写盘 | +| [tab6-suite-prompt-dialog-T637.svg](tab6-suite-prompt-dialog-T637.svg) | ⑥ 商品套图(T-637 提案):标题行「AI帮写/取消」紧随 label、最右新增「提示词设置」;提示词设置弹窗——左编辑基础模板(行序对齐调研笔记组装顺序,插入变量菜单、占位符校验、只读规则占位符内联)、右只读实时最终预览(预览分类下拉+分类内序号步进器)、保存/恢复默认共用原子写盘 | > 仅为线框效果图,最终样式以实现为准。带 `-T584`/`-v2` 等后缀的为**改版提案**,未定稿。界面职责与流程见 [../routes.md](../routes.md)。 diff --git a/docs/ui/tab6-suite-prompt-dialog-T637.svg b/docs/ui/tab6-suite-prompt-dialog-T637.svg index 930854e..b85f428 100644 --- a/docs/ui/tab6-suite-prompt-dialog-T637.svg +++ b/docs/ui/tab6-suite-prompt-dialog-T637.svg @@ -1,5 +1,5 @@ - + @@ -58,22 +58,25 @@ 2 / 2 张 ▶ - + 基础模板(可编辑) 插入变量 ▾ {分类要求} - 平台:{平台};国家地区:{国家地区};输出语言:{输出语言}。 - 图片比例:{图片比例}。 - 套图分类:{套图分类};当前为本分类第 {分类序号}/{分类总数} 张。 - 当前主参考图序号:{主参考图序号}。 - {参考图规则} - {差异化要求} - 商品ID:{商品ID} - 商品卖点与要求: - {商品卖点与要求} - ✓ 校验通过:必需变量齐全 · 无未知变量 · 差异化要求独占一行 - 校验失败(缺必需变量/未知变量/未闭合花括号)→ 中文错误,「保存」禁用 + 套图分类:{套图分类};本分类第 {分类序号}/{分类总数} 张。 + {差异化要求} + 平台:{平台};国家地区:{国家地区};输出语言:{输出语言}。 + {尺寸与长图规则} + {禁用内容规则} + {价格信息规则} + {尺码信息规则} + {参考图规则} + 商品ID:{商品ID} + 商品卖点与要求: + {商品卖点与要求} + 本次生成比例:{图片比例}。请严格按此比例输出。 + ✓ 校验通过:12 个必需变量齐全 · 无未知变量 + 蓝=可编辑变量 · 琥珀=只读规则(内容代码维护,可移位、不可改删) @@ -81,36 +84,38 @@ {分类要求}必需 {套图分类}必需 - {图片比例}必需 - {分类序号}必需 - {分类总数}必需 - {差异化要求}必需 - {参考图规则}必需 + {分类序号}必需 + {差异化要求}必需 + {尺寸与长图规则}只读 + {禁用内容规则}只读 + {参考图规则}必需 {商品卖点与要求}必需 - … 共 13 个变量 · 插入到光标处 + … 共 17 个变量 · 插入到光标处 - + 最终提示词预览(只读) 实时刷新 · 200ms 防抖 - 场景图:在真实使用场景中展示商品效果 - 平台:Shopee;国家地区:中国台湾;输出语言:繁体中文。 - 图片比例:1:1。 - 套图分类:场景图;当前为本分类第 2/2 张。 - 当前主参考图序号:1。 - 当前图片为本任务唯一主参考图。 - 本分类第 2 张:与本分类其他图片采用不同构图、角度或场景。 - 商品ID:51100639510 - 商品卖点与要求: - 韩版加绒卫衣,显瘦保暖,通勤日常皆宜。 - - 🔒 强制保护规则(代码追加 · 编辑器不可删除) - 保持商品主体、款式、颜色和关键细节准确; - 不添加无依据的功能、参数、认证、价格、折扣或尺码; - 不编造用户与参考图均未提供的信息。 + 场景图:在真实使用场景中展示商品效果 + 套图分类:场景图;本分类第 2/2 张。 + 本分类第 2 张:与本分类其他图片采用不同构图、角度或场景。 + 平台:Shopee;国家地区:中国台湾;输出语言:繁体中文。 + + 🔒 只读 + 最终输出严格符合所选比例的单张完整构图电商图, + 禁止海报长图、详情页长图和多宫格拼接版面。 + 禁止出现国旗、国徽、地图轮廓及政治符号。 + 未提供价格时,禁止添加价格、币别、折扣或促销金额。 + 未提供尺码时,禁止编造尺码、尺寸或规格信息。 + 当前图片为本任务唯一主参考图;保持商品主体、款式、 + 颜色和关键细节准确,不编造未提供的信息。 + 商品ID:51100639510 + 商品卖点与要求: + 韩版加绒卫衣,显瘦保暖,通勤日常皆宜。 + 本次生成比例:1:1。请严格按此比例输出,不能改成其他长宽比。 与新建 job 落库的最终 prompt 完全一致 · 预览不产生 cmhub 请求/点数 @@ -119,5 +124,5 @@ 默认预览白底图;本图已切至场景图第 2 张核对差异化 - 预览序号:主参考图序号=1,分类序号=步进器值,分类总数=max(1, 分类配置数量);分类数量 0/1 时步进器禁用并显示 1/1 + 模板行序对齐《虾皮圈电商图生成器提示词组装分析》组装顺序;规则占位符只读内联;分类数量 0/1 时步进器禁用并显示 1/1