From e3c43725573f6372cd0b0698d0de17182488551a Mon Sep 17 00:00:00 2001 From: kdletters Date: Sun, 23 Aug 2026 16:17:12 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E7=B4=A0=E6=9D=90=E7=94=BB?= =?UTF-8?q?=E5=B8=83=E6=8F=90=E4=BA=A4=E5=90=8E=E7=9A=84=E7=94=9F=E6=88=90?= =?UTF-8?q?=E6=8A=95=E5=BD=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 允许已提交草稿完成最终生成记录投影 --- .../src/project/asset_canvas/generation.rs | 21 ++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/apps/ai-game-creator-shell/src-tauri/src/project/asset_canvas/generation.rs b/apps/ai-game-creator-shell/src-tauri/src/project/asset_canvas/generation.rs index b66561170..edc0b8b95 100644 --- a/apps/ai-game-creator-shell/src-tauri/src/project/asset_canvas/generation.rs +++ b/apps/ai-game-creator-shell/src-tauri/src/project/asset_canvas/generation.rs @@ -821,6 +821,25 @@ fn validate_generation_draft_active( Ok(()) } +fn validate_generation_draft_for_public_phase( + ledger: &AssetCanvasGenerationLedger, + draft: &AssetCanvasDraft, +) -> Result<(), String> { + if ledger.phase == GenerationLedgerPhase::AssetDurableCommitted + && draft.status == AssetCanvasDraftStatus::Committed + { + if draft.project_id != ledger.project_id + || draft.draft_id != ledger.draft_id + || draft.intent != ledger.intent + || draft.source_asset_id != ledger.source_asset_id + { + return Err("素材画布生成账本与草稿身份不一致".to_string()); + } + return Ok(()); + } + validate_generation_draft_active(ledger, draft) +} + fn ensure_generation_draft_active( root: &Path, ledger: &AssetCanvasGenerationLedger, @@ -840,7 +859,7 @@ fn upsert_public_generation_record( let _lock = acquire_asset_canvas_draft_lock(root)?; let mut draft = read_asset_canvas_draft_locked(root, &ledger.project_id, &ledger.draft_id)? .ok_or_else(|| "素材画布草稿不存在".to_string())?; - validate_generation_draft_active(ledger, &draft)?; + validate_generation_draft_for_public_phase(ledger, &draft)?; let now = asset_canvas_now(); let output_asset_id = ledger .commit_result