Files
cmshoppe/docs/tasks/T-655.md
T

93 lines
5.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
id: T-655
title: 按逐图主图模式生成对应参考图规则提示词
phase: 7
deps: [T-654]
status: DONE
created: 2026-07-17
---
## 问题 / 背景
商品套图提示词设置弹窗的首行需要统一显示“生成目标”,不能继续使用“套图名称”。同时,“每张上传图分别作为主图生成”会改变当前 job 的参考图语义,但现有 `{参考图规则}` 没有根据该开关切换,模型可能无法区分单主图模式和逐图主图模式。
## 目标
让提示词预览、实际生成 job 和保存的 prompt 快照使用与 `per_image_primary` 一致的参考图规则:
- 勾选“每张上传图分别作为主图生成”时,使用逐图主参考图规则。
- 未勾选时,使用第一张上传图作为主商品图、其他图片仅作参考的规则。
- 新默认提示词结构的第一行标签固定为“生成目标:”,不再输出“套图名称:”。
## 方案
### 1. 生成目标首行
- 默认模板和“恢复默认”模板的第一行使用:
```text
生成目标:{生成目标}
```
- 提示词设置弹窗预览和新建 job 必须使用同一个 renderer,不能只改 GUI 显示文字而保留旧的实际请求。
- 已存在的用户旧模板继续遵守 T-654 的兼容策略,不静默覆盖用户文件;用户保存新模板或恢复默认后使用“生成目标”。
### 2. 参考图规则映射
`product_suite_prompt_context()` 根据归一化设置的 `per_image_primary` 生成 `{参考图规则}` 的内容:
- 勾选逐图主图时,变量值必须严格为:
```text
当前上传图片是本任务唯一主参考图;保持商品主体、款式、颜色和关键细节准确;不编造用户与参考图均未提供的信息。
```
- 未勾选逐图主图时,变量值必须严格为:
```text
使用第一張上傳圖作為主商品圖,其餘圖片只作為參考。
```
模板中的“参考图规则:”标签由模板本身负责;变量值不得额外重复该标签或追加旧的序号文字,避免预览与最终请求出现重复内容。
### 3. 规划与快照一致性
- `build_suite_prompt()`、`build_job_specs()` 和提示词弹窗预览都必须把当前 `per_image_primary` 设置传入同一上下文。
- 切换该勾选项后,当前任务的分类数量、逐图展开规则和参考图规则必须使用同一份设置快照;不能出现 job 数量已经切换但提示词仍使用另一模式的情况。
- 每个 job 保存最终渲染后的完整 prompt;生成过程中修改勾选项或模板只影响下一轮,不改写已提交任务。
- 新增规则不改变 T-654 已确定的分类顺序、分类数量、固定分类目标描述、自定义分类名称注入和点数计算。
## 验收要点
- 打开提示词设置并恢复默认后,第一行显示“生成目标:”,新默认预览中不存在“套图名称:”。
- 未勾选逐图主图时,预览和实际新 job 的 `{参考图规则}` 均为“使用第一張上傳圖作為主商品圖,其餘圖片只作為參考。”。
- 勾选逐图主图时,预览和实际新 job 的 `{参考图规则}` 均为“当前上传图片是本任务唯一主参考图;保持商品主体、款式、颜色和关键细节准确;不编造用户与参考图均未提供的信息。”。
- 两种模式下都不出现旧的“序号%d”附加文本,也不重复“参考图规则:”标签。
- 切换模式后,`build_job_specs()` 的逐图展开数量和每个 job 的 prompt 与当前设置一致。
- 预览文本与冻结到 job 的 prompt 完全一致。
- 已有旧模板仍可按 T-654 兼容规则读取;不会因启动或打开弹窗而静默覆盖用户模板。
- 现有商品套图生成、历史记录、导出,以及蝦皮采集和更新流程不回归。
## 文档同步
实现时同步更新:
- `docs/routes.md`:商品套图提示词设置和逐图主图规则。
- `docs/04-architecture.md`:`per_image_primary` 与参考图规则的上下文契约。
- `docs/api.md`:`product_suite_prompt_context()`、`build_suite_prompt()` 和 job prompt 快照说明。
- 本任务文件:执行记录、验证命令和最终状态。
## 边界(不改什么)
- 不修改 cmhub 接口、模型别名、图片下载或并发策略。
- 不改变 T-654 的分类默认数量和固定目标描述。
- 不修改 Shopee/CDP 采集、上传、拖拽和更新逻辑。
- 不静默迁移或覆盖用户已有的自定义提示词模板。
## 执行记录
- 2026-07-17:根据逐图主图开关与参考图规则不一致的问题创建任务,待实现。
- 2026-07-17:完成按 `per_image_primary` 切换参考图规则;变量值不再重复“参考图规则:”标签或追加序号,默认模板继续使用“生成目标”。
- 2026-07-17:同步更新路由、架构和 API 文档,补充单主图/逐图主图的 renderer、job prompt 和预览一致性测试。
- 2026-07-17:验证通过 `python -m ruff check app tests main.py`、`python -m compileall app main.py`、`python -m unittest discover -s tests`,共 580 个测试通过。