明确Tripo模型流式下载边界
记录SDK与Provider只提供分块模型下载流 约定未来OSS上传直接消费数据流而不缓存完整模型
This commit is contained in:
@@ -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 开关且始终可生成。
|
||||
|
||||
Reference in New Issue
Block a user