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

85 lines
6.5 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-647
title: 商品套图AI帮写改为同商品多图联合分析
phase: 7
deps: [T-645]
status: DONE
created: 2026-07-17
---
## 问题 / 背景
⑥「商品套图」的「AI帮写」已通过 `vision_alias` 将当前商品项目中可用的本地原图按 `source_order` 取前8张,一次提交给 cmhub 图片理解接口。当前固定提示词虽然要求从图片提炼卖点,但没有明确“这些图片属于同一个商品 ID 的多角度/细节/展示图”,部分模型会按输入顺序返回“1、……;2、……;3、……”的逐图描述。
逐图清单不适合直接写入「商品卖点与要求」:后续白底图、场景图和卖点图需要的是一份统一、可编辑、可复用的商品事实与套图画面要求,而非每张原图的独立说明。用户需要模型把多张同商品原图作为同一证据集联合理解,输出一份套图分析结果。
## 方案
### 1. 固定提示词改为多图联合分析契约
修改 `app/ai.py` 中商品套图图片理解提示词的组装逻辑(当前 `_compose_product_suite_vision_prompt()`):
- 明确说明本次传入的图片均属于当前同一商品 ID,可能包含主视图、多角度、细节、包装、场景或不同展示图;模型必须综合全部图片后作出一份统一判断;
- 明确禁止输出“图1/图2/第N张”或按图片编号逐条罗列的理解结果,也不要逐图复述;
- 保持当前“只采信图片可见事实、已有要求只作补充约束、不得编造材质/尺寸/功能/认证/价格/物流”等安全事实边界;
- 当图片确有可见的颜色、款式、配件、包装或规格差异时,输出为“可见差异或待确认项”,不能把冲突信息强行合并为一个确定事实;不能凭图片顺序猜测主款、附赠品或变体关系;
- 输出必须是可直接回填到「商品卖点与要求」的中文纯文本,使用稳定分段结构:
```text
商品概述:
可确认卖点:
适用人群与场景:
套图画面要求:
待确认或避免编造的信息:
```
- 输出语言继续服从当前任务设置;不要求 JSON、Markdown 表格、图片编号、接口字段或模型解释过程,避免给现有可编辑文本框引入解析/迁移需求。
### 2. 保持现有提交范围与调用边界
- 继续只读取当前 `SuiteTaskState` 对应商品项目的可用本地原图,按 `source_order` 顺序取前8张;商品原图勾选状态仍不参与本任务,超过8张继续给出既有中文提示;
- 继续使用一次 `POST /api/v1/analyze/images` 请求中的 `images` 数组发送这些图片,不拆成逐图请求、不增加并发、不改变 `vision_alias`、超时、点数或重试语义;
- 当前「商品卖点与要求」已有内容继续以“补充约束”进入上下文,模型返回文本仍复用既有用户编辑冲突确认和自动保存逻辑;
- 不把完整提示词、图片路径、base64、接口 URL、Key 或上游原始响应显示给用户或持久化到 SQLite。
### 3. 测试与文档
- `tests/test_ai.py`:断言多图图片理解请求仍是一条请求、`images` 保持有序,并且发送的 `prompt` 包含同商品联合分析、禁止逐图编号、统一输出分段、可见差异和避免编造的契约;
- `tests/test_product_suite_gui.py`:覆盖当前商品项目取前8张的顺序与提示不回归,并确认原图勾选状态不改变 AI帮写的输入图片集合;
- 同步更新 `docs/04-architecture.md`、`docs/api.md`、`docs/routes.md`,明确多图 AI帮写输出的是商品级联合分析,而不是逐图识别结果;
- 运行:
```bash
py -3.10 -m unittest tests.test_ai tests.test_product_suite_gui tests.test_workers
py -3.10 -m unittest discover -s tests
py -3.10 -m ruff check app tests main.py
py -3.10 -m compileall app main.py
git diff --check
```
## 验收要点
- [ ] 当前商品项目的多张原图仍以一次图片理解请求提交,数量、大小、顺序和 `vision_alias` 规则不变。
- [ ] 图片理解提示词明确这些图属于同一个商品的多角度/细节/展示证据集,要求综合分析。
- [ ] 返回文本不应要求或鼓励“图1、图2、图3”逐图描述,而是输出一份商品级套图分析。
- [ ] 返回内容包含商品概述、可确认卖点、适用人群与场景、套图画面要求、待确认或避免编造的信息五个稳定分段。
- [ ] 图片存在可见差异时,结果说明差异或待确认项,不虚构统一规格、不按图片编号猜测关系。
- [ ] 用户已有卖点仍是补充约束;请求期间编辑文本的确认覆盖、取消、超时、计费、中文脱敏提示均不回归。
- [ ] 不影响②AI生成、⑥正式套图生图、生成轮次/历史、Shopee CDP、采集、更新或账号管理。
## 边界(不改什么)
- 不增加“按勾选原图识图”、逐图识图、图片对比、自动筛图或多轮汇总功能。
- 不修改 cmhub API、`vision_alias` 配置、请求图片数量/大小限制、超时、网络重试、点数或模型选择。
- 不让模型输出 JSON 或强制结构化解析,不改「商品卖点与要求」的数据库字段或自动保存机制。
- 不修改⑥正式生图提示词模板、分类/数量、job、轮次、历史、终选或导出逻辑。
- 不修改 Shopee CDP、商品采集、②AI生成、③更新蝦皮、账号管理或设置模块。
## 执行记录
- 2026-07-17:根据多原图同商品联合分析需求创建任务。待实现。
- 2026-07-17:更新 `ai._compose_product_suite_vision_prompt()`,将同一商品项目的多张原图明确为联合证据集,禁止图号式逐图输出;要求按任务语言输出商品概述、可确认卖点、适用人群与场景、套图画面要求、待确认或避免编造的信息五个独立段落,并保留可见差异和禁止编造约束。
- 2026-07-17:补充图片理解请求的一次请求、联合提示词契约测试;扩展商品套图 GUI 回归测试,确认即使原图勾选状态只选中其他图片,AI帮写仍按 `source_order` 使用前8张可用本地图。
- 2026-07-17:同步更新 `docs/04-architecture.md`、`docs/api.md`、`docs/routes.md` 的同商品多图联合理解语义。
- 验证通过:`py -3.10 -m unittest tests.test_ai tests.test_product_suite_gui tests.test_workers`(114 项)、`py -3.10 -m unittest discover -s tests`(568 项)、`py -3.10 -m ruff check app tests main.py`、`py -3.10 -m compileall app main.py`、`git diff --check`。