Files

39 lines
2.0 KiB
Markdown

---
id: T-601
title: AI工场 BYOK 异步 submit/poll 接入 image_studio_jobs
phase: 8
deps: [T-600]
status: TODO
created: 2026-07-11
---
## 问题 / 背景
BYOK 生图不能回到客户端直连 OpenAI、同步等待几百秒的旧路径。即使用用户自己的 Key,也必须经 cmhub 授权代理提交任务,并复用 AI工场的 job 持久化、重启续查、下载失败不重提交流程。
## 方案
- 在 AI工场生成来源显式选择“cmhub 托管 / 自定义模型”;默认仍是 cmhub 托管。
- 自定义来源 submit 请求带 device credential、product、provider、模型档位、加密 task secret 引用和 image_studio_job key;不把明文 Key 写入 DB 或日志。
- 复用 T-590/T-594 的 job 生命周期:pending/submitted/running/succeeded/failed/expired/cancelled;已有 task_id 只 poll,不重新 submit。
- poll 成功后走同一下载与图片校验管线,生成 asset、比例、父图、提示词、provider 和使用记录。
- BYOK `points_cost=0`,但日志和 UI 显示“费用由模型服务商收取”,并保留 provider/task_id/call_id 便于排障。
## 验收要点
- 自定义来源 N 张生成产生 N 个 job/key/task;停止、重启、下载失败、单张失败语义与 cmhub 托管一致。
- 无套餐/设备、Key 无效、Provider 不允许、模型不允许、上游失败、内容拒绝都有中文错误和可恢复状态。
- BYOK 失败不扣 cmhub 点数;cmhub 托管失败不静默切到 BYOK。
- 旧② AI生成、AI工场 cmhub 托管和 T-590/T-594 测试不回归。
- 运行 ruff、compileall、unittest、`git diff --check`;不使用真实 Key 作为自动化测试前提。
## 边界(不改什么)
- 不实现自动上传蝦皮,不改变终选/导出行为。
- 不支持同步长等待,不支持客户端 direct,不支持任意 URL。
- 不在本任务做完整安全审计收口,集中到 T-602。
## 执行记录
(完成后记录接口字段、job 状态映射和回归结果。)