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

2.2 KiB

id, title, phase, deps, status, created
id title phase deps status created
T-594 AI工场 cmhub 托管生图故障恢复、计费一致性与运行回归 7
T-590
T-591
TODO 2026-07-11

问题 / 背景

AI工场会同时持有多张 cmhub 异步生图任务。基础编排和 GUI 接通后,还需要集中验证超时、停止、重启续查、下载失败和部分成功等运行场景,确保不会重复提交、重复扣点、丢失 task_id 或阻塞界面。本任务只处理 cmhub 托管模型,不接入自定义 Provider。

方案

  • 基于 T-590 的 job 生命周期和 T-591 的界面事件,补齐 submitted/running/succeeded/failed/expired/cancelled 的状态映射和中文反馈。
  • 覆盖程序停止、强退、重启后的续查:已有 task_id 只 poll,不再次 submit;下载失败只重试下载。
  • 对点数不足、submit 超时但服务端已受理、poll 超时、结果 URL 失效、图片校验失败和单张失败做可恢复处理。
  • 核对每个 job 的预计点数、实际扣点、余额和 call_id 展示,不把一张失败扩大为整轮失败。
  • 增加服务层与 GUI 状态测试,使用 mock/fake cmhub,不在自动测试中产生真实费用。

验收要点

  • N 张任务部分成功时,成功图片正常进入照片池,失败图片有独立中文状态,可单张重试。
  • submit 响应丢失后可用稳定 task key 恢复,不重复创建或扣费;已有 task_id 的任务重启后不再次 POST。
  • 停止与关闭程序不会删除已提交任务信息;再次打开项目可以继续查询。
  • 下载超时、非图片响应和本地保存失败不重新提交生图;恢复后仍关联原 job/task_id。
  • 点数、余额、call_id 和失败退点口径与现有 cmhub 客户端一致,日志不暴露接口路径、密钥或内部响应。
  • GUI 主线程不执行网络等待;全量 unittest、ruff、compileall 和 git diff --check 通过。

边界(不改什么)

  • 不实现 BYOK、自定义 Provider、API Key、来源切换或客户端直连。
  • 不实现终选拖放、导出或蝦皮写操作。
  • 不用真实收费请求作为自动化测试前提,不改变 cmhub 服务端计费契约。

执行记录

(完成后记录故障矩阵、状态决策与验证结果。)