From e21acd73ebd98892b0439d3967009c9a4b8fc46e Mon Sep 17 00:00:00 2001 From: fawney19 Date: Sun, 28 Dec 2025 19:40:07 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E6=A8=A1=E5=9E=8B?= =?UTF-8?q?=E6=98=A0=E5=B0=84=E4=B8=AD=E9=87=8D=E5=A4=8D=E5=85=B3=E8=81=94?= =?UTF-8?q?=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 在批量分配模型和编辑模型映射时,需要检查不仅是主模型名是否已关联, 还要检查其映射名称是否已存在,防止同一个上游模型被重复关联。 --- .../components/BatchAssignModelsDialog.vue | 14 ++++++++++---- .../providers/components/ModelMappingDialog.vue | 10 ++++++++++ 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/frontend/src/features/providers/components/BatchAssignModelsDialog.vue b/frontend/src/features/providers/components/BatchAssignModelsDialog.vue index 97243d3..a629bbd 100644 --- a/frontend/src/features/providers/components/BatchAssignModelsDialog.vue +++ b/frontend/src/features/providers/components/BatchAssignModelsDialog.vue @@ -433,11 +433,17 @@ const availableGlobalModels = computed(() => { ) }) -// 计算可添加的上游模型(排除已关联的) +// 计算可添加的上游模型(排除已关联的,包括主模型名和映射名称) const availableUpstreamModelsBase = computed(() => { - const existingModelNames = new Set( - existingModels.value.map(m => m.provider_model_name) - ) + const existingModelNames = new Set() + for (const m of existingModels.value) { + // 主模型名 + existingModelNames.add(m.provider_model_name) + // 映射名称 + for (const mapping of m.provider_model_mappings ?? []) { + if (mapping.name) existingModelNames.add(mapping.name) + } + } return upstreamModels.value.filter(m => !existingModelNames.has(m.id)) }) diff --git a/frontend/src/features/providers/components/ModelMappingDialog.vue b/frontend/src/features/providers/components/ModelMappingDialog.vue index 61c63ba..74b9ad0 100644 --- a/frontend/src/features/providers/components/ModelMappingDialog.vue +++ b/frontend/src/features/providers/components/ModelMappingDialog.vue @@ -449,7 +449,17 @@ interface UpstreamModelGroup { } const groupedAvailableUpstreamModels = computed(() => { + // 收集当前表单已添加的名称 const addedNames = new Set(formData.value.aliases.map(a => a.name.trim())) + + // 收集所有已存在的映射名称(包括主模型名和映射名称) + for (const m of props.models) { + addedNames.add(m.provider_model_name) + for (const mapping of m.provider_model_mappings ?? []) { + if (mapping.name) addedNames.add(mapping.name) + } + } + const availableModels = filteredUpstreamModels.value.filter(m => !addedNames.has(m.id)) const groups = new Map()