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())