text-to-model入口的submit改名带端点

- TripoProviderClient::submit 改名为 submit_text_to_model,与 submit_image_to_model / submit_multiview_to_model 一致
- 同步 api-server tripo3d worker 与 tripo_generation_smoke example 的调用点
- 同步技术方案文档里写死的 submit 口径,方法名不再与另两个入口分叉
This commit is contained in:
2026-09-21 19:49:31 +08:00
parent 3af0d3d90b
commit 609b24c779
4 changed files with 9 additions and 5 deletions
@@ -2,7 +2,7 @@
## 目标
本阶段在 `server-rs/crates/platform-tripo` 内接入固定 revision 的 `tripo3d-sdk`,完成 text-to-model、image-to-model 和 multiview-to-model 三个 3D 生成入口的 Rust provider adapter。三个入口共用同一个 `TripoProviderClient`,分别通过 `submit``submit_image_to_model``submit_multiview_to_model` 提交;client 另提供显式配置、通用单次 task 查询和模型下载能力。共享产品契约继续由 `shared-contracts` 管理,并始终生成目录化 ts-rs TypeScript binding。
本阶段在 `server-rs/crates/platform-tripo` 内接入固定 revision 的 `tripo3d-sdk`,完成 text-to-model、image-to-model 和 multiview-to-model 三个 3D 生成入口的 Rust provider adapter。三个入口共用同一个 `TripoProviderClient`,分别通过 `submit_text_to_model``submit_image_to_model``submit_multiview_to_model` 提交;client 另提供显式配置、通用单次 task 查询和模型下载能力。共享产品契约继续由 `shared-contracts` 管理,并始终生成目录化 ts-rs TypeScript binding。
代码按 API 目录组织:公共 SDK 配置、client、任务映射、错误、下载类型和 task 生命周期 DTO 位于 `platform-tripo/src/common/`;三个生成 API 各自拥有独立目录和结果类型。Rust 与 TypeScript contracts 按 `common/``text_to_model/``image_to_model/``multiview_to_model/` 分目录生成。
@@ -49,7 +49,7 @@ TODO:等待上游 `tripo-rust-sdk` 提供原生 artifact stream API 后,删
## 验收
- `platform-tripo` 不公开 re-export SDK 类型或 `wait_for_task`
- 三个 3D 生成入口的 submit、通用 get task、按 endpoint 严格映射的完成结果和 provider 自有流式 download API 可编译,且共用同一 client 与同一套 `TripoError`
- 三个 3D 生成入口的 `submit_text_to_model` / `submit_image_to_model` / `submit_multiview_to_model`、通用 get task、按 endpoint 严格映射的完成结果和 provider 自有流式 download API 可编译,且共用同一 client 与同一套 `TripoError`
- 三个入口的输入校验可拒绝空白 `prompt` / `input`、视图不足两张和空白 `taskId`;组合校验在调用 SDK 前完成。
- provider 错误统一为 adapter 错误类型。
- shared contracts 的 ts-rs binding 无 feature 开关且始终可生成。
@@ -146,7 +146,9 @@ async fn submit_and_checkpoint(
request: &Model3dJobRequest,
) -> Result<TripoTaskHandle, AppError> {
let handle = match request {
Model3dJobRequest::TextToModel(request) => client.submit(&request.generation).await,
Model3dJobRequest::TextToModel(request) => {
client.submit_text_to_model(&request.generation).await
}
Model3dJobRequest::ImageToModel(request) => {
let input = resolve_image_input(
state,
@@ -46,7 +46,7 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> {
))?;
let text = client
.submit(&Model3dTextToModelParams {
.submit_text_to_model(&Model3dTextToModelParams {
prompt: "a low-poly wooden treasure chest".to_string(),
model: Model3dModelVersion::H31,
negative_prompt: None,
@@ -6,7 +6,9 @@ use shared_contracts::model3d::text_to_model::Model3dTextToModelParams;
use super::validation::validate_text_to_model_params;
impl TripoProviderClient {
pub async fn submit(
/// 提交 text-to-model 任务;命名与另两个入口 `submit_image_to_model` /
/// `submit_multiview_to_model` 保持一致,方法名自带端点。
pub async fn submit_text_to_model(
&self,
params: &Model3dTextToModelParams,
) -> Result<TripoTaskHandle, TripoError> {