From ab4868d4322939b7e1f8aab09dbc54e4793e6bf4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E5=BE=B7=E5=AE=87?= Date: Tue, 4 Aug 2026 11:41:21 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B8=85=E7=90=86=E8=A7=92=E8=89=B2=E5=8A=A8?= =?UTF-8?q?=E4=BD=9C=E6=8C=81=E4=B9=85=E5=8C=96=E6=98=A0=E5=B0=84=E5=86=97?= =?UTF-8?q?=E4=BD=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 通用 JSON 解析辅助函数改用准确命名并与 active mapper 保持一致。 持久化序列帧时直接消费输入字段,避免深拷贝完整帧数组。 --- .../crates/api-server/src/editor_project.rs | 4 ++-- .../src/mapper/editor_project.rs | 18 +++++++++--------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/server-rs/crates/api-server/src/editor_project.rs b/server-rs/crates/api-server/src/editor_project.rs index c7571a9c7..9efe4f316 100644 --- a/server-rs/crates/api-server/src/editor_project.rs +++ b/server-rs/crates/api-server/src/editor_project.rs @@ -6708,14 +6708,14 @@ fn fill_missing_media_identity_field( pub(crate) async fn persist_editor_generated_asset( state: &AppState, - input: PersistEditorGeneratedAssetInput, + mut input: PersistEditorGeneratedAssetInput, ) -> Result { let generation_inputs_json = serialize_editor_generation_inputs( input.asset_kind.as_deref(), input.generation_inputs.clone(), )?; let image_sequence_frames_json = - serialize_editor_image_sequence_frames(input.image_sequence_frames.clone())?; + serialize_editor_image_sequence_frames(input.image_sequence_frames.take())?; let object_key = normalize_editor_object_key(input.object_key); let asset_object_id = normalize_optional_string(input.asset_object_id); let image_src = normalize_editor_persisted_media_src(input.image_src, object_key.as_deref())?; diff --git a/server-rs/crates/spacetime-client/src/mapper/editor_project.rs b/server-rs/crates/spacetime-client/src/mapper/editor_project.rs index a54b95794..640a5946a 100644 --- a/server-rs/crates/spacetime-client/src/mapper/editor_project.rs +++ b/server-rs/crates/spacetime-client/src/mapper/editor_project.rs @@ -1260,11 +1260,11 @@ fn map_editor_project_snapshot( fn map_editor_project_resource_snapshot( snapshot: EditorProjectResourceSnapshot, ) -> Result { - let generation_inputs = parse_optional_generation_inputs_json( + let generation_inputs = parse_optional_json( snapshot.generation_inputs_json.as_deref(), "图片画布资源生成输入 JSON", )?; - let image_sequence_frames = parse_optional_generation_inputs_json( + let image_sequence_frames = parse_optional_json( snapshot.image_sequence_frames_json.as_deref(), "图片画布资源序列帧 JSON", )?; @@ -1328,11 +1328,11 @@ fn map_editor_asset_folder_snapshot( fn map_editor_asset_snapshot( snapshot: EditorAssetSnapshot, ) -> Result { - let generation_inputs = parse_optional_generation_inputs_json( + let generation_inputs = parse_optional_json( snapshot.generation_inputs_json.as_deref(), "图片画布素材生成输入 JSON", )?; - let image_sequence_frames = parse_optional_generation_inputs_json( + let image_sequence_frames = parse_optional_json( snapshot.image_sequence_frames_json.as_deref(), "图片画布素材序列帧 JSON", )?; @@ -1371,11 +1371,11 @@ fn map_editor_asset_snapshot( fn map_admin_editor_asset_snapshot( snapshot: AdminEditorAssetSnapshot, ) -> Result { - let generation_inputs = parse_optional_generation_inputs_json( + let generation_inputs = parse_optional_json( snapshot.generation_inputs_json.as_deref(), "后台图片画布素材生成输入 JSON", )?; - let image_sequence_frames = parse_optional_generation_inputs_json( + let image_sequence_frames = parse_optional_json( snapshot.image_sequence_frames_json.as_deref(), "后台图片画布素材序列帧 JSON", )?; @@ -1411,11 +1411,11 @@ fn map_admin_editor_asset_snapshot( fn map_editor_showcase_asset_snapshot( snapshot: EditorShowcaseAssetSnapshot, ) -> Result { - let generation_inputs = parse_optional_generation_inputs_json( + let generation_inputs = parse_optional_json( snapshot.generation_inputs_json.as_deref(), "陶泥儿精选素材生成输入 JSON", )?; - let image_sequence_frames = parse_optional_generation_inputs_json( + let image_sequence_frames = parse_optional_json( snapshot.image_sequence_frames_json.as_deref(), "陶泥儿精选素材序列帧 JSON", )?; @@ -1508,7 +1508,7 @@ fn map_editor_generation_pricing_config_snapshot( } } -fn parse_optional_generation_inputs_json( +fn parse_optional_json( raw_json: Option<&str>, label: &str, ) -> Result, SpacetimeClientError> {