From 03d26d46affe77dc9353e47a8e585977b293128c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E5=BE=B7=E5=AE=87?= Date: Mon, 21 Sep 2026 15:22:08 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=AD=A3provider=E6=96=87=E6=A1=A3?= =?UTF-8?q?=E9=87=8C=E8=BF=87=E6=9C=9F=E7=9A=84=E4=B8=8B=E8=BD=BD=E5=8C=85?= =?UTF-8?q?=E8=A3=85=E7=B1=BB=E5=9E=8B=E5=90=8D=20-=20=E6=96=87=E6=A1=A3?= =?UTF-8?q?=E5=86=99=E7=9A=84=20TripoDownloadedModel=20=E5=B7=B2=E4=B8=8D?= =?UTF-8?q?=E5=AD=98=E5=9C=A8=EF=BC=8C=E6=8C=89=E5=BD=93=E5=89=8D=E4=BB=A3?= =?UTF-8?q?=E7=A0=81=E6=94=B9=E6=88=90=20TripoDownloadedArtifact=20-=20?= =?UTF-8?q?=E4=B8=8A=E4=B8=80=E6=9D=A1=E6=96=87=E6=A1=A3=E6=8F=90=E4=BA=A4?= =?UTF-8?q?=E7=9A=84=E8=AF=B4=E6=98=8E=E9=87=8C=E5=B7=B2=E6=8F=90=E5=88=B0?= =?UTF-8?q?=E8=BF=99=E5=A4=84=E6=94=B9=E5=8A=A8=EF=BC=8C=E4=BD=86=E5=BD=93?= =?UTF-8?q?=E6=97=B6=E8=A1=A5=E4=B8=81=E6=B2=A1=E8=90=BD=E4=B8=8A=EF=BC=8C?= =?UTF-8?q?=E8=BF=99=E6=AC=A1=E8=A1=A5=E5=AE=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../【技术方案】Tripo 3D模型Provider集成-2026-09-18.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/technical/【技术方案】Tripo 3D模型Provider集成-2026-09-18.md b/docs/technical/【技术方案】Tripo 3D模型Provider集成-2026-09-18.md index 25fe3a261..2e7875ac2 100644 --- a/docs/technical/【技术方案】Tripo 3D模型Provider集成-2026-09-18.md +++ b/docs/technical/【技术方案】Tripo 3D模型Provider集成-2026-09-18.md @@ -42,7 +42,7 @@ task 尚未完成时 `output` 为空;完成后 `output` 必须是与 task type `get_task` 按 `TripoTaskHandle` 做单次查询,返回通用 `TripoTaskSnapshot`,由 `task_type` 决定 `output` 的具体 variant;adapter 不做轮询、不阻塞等待。 -`download_model` 接受 `TripoTaskSnapshot`,先确认快照确实处于完成态,再从严格 endpoint 结果中取得已校验的 `model_url`,由 provider 自己的无鉴权 reqwest client 打开签名 URL 并返回 `TripoDownloadedModel` 流包装。包装只公开 `url`、`content_type`、`content_length`、`filename(name)` 和 `next_chunk()`;不提供完整 `Vec`,调用方必须逐块消费。`filename(name)` 的扩展名来自远端地址,只接受短的 ASCII 字母数字,其余退回 `glb`,避免远端地址里的 `%2F` 解码后拼出跨目录路径。provider 在流结束时校验实际接收字节数与 `Content-Length`,响应体中断或长度不一致按结构化请求错误失败;SDK 保持第三方原样,不承担产物下载。smoke example 使用异步文件写入逐块落盘;未来接入 OSS 时应把同一数据流直接送入 OSS 分片上传,不经过完整内存缓冲。 +`download_model` 接受 `TripoTaskSnapshot`,先确认快照确实处于完成态,再从严格 endpoint 结果中取得已校验的 `model_url`,由 provider 自己的无鉴权 reqwest client 打开签名 URL 并返回 `TripoDownloadedArtifact` 流包装。包装只公开 `url`、`content_type`、`content_length`、`filename(name)` 和 `next_chunk()`;不提供完整 `Vec`,调用方必须逐块消费。`filename(name)` 的扩展名来自远端地址,只接受短的 ASCII 字母数字,其余退回 `glb`,避免远端地址里的 `%2F` 解码后拼出跨目录路径。provider 在流结束时校验实际接收字节数与 `Content-Length`,响应体中断或长度不一致按结构化请求错误失败;SDK 保持第三方原样,不承担产物下载。smoke example 使用异步文件写入逐块落盘;未来接入 OSS 时应把同一数据流直接送入 OSS 分片上传,不经过完整内存缓冲。 TODO:等待上游 `tripo-rust-sdk` 提供原生 artifact stream API 后,删除 provider-side reqwest 下载器,改由 SDK stream 直接承接。