--- id: T-590 title: AI工场托管模式多图异步生成编排与重启续查 phase: 7 deps: [T-586, T-564] status: TODO created: 2026-07-11 --- ## 问题 / 背景 AI工场一次可生成 N 张,且每张都要独立计费、失败、重试、停止和续查。T-564 只为普通 tasks 表的一张封面保存一组 task_id/key,不能承载同商品多轮、多源图、多候选任务,需要把 cmhub submit/poll/download 能力复用到 image_studio_jobs。 ## 方案 - 抽取可复用的 cmhub 异步生图客户端/服务,以持久化回调或 job repository 注入 task key/id;既有②路径行为保持兼容。 - 对同一源 asset 和同一完整提示词创建 N 条 job:一次调用一张,不按行拆词、不自动补动作、不保证去重。 - 每条 job 在 submit 前落稳定 key,202 后立即落 task_id;poll 成功下载校验后创建 generated asset,记录 main/detail、比例、父 asset、提示词和计费元数据。 - 并发沿用当前最大 5 的 submit+poll/下载双池保护;逐条事件回调供 GUI 显示。 - 停止不删除已提交任务:未开始 job 取消,已提交 job 停止等待并保留 task_id,下次继续查询。 - 本任务只实现 cmhub 托管来源;`generation_source/provider` 固定写入 `cmhub`,只作为状态自描述和后续兼容字段。本轮不展示或实现来源切换,自定义模型后置到 T-596。 ## 验收要点 - N=3 产生 3 个不同 job/key/task,使用完全相同 prompt/source;每个成功独立进池。 - submit 响应后、poll 前 task_id 已落库;重启续查不再次 POST、不重复扣点。 - 单张失败不回滚成功图;下载失败不重新提交生成。 - 停止、总预算超时、服务端 failed/expired、幂等冲突和点数不足生命周期正确。 - 计费事件按 job 记录;全程不阻塞 GUI 主线程。 - 既有② AI生成 T-564 路径全量测试不回归。 ## 边界(不改什么) - 不做 BYOK、自定义 Provider、API Key、来源切换、自动去重或自动重生成。 - 不做 GUI、终选、导出、CDP 或蝦皮写操作。 - 不改变 cmhub 单次调用一张、预扣/失败退点契约。 ## 执行记录 (完成后记录抽取边界、任务生命周期和回归测试。)