From 1bc53ae584fc3a335cd5c14c18845d3d1eb71a14 Mon Sep 17 00:00:00 2001 From: Momentry Studio Date: Fri, 2 Oct 2026 05:42:31 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20AdminView=20=E4=BF=9D=E5=AD=98=E9=85=8D?= =?UTF-8?q?=E7=BD=AE=E5=89=8D=E5=85=88=E5=8A=A0=E8=BD=BD=E7=8E=B0=E6=9C=89?= =?UTF-8?q?=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 避免空对象覆盖数据库中的现有配置 - 保存前先 GET 当前配置 - 合并修改的字段后再 POST - 确保所有字段都正确保存 --- src/views/AdminView.vue | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/src/views/AdminView.vue b/src/views/AdminView.vue index ceee594..22c9b3e 100644 --- a/src/views/AdminView.vue +++ b/src/views/AdminView.vue @@ -1141,26 +1141,30 @@ async function saveConfig() { configSaving.value = true configSaveMsg.value = '' try { + const res = await fetch('/api/v1/admin/config') + if (!res.ok) throw new Error(`Failed to load current config: HTTP ${res.status}`) + const currentConfig = await res.json() + const payload = { version: '1.0.0', - vlm_prompts: vlmPrompts.value, - llm_config: llmConfig.value, - processor_config: processorConfig.value, - filter_config: filterConfig.value, - system_config: systemConfig.value, + vlm_prompts: Object.keys(vlmPrompts.value).length > 0 ? vlmPrompts.value : currentConfig.vlm_prompts || {}, + llm_config: Object.keys(llmConfig.value).length > 0 ? llmConfig.value : currentConfig.llm_config || {}, + processor_config: Object.keys(processorConfig.value).length > 0 ? processorConfig.value : currentConfig.processor_config || {}, + filter_config: Object.keys(filterConfig.value).length > 0 ? filterConfig.value : currentConfig.filter_config || {}, + system_config: Object.keys(systemConfig.value).length > 0 ? systemConfig.value : currentConfig.system_config || {}, search: { vlm_min_score: searchConfig.value.vlm_min_score || 0.0, vlm_max_results: searchConfig.value.vlm_max_results || 5, vlm_output_language: searchConfig.value.vlm_output_language || 'en' }, } - const res = await fetch('/api/v1/admin/config', { + const saveRes = await fetch('/api/v1/admin/config', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(payload), }) - if (!res.ok) throw new Error(`HTTP ${res.status}`) - const data = await res.json() + if (!saveRes.ok) throw new Error(`HTTP ${saveRes.status}`) + const data = await saveRes.json() configSaveOk.value = true configSaveMsg.value = 'Config saved successfully' } catch (e: any) {