From ffb7b0ba3822974ac420b2a05ef27a01182fef22 Mon Sep 17 00:00:00 2001 From: Timebomb2018 <18868801967@163.com> Date: Fri, 30 Jan 2026 14:23:35 +0800 Subject: [PATCH] fix(model): 1. create a basic model to check if the name and provider are duplicated. 2. The result shows error models because the provider created API Keys for all matching models. --- api/app/repositories/model_repository.py | 7 +++++++ api/app/services/model_service.py | 8 ++++---- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/api/app/repositories/model_repository.py b/api/app/repositories/model_repository.py index 36f7062f..3d66964a 100644 --- a/api/app/repositories/model_repository.py +++ b/api/app/repositories/model_repository.py @@ -630,6 +630,13 @@ class ModelBaseRepository: db.add(model_base) return model_base + @staticmethod + def get_by_name_and_provider(db: Session, name: str, provider: str) -> Optional['ModelBase']: + return db.query(ModelBase).filter( + ModelBase.name == name, + ModelBase.provider == provider + ).first() + @staticmethod def update(db: Session, model_base_id: uuid.UUID, data: dict) -> Optional['ModelBase']: model_base = db.query(ModelBase).filter(ModelBase.id == model_base_id).first() diff --git a/api/app/services/model_service.py b/api/app/services/model_service.py index 904821c1..dee6cd1d 100644 --- a/api/app/services/model_service.py +++ b/api/app/services/model_service.py @@ -508,10 +508,7 @@ class ModelApiKeyService: ) if not validation_result["valid"]: # 记录验证失败的模型,但不抛出异常 - failed_models.append({ - "model_name": model_name, - "error": validation_result["error"] - }) + failed_models.append(model_name) continue # 创建API Key @@ -692,6 +689,9 @@ class ModelBaseService: @staticmethod def create_model_base(db: Session, data: model_schema.ModelBaseCreate): + existing = ModelBaseRepository.get_by_name_and_provider(db, data.name, data.provider) + if existing: + raise BusinessException("模型已存在", BizCode.DUPLICATE_NAME) model_base = ModelBaseRepository.create(db, data.model_dump()) db.commit() db.refresh(model_base)