对 T-678 细化与 T-679a/b/c 拆分的全栈复核结果: T-678:修正背景中不准确的收敛理由。api_type 在 app/ai.py 只有 :348、 :350 两处使用且都在图片路径内,文字路径从不读取该字段;不能全局收敛 的真实原因是 appconfig.py:881 对所有模型统一校验,收窄取值集合会让 存量文字模型在载入与保存时抛 ConfigError。方案首条同步改为按校验口径 表述,避免实现时去找不存在的文字侧分支。 T-679a/b/c:三处补加发布门禁,说明三者未全部完成前不得发布。拆分只为 控制改动面,不构成可独立发布的中间态——重复计费的二次确认定义在 T-679c,若 a/b 先上线,用户已能创建并失败 direct 任务却在无提示情况下 重试,属资金口径缺口而非体验缺陷。 T-679a:补记本任务组有意放宽 T-677「不给商品套图新增自定义网关路径」 的边界及理由(套图是来源切换后唯一完全断链的模块,图片理解不在放宽 范围内),避免后续回看误判两者矛盾。 T-679a:比例近似映射改为同时记录用户选择的比例与实际输出尺寸。原方案 只存原始比例会让 DB 记 9:16 而文件实际为 1024x1536;当前 add_asset 的 aspect_ratio 只写入无消费者(app/image_studio.py:707-731)故暂不可见, 但历史展示或导出一旦信任该字段即出错。新增字段迁移须附加式且幂等。 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
3.2 KiB
3.2 KiB
id, title, phase, deps, status, created
| id | title | phase | deps | status | created | ||
|---|---|---|---|---|---|---|---|
| T-679c | 商品套图多来源恢复、重试与历史展示 | 7 |
|
TODO | 2026-07-20 |
T-679c 商品套图多来源恢复、重试与历史展示
问题 / 背景
发布门禁:T-679a、T-679b、T-679c 未全部完成前不得发布。 本任务承载 direct 重试的重复计费二次确认,是该门禁的主要原因——缺它则用户可在无提示的情况下重复付费重试(详见 T-679a 背景)。
默认网关异步任务可凭 task_id 继续查询;自定义网关同步请求无法在程序中断后确认远端状态。两类 job 在同一项目中并存时,错误的“恢复”或自动重试会造成重复计费、错误轮询或用户误判结果。
方案
- 「继续查询已提交图片」仅列出并执行
generation_source=cmhub、provider=cmhub且存在task_id的 job;无 task ID 的 direct job 永不出现在该入口。 - direct 失败卡片只提供“重新生成”,点击后必须再次经过 T-679b 的确认流程,并明确提示“服务商可能对上次未确认请求已计费,本次可能再次收费”。不得后台自动重试或直接复用旧 job。
- 项目载入、历史弹窗和结果卡片以中文显示来源“默认网关 / 自定义网关”;来源是历史事实,切换⑤设置后不得改写。
- 运行中的 direct job 因程序中断被标失败后,历史中保留失败记录和可手动重试入口;不得清除或伪装成已取消。
- 默认网关历史、导出、删除撤销和继续查询维持原有行为;混合来源时每个入口严格按来源过滤。
验收要点
- 继续查询入口只恢复有 cmhub task ID 的默认网关 job;切换来源后仍能恢复旧任务。
- direct 失败重试必须二次确认,并显示可能重复计费提示;不会自动提交。
- 历史与结果卡片准确显示中文来源,且不会暴露 URL、模型、密钥或上游原始错误。
- 同一项目混合来源的历史、导出、删除和重试不会串路。
- 默认网关的历史生成、导出本轮、继续查询、删除撤销不回归。
测试与文档
tests/test_product_suite_gui.py、tests/test_image_studio_generation.py:来源过滤、直连失败二次确认、程序中断记录、混合项目历史和默认任务恢复。- 更新
docs/04-architecture.md、docs/routes.md、docs/ui/对应说明。
验证
py -3.10 -m unittest tests.test_product_suite_gui tests.test_image_studio_generation tests.test_gui
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 的新建任务预检和确认内容。
- 不新增自动恢复、自动重试、provider 私有适配或图片理解直连路径。
- 不改 cmhub 协议、Chrome/CDP、Excel 或蝦皮更新。
关联
- T-679a:同步 direct job 状态语义。
- T-679b:生成确认和用户提示。
- T-679:完成本任务后的集成验收。
执行记录
(做完在这里写:变更文件、恢复与重试决策、验证命令及结果。)