From 3c07a96a076f680184c114dc1a66cc8241ab4ed2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E5=BE=B7=E5=AE=87?= Date: Sat, 8 Aug 2026 11:49:13 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=9B=BE=E7=89=87=E7=BC=96?= =?UTF-8?q?=E8=BE=91=E5=90=88=E5=B9=B6=E5=9B=9E=E5=BD=92?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 补回快速编辑业务引用解析导入 确保非法主来源在生成目标预检前返回400 --- .../crates/api-server/src/editor_project.rs | 28 ++++++++++++------- ...ImageCanvasGenerationSubmissionWorkflow.ts | 1 + 2 files changed, 19 insertions(+), 10 deletions(-) diff --git a/server-rs/crates/api-server/src/editor_project.rs b/server-rs/crates/api-server/src/editor_project.rs index bb93a960e..ba79ed17a 100644 --- a/server-rs/crates/api-server/src/editor_project.rs +++ b/server-rs/crates/api-server/src/editor_project.rs @@ -4205,6 +4205,21 @@ fn ensure_editor_image_edit_source_reference_id_shape( }))) } +fn ensure_editor_image_edit_source_reference_id_allowed( + source_reference_id: &str, +) -> Result<(), AppError> { + if source_reference_id.trim().is_empty() { + return Err( + AppError::from_status(StatusCode::BAD_REQUEST).with_details(json!({ + "provider": "editor-image-edit", + "field": "sourceReferenceId", + "message": "sourceReferenceId 不能为空", + })), + ); + } + ensure_editor_image_edit_source_reference_id_shape(source_reference_id) +} + fn map_editor_image_edit_lookup_error( error: AppError, field: &'static str, @@ -4227,16 +4242,7 @@ async fn resolve_editor_image_edit_source( payload: &EditorImageEditRequest, ) -> Result { let source_reference_id = payload.source_reference_id.trim(); - if source_reference_id.is_empty() { - return Err( - AppError::from_status(StatusCode::BAD_REQUEST).with_details(json!({ - "provider": "editor-image-edit", - "field": "sourceReferenceId", - "message": "sourceReferenceId 不能为空", - })), - ); - } - ensure_editor_image_edit_source_reference_id_shape(source_reference_id)?; + ensure_editor_image_edit_source_reference_id_allowed(source_reference_id)?; let oss_client = state.oss_client().ok_or_else(|| { AppError::from_status(StatusCode::SERVICE_UNAVAILABLE).with_details(json!({ "provider": "aliyun-oss", @@ -5545,6 +5551,7 @@ pub(crate) async fn enqueue_editor_image_edit_for_owner( "referenceImageSrcs", "修改参考图", )?; + ensure_editor_image_edit_source_reference_id_allowed(&payload.source_reference_id)?; let target = preflight_editor_billable_generation_target( state, caller.owner_user_id.as_str(), @@ -5627,6 +5634,7 @@ pub(crate) async fn edit_editor_image_for_owner_with_source_snapshot( "referenceImageSrcs", "修改参考图", )?; + ensure_editor_image_edit_source_reference_id_allowed(&payload.source_reference_id)?; let target = preflight_editor_billable_generation_target( state, caller.owner_user_id.as_str(), diff --git a/src/components/image-editor/useImageCanvasGenerationSubmissionWorkflow.ts b/src/components/image-editor/useImageCanvasGenerationSubmissionWorkflow.ts index 7f49f4f1e..cf553f9bd 100644 --- a/src/components/image-editor/useImageCanvasGenerationSubmissionWorkflow.ts +++ b/src/components/image-editor/useImageCanvasGenerationSubmissionWorkflow.ts @@ -84,6 +84,7 @@ import { buildImageGenerationSubmissionPlan, resolveGenerationAssetLabel, resolveImageGenerationDialogPrompt, + resolveRegisteredEditorReferenceId, } from './ImageCanvasGenerationSubmissionModel'; import type { UiAssetExtractionMark,