--- 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 项)。