Files

69 lines
5.2 KiB
Markdown
Raw Permalink 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-679b
title: 商品套图自定义网关生成入口与确认交互
phase: 7
deps: [T-679a]
status: DONE
created: 2026-07-20
---
# T-679b 商品套图自定义网关生成入口与确认交互
## 问题 / 背景
**发布门禁:T-679a、T-679b、T-679c 与集成验收 T-679 未全部完成前不得发布**(理由见 T-679a 背景:重复计费提示定义在 T-679c,而跨来源回归由 T-679 覆盖)。
T-677 按安全边界禁用了自定义网关下⑥的新建套图、重试和价格流程。T-679a 提供来源正确的同步执行能力后,GUI 必须只在配置可用时开放入口,并用清晰中文说明主体一致性、比例近似、费用和停止边界。
## 方案
- `ProductSuiteGenerateWorker` 在启动时冻结包含当前来源所需配置的快照;自定义网关允许创建 job,默认网关保留现有路径。新 job 的来源必须由冻结快照决定。
- 自定义网关预检复用 T-678 的图片模型能力检查;未配置、接口类型不符、密钥为空、模型禁用或超时无效时,阻止生成并引导到⑤补齐。
- 自定义网关不请求 cmhub 模型目录、余额、价格或点数预估;确认框显示“自定义网关不计点数,实际费用以服务商为准”。默认网关确认和计费展示不变。
- 生成确认框以实际 job specs 展示:生成数量、主图/参考图规则、逐图模式、所选比例;若 T-679a 返回近似比例,明确显示实际输出尺寸和“接近比例生成”。
- 自定义网关确认框说明“首图作为主要商品参考,参考图效果取决于模型,主体一致性可能弱于默认网关”;该文案不承诺模型必然保留主体。
- 点击停止后,显示“正在停止,等待当前图片返回后结束”;禁用新的提交入口但不冻结整个 GUI,完成后恢复正常状态。
- 生成期间允许切换其他任务、查看日志、历史和已完成图片;当前任务的原图、提示词、比例、分类和生成设置继续锁定,避免用户误以为修改会影响已冻结的 job 快照。
- 结果日志、失败提示只显示中文业务信息和来源名“自定义网关”,不显示完整 URL、模型名、密钥或原始上游正文。
- 「AI 帮写」继续只支持默认网关;自定义网关下置灰并提示中文原因。
## 验收要点
- [ ] 自定义网关配置合格时可创建、确认并启动套图生成;不合格时在提交前阻止。
- [ ] 自定义网关流程不访问 cmhub 价格/余额/模型接口,且不显示“0 点”或过期余额。
- [ ] 确认框完整提示数量、主参考图、参考图、逐图模式、比例映射、费用与主体一致性差异。
- [ ] 停止中的视觉与按钮状态准确;可切换任务、查看日志/历史,但当前任务输入不可编辑,GUI 不会整窗冻结。
- [ ] 默认网关确认、价格、余额、AI 帮写和原有套图生成不回归。
## 测试与文档
- `tests/test_product_suite_gui.py`、`tests/test_gui.py`:两来源入口、预检、确认文案、近似比例、停止状态、无 cmhub 价格请求、AI 帮写边界。
- 更新 `docs/ui/` ⑥效果图及 `docs/ui/README.md`,同步 `docs/routes.md`。
## 验证
```bash
py -3.10 -m unittest tests.test_product_suite_gui tests.test_gui tests.test_workers
py -3.10 -m ruff check app tests main.py
py -3.10 -m compileall app main.py
git diff --check
```
## 边界(不改什么)
- 不改 T-679a 的 HTTP、job 状态机或恢复数据。
- 不开放自定义网关 AI 帮写,不改 cmhub 协议、Chrome/CDP、Excel 或蝦皮更新。
## 关联
- T-679a:多来源任务状态机。
- T-679c:失败卡片、历史和手动重新生成的后续交互。
## 执行记录
- 自定义网关下的⑥生成入口已开放:创建前只本地校验当前图片模型是否已启用,以及接口类型、网址、模型 ID、密钥和连接超时;不合格时不创建 job,并引导到⑤设置补齐。
- 直连确认不读取 cmhub 模型目录、余额或价格,明确显示生成数量、主图/参考图规则、逐图模式、比例映射与近似比例尺寸,以及“自定义网关不计点数,实际费用以服务商为准”和主体一致性限制。默认网关的价格确认路径不变。
- 生成中锁定当前任务的账号、商品 ID、原图、提示词、提示词设置、比例、分类和拉取入口;其它任务、历史、日志与已完成图片仍可查看。直连停止显示“正在停止,等待当前图片返回后结束”,已返回图片由 T-679a 状态机保存成功。AI帮写仍仅默认网关可用。
- 更新 `docs/routes.md`、`docs/04-architecture.md`、`docs/ui/tab6-suite-gateway-T679b.svg` 与 `docs/ui/README.md`,并新增直连预检、无 cmhub 目录调用、确认文案和停止状态 GUI 测试。
- 验证:`py -3.10 -m unittest discover -s tests -p test_product_suite_gui.py`(62 项)、`py -3.10 -m unittest tests.test_product_suite_gui tests.test_gui`(273 项)、`py -3.10 -m unittest discover -s tests -p test_workers.py`(16 项)、`py -3.10 -m ruff check app tests main.py`、`py -3.10 -m compileall app main.py`、`git diff --check` 均通过;完整 `py -3.10 -m unittest discover -s tests` 通过(649 项)。