From d36a686f6b015dbc3973dc40d348d2cc857e89fc Mon Sep 17 00:00:00 2001 From: fengsilin Date: Thu, 4 Jun 2026 14:29:28 +0800 Subject: [PATCH] fix(ratio): preserve 0 as valid value for advanced ratio fields - Replace || with ?? in addOrUpdateModel to keep 0 values (0 || '' = '') - Add null check in SubmitData to avoid writing undefined - Fix formRef value reading to preserve 0 vs empty distinction Co-Authored-By: Claude Sonnet 4.6 --- .../Ratio/ModelSettingsVisualEditor.jsx | 42 +++++++++---------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/web/src/pages/Setting/Ratio/ModelSettingsVisualEditor.jsx b/web/src/pages/Setting/Ratio/ModelSettingsVisualEditor.jsx index f03452e..4c86a2a 100644 --- a/web/src/pages/Setting/Ratio/ModelSettingsVisualEditor.jsx +++ b/web/src/pages/Setting/Ratio/ModelSettingsVisualEditor.jsx @@ -159,16 +159,16 @@ export default function ModelSettingsVisualEditor(props) { ); } - // 新增:处理高级倍率字段 - if (model.cacheRatio !== '') + // 新增:处理高级倍率字段(0 是有效值,只有空字符串和 undefined/null 不保存) + if (model.cacheRatio !== '' && model.cacheRatio != null) output.CacheRatio[model.name] = parseFloat(model.cacheRatio); - if (model.cacheCreationRatio !== '') + if (model.cacheCreationRatio !== '' && model.cacheCreationRatio != null) output.CreateCacheRatio[model.name] = parseFloat(model.cacheCreationRatio); - if (model.imageRatio !== '') + if (model.imageRatio !== '' && model.imageRatio != null) output.ImageRatio[model.name] = parseFloat(model.imageRatio); - if (model.audioRatio !== '') + if (model.audioRatio !== '' && model.audioRatio != null) output.AudioRatio[model.name] = parseFloat(model.audioRatio); - if (model.audioCompletionRatio !== '') + if (model.audioCompletionRatio !== '' && model.audioCompletionRatio != null) output.AudioCompletionRatio[model.name] = parseFloat(model.audioCompletionRatio); }); @@ -392,11 +392,11 @@ export default function ModelSettingsVisualEditor(props) { ratio: values.ratio || '', completionRatio: values.completionRatio || '', // 新增:高级倍率字段 - cacheRatio: values.cacheRatio || '', - cacheCreationRatio: values.cacheCreationRatio || '', - imageRatio: values.imageRatio || '', - audioRatio: values.audioRatio || '', - audioCompletionRatio: values.audioCompletionRatio || '', + cacheRatio: values.cacheRatio ?? '', + cacheCreationRatio: values.cacheCreationRatio ?? '', + imageRatio: values.imageRatio ?? '', + audioRatio: values.audioRatio ?? '', + audioCompletionRatio: values.audioCompletionRatio ?? '', }; updated.hasConflict = updated.price !== '' && @@ -421,11 +421,11 @@ export default function ModelSettingsVisualEditor(props) { ratio: values.ratio || '', completionRatio: values.completionRatio || '', // 新增:高级倍率字段 - cacheRatio: values.cacheRatio || '', - cacheCreationRatio: values.cacheCreationRatio || '', - imageRatio: values.imageRatio || '', - audioRatio: values.audioRatio || '', - audioCompletionRatio: values.audioCompletionRatio || '', + cacheRatio: values.cacheRatio ?? '', + cacheCreationRatio: values.cacheCreationRatio ?? '', + imageRatio: values.imageRatio ?? '', + audioRatio: values.audioRatio ?? '', + audioCompletionRatio: values.audioCompletionRatio ?? '', }; newModel.hasConflict = newModel.price !== '' && @@ -616,11 +616,11 @@ export default function ModelSettingsVisualEditor(props) { // 从表单读取高级倍率字段(Form.InputNumber 的值不会自动同步到 currentModel) if (formRef.current) { const formValues = formRef.current.getValues(); - valuesToSave.cacheRatio = formValues.cacheRatio ?? ''; - valuesToSave.cacheCreationRatio = formValues.cacheCreationRatio ?? ''; - valuesToSave.imageRatio = formValues.imageRatio ?? ''; - valuesToSave.audioRatio = formValues.audioRatio ?? ''; - valuesToSave.audioCompletionRatio = formValues.audioCompletionRatio ?? ''; + valuesToSave.cacheRatio = formValues.cacheRatio != null ? formValues.cacheRatio : ''; + valuesToSave.cacheCreationRatio = formValues.cacheCreationRatio != null ? formValues.cacheCreationRatio : ''; + valuesToSave.imageRatio = formValues.imageRatio != null ? formValues.imageRatio : ''; + valuesToSave.audioRatio = formValues.audioRatio != null ? formValues.audioRatio : ''; + valuesToSave.audioCompletionRatio = formValues.audioCompletionRatio != null ? formValues.audioCompletionRatio : ''; } addOrUpdateModel(valuesToSave);