明确Tripo模型流式下载边界

记录SDK与Provider只提供分块模型下载流

约定未来OSS上传直接消费数据流而不缓存完整模型
This commit is contained in:
2026-09-19 22:20:23 +08:00
parent c48f0627cf
commit 4c7fd968dd
2 changed files with 3 additions and 3 deletions
@@ -42,12 +42,12 @@ task 尚未完成时 `output` 为空;完成后 `output` 必须是与 task type
`get_task``TripoTaskHandle` 做单次查询,返回通用 `TripoTaskSnapshot`,由 `task_type` 决定 `output` 的具体 variant;adapter 不做轮询、不阻塞等待。
`download_model` 接受 `TripoTaskSnapshot`返回 `TripoDownloadedModel { url, content_type, data }`,并由 `filename(name)` 从 URL 末段推断扩展名(推断不出时回落 `glb`)。SDK 只公开 `download_model(&Task)`,因此实现会按 handle 再取一次 task(已留 TODO);若将来 SDK 支持按 URL 下载,可直接用 snapshot 里的模型 URL 省掉这次请求
`download_model` 接受 `TripoTaskSnapshot`从严格 endpoint 结果中取得已校验的 `model_url`,调用 SDK 的 `download_url_stream` 返回 provider 自己的 `TripoDownloadedModel` 流包装。包装只公开 `url``content_type``content_length``filename(name)``next_chunk()`;不提供完整 `Vec<u8>`,调用方必须逐块消费。SDK 在流结束时校验实际接收字节数与 `Content-Length`,响应体中断或长度不一致按结构化请求错误失败。smoke example 使用异步文件写入逐块落盘;未来接入 OSS 时应把同一数据流直接送入 OSS 分片上传,不经过完整内存缓冲
## 验收
- `platform-tripo` 不公开 re-export SDK 类型或 `wait_for_task`
- 三个 3D 生成入口的 submit、通用 get task、按 endpoint 严格映射的完成结果和显式 download API 可编译,且共用同一 client 与同一套 `TripoError`
- 三个 3D 生成入口的 submit、通用 get task、按 endpoint 严格映射的完成结果和显式流式 download API 可编译,且共用同一 client 与同一套 `TripoError`
- 三个入口的输入校验可拒绝空白 `prompt` / `input`、视图不足两张和空白 `taskId`;组合校验在调用 SDK 前完成。
- provider 错误统一为 adapter 错误类型。
- shared contracts 的 ts-rs binding 无 feature 开关且始终可生成。