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 3d526f244..a8dba2c9f 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 @@ -30,11 +30,7 @@ impl TripoProviderClient { } if [left, back, right] .into_iter() - .filter(|value| { - value - .as_deref() - .is_some_and(|value| !value.trim().is_empty()) - }) + .filter(|value| view_input(*value).is_some()) .count() == 0 { @@ -69,12 +65,13 @@ impl TripoProviderClient { Ok(TripoTaskHandle { task_id }) } } -/// 与提交前校验保持一致:空白视图按未提供处理。 -fn optional_view(value: &Option) -> Option { +/// 空白(含纯空白)视图按「未提供」处理:提交前校验与 SDK 参数转换共用这一条规则。 +fn view_input(value: &Option) -> Option { value .as_deref() - .filter(|value| !value.trim().is_empty()) - .map(|value| FileInput::from(value.trim())) + .map(str::trim) + .filter(|value| !value.is_empty()) + .map(FileInput::from) } fn to_sdk_params( @@ -88,9 +85,9 @@ fn to_sdk_params( right, } => MultiviewToModelParams::from_views([ Some(FileInput::from(front.trim())), - optional_view(left), - optional_view(back), - optional_view(right), + view_input(left), + view_input(back), + view_input(right), ]), Model3dMultiviewInputs::TaskId { task_id } => { MultiviewToModelParams::from_task_id(task_id.trim().to_owned())