2.2 KiB
2.2 KiB
id, title, phase, deps, status, created
| id | title | phase | deps | status | created | ||
|---|---|---|---|---|---|---|---|
| T-594 | AI工场 cmhub 托管生图故障恢复、计费一致性与运行回归 | 7 |
|
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 服务端计费契约。
执行记录
(完成后记录故障矩阵、状态决策与验证结果。)