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

67 lines
4.3 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-679
title: 商品套图接入自定义网关(集成验收)
phase: 7
deps: [T-679a, T-679b, T-679c]
status: DONE
created: 2026-07-20
---
# T-679 商品套图接入自定义网关(集成验收)
## 问题 / 背景
商品套图从只支持默认网关扩展为支持自定义网关,涉及持久化 job 来源、同步请求、停止与失败语义、生成确认、历史与已提交默认网关任务恢复。原任务同时修改这些层次,风险和验收面过大,现拆为 T-679a、T-679b、T-679c;本任务只负责三项完成后的跨层集成验收。
**发布门禁:T-679a、T-679b、T-679c 与本任务 T-679 均为 `DONE` 前不得发布。** 前三项保证实现完整,本任务保证两来源混合、切换⑤设置和恢复旧默认网关任务的跨层回归已经实际验证;任一项缺失都不是可发布的中间态。
## 集成要求
- 默认网关任务继续使用 `generation_source="cmhub"`、`provider="cmhub"`、异步 task ID、轮询、幂等键和点数账本。
- 自定义网关任务使用 `generation_source="direct"`、`provider="openai_images_edits"`、`task_id=NULL`、同步单图请求;不得进入 cmhub 轮询或恢复流程。
- 同一项目可以同时显示历史 cmhub 与 direct 任务;界面仅显示“默认网关 / 自定义网关”,不显示密钥、完整 URL 或模型名。
- T-678 的图片编辑契约、T-679a 的任务语义、T-679b 的交互预检和 T-679c 的恢复/历史语义必须一致。
## 验收要点
- [ ] 两种来源均可完成各自允许的新建任务;切换⑤设置不会改变已启动 worker 的来源快照。
- [ ] 已提交的默认网关任务在切换到自定义网关后仍可继续查询、下载并保存,绝不二次提交或扣点。
- [ ] 自定义网关不会访问 cmhub 模型、余额、价格、提交或轮询接口;默认网关行为不回归。
- [ ] 直连失败、停止、程序中断、手动重试和历史展示符合 T-679a/T-679c 的语义,用户不会误以为未完成任务可自动恢复。
- [ ] ⑥生成确认、进度、结果卡片和历史页面的来源、比例、费用与主体一致性提示均为中文且一致。
- [ ] ③更新蝦皮、②生成封面、⑥AI 帮写以及默认网关套图全量回归通过。
## 测试与文档
- 跑 T-679a/T-679b/T-679c 的全部验证,再补两来源混合项目、运行中保存⑤设置、切换来源后继续查询旧 cmhub 任务的集成测试。
- 更新 `docs/04-architecture.md`、`docs/routes.md`、`docs/api.md` 与⑥效果图说明。
## 验证
```bash
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
```
## 边界(不改什么)
- 本任务不新增功能;只整合并验证 T-679a/T-679b/T-679c 已定义的能力。
- 不新增图片理解的自定义网关路径,不改 cmhub 协议、Chrome/CDP、Excel 或蝦皮更新流程。
## 关联
- T-678:自定义网关图片编辑协议。
- T-679a:多来源 job 状态机。
- T-679b:商品套图 GUI 与生成确认。
- T-679c:中断恢复、历史与重试。
## 执行记录
- 2026-07-23:按 T-679a/T-679b/T-679c 的来源状态机、生成入口、恢复重试和历史展示逐层核对现有实现;未发现需要修改生产代码的跨层缺陷。
- 新增 worker 集成回归:同一项目保留已提交的 `cmhub/cmhub + task_id` 后启动 direct worker,再模拟用户保存⑤设置切回默认网关;本轮新 job 仍按冻结快照写为 `direct/openai_images_edits` 且不带 task ID,旧默认网关任务仍留在继续查询集合中,两种来源可在同一项目并存。
- 既有回归继续覆盖切到自定义网关后实际轮询、下载旧 cmhub 任务且不重新提交,direct 不调用 cmhub 提交/轮询/价格/余额,混合来源结果卡、项目历史和全局历史按 job 持久化来源显示,以及 direct 失败重复计费确认。
- 更新架构、路由、API 和⑥效果图索引说明,将 T-679 组发布门禁标记为已通过;本任务未改变界面布局,因此复用 T-679b/T-679c 效果图。
- 验证通过:T-679a/b/c 相关定向测试 415 项、`py -3.10 -m unittest discover -s tests`(685 项)、`py -3.10 -m ruff check app tests main.py`、`py -3.10 -m compileall app main.py`、`git diff --check`。