From ddb8b9e8baf424ef0724193da164836e8c039ab0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E5=BE=B7=E5=AE=87?= Date: Sat, 19 Sep 2026 13:13:35 +0800 Subject: [PATCH] =?UTF-8?q?multiview=20=E7=A9=BA=E7=99=BD=E8=A7=86?= =?UTF-8?q?=E5=9B=BE=E6=8C=89=E6=9C=AA=E6=8F=90=E4=BE=9B=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit to_sdk_params 新增 optional_view,将仅含空白的 left、back、right 归一化为未提供 空白视图不再以 Some(FileInput) 形式提交,与提交前“至少两个视图”的校验保持一致 --- .../platform-tripo/src/multiview_to_model/client.rs | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/server-rs/crates/platform-tripo/src/multiview_to_model/client.rs b/server-rs/crates/platform-tripo/src/multiview_to_model/client.rs index e7cc60642..85ee25d49 100644 --- a/server-rs/crates/platform-tripo/src/multiview_to_model/client.rs +++ b/server-rs/crates/platform-tripo/src/multiview_to_model/client.rs @@ -79,6 +79,13 @@ impl TripoProviderClient { Ok(TripoTaskHandle { task_id }) } } +/// 与提交前校验保持一致:空白视图按未提供处理。 +fn optional_view(value: &Option) -> Option { + value + .as_deref() + .filter(|value| !value.trim().is_empty()) + .map(FileInput::from) +} fn to_sdk_params(request: &Model3dMultiviewToModelRequest) -> MultiviewToModelParams { let mut params = match &request.inputs { @@ -89,9 +96,9 @@ fn to_sdk_params(request: &Model3dMultiviewToModelRequest) -> MultiviewToModelPa right, } => MultiviewToModelParams::from_views([ Some(FileInput::from(front.as_str())), - left.as_deref().map(FileInput::from), - back.as_deref().map(FileInput::from), - right.as_deref().map(FileInput::from), + optional_view(left), + optional_view(back), + optional_view(right), ]), Model3dMultiviewInputs::TaskId { task_id } => { MultiviewToModelParams::from_task_id(task_id.clone())