diff --git a/apps/ai-game-creator-shell/src/view/project-development/export/state/useTaonierExport.ts b/apps/ai-game-creator-shell/src/view/project-development/export/state/useTaonierExport.ts index 92cc2bd95..350463b1c 100644 --- a/apps/ai-game-creator-shell/src/view/project-development/export/state/useTaonierExport.ts +++ b/apps/ai-game-creator-shell/src/view/project-development/export/state/useTaonierExport.ts @@ -827,8 +827,11 @@ export function useTaonierExport({ // 没解决的冲突 / 字段红字:盘上的内容和用户看到的不一致,先别打包。 if (conflict || fieldErrors.length > 0) return false; // 盘上的表单要能过本地校验:校验不过时留在表单上,不跑构建(对齐「校验不过不触宿主」)。 - if (form && validateTaonierForm(form).length > 0) { - setFieldErrors(validateTaonierForm(form)); + // `form` 是 render 闭包快照,前面的 `refresh()`/flush 可能已把更权威的落盘表单写进 + // `effectiveFormRef`;这里必须校验真正落定的那份,否则会放行盘上的非法值。 + const effectiveForm = effectiveFormRef.current ?? form; + if (effectiveForm && validateTaonierForm(effectiveForm).length > 0) { + setFieldErrors(validateTaonierForm(effectiveForm)); setDirty(false); return false; }