From 09f0c51b810c9e362f89de51bc2ede4490ffbcb7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E5=BE=B7=E5=AE=87?= Date: Tue, 22 Sep 2026 15:49:34 +0800 Subject: [PATCH] =?UTF-8?q?=E7=A9=BA=E7=99=BD=E8=A7=86=E5=9B=BE=E8=A7=84?= =?UTF-8?q?=E5=88=99=E6=94=B6=E6=95=9B=E5=88=B0=E5=8D=95=E4=B8=80=E5=8A=A9?= =?UTF-8?q?=E6=89=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增 view_input 同时服务提交前计数校验与 SDK 参数转换 - 空白 / 纯空白视图的判定不再有两份实现,避免校验与转换漂移 --- .../src/multiview_to_model/client.rs | 21 ++++++++----------- 1 file changed, 9 insertions(+), 12 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 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())