From af83980f99b7e6f064c4fe9a06eb22c4e78eb6d2 Mon Sep 17 00:00:00 2001 From: wxy Date: Fri, 10 Apr 2026 17:22:11 +0800 Subject: [PATCH] feat: add versioned app chat API and fix release isolation bug --- api/app/repositories/app_repository.py | 6 +++--- api/app/schemas/app_schema.py | 2 +- api/app/services/app_service.py | 10 +++++----- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/api/app/repositories/app_repository.py b/api/app/repositories/app_repository.py index 3eef99f8..898fc9c1 100644 --- a/api/app/repositories/app_repository.py +++ b/api/app/repositories/app_repository.py @@ -63,13 +63,13 @@ def get_apps_by_id(db: Session, app_id: uuid.UUID) -> App: return repo.get_apps_by_id(app_id) -def get_release_by_version(db: Session, app_id: uuid.UUID, version: int): - """根据版本号查询发布快照(仅返回激活状态)""" +def get_release_by_version(db: Session, app_id: uuid.UUID, release_id: uuid.UUID): + """根据发布版本ID查询发布快照(仅返回激活状态)""" from app.models.app_release_model import AppRelease return db.scalars( select(AppRelease).where( AppRelease.app_id == app_id, - AppRelease.version == version, + AppRelease.id == release_id, AppRelease.is_active.is_(True), ) ).first() diff --git a/api/app/schemas/app_schema.py b/api/app/schemas/app_schema.py index 130bff91..5f73cde1 100644 --- a/api/app/schemas/app_schema.py +++ b/api/app/schemas/app_schema.py @@ -616,7 +616,7 @@ class AppChatRequest(BaseModel): stream: bool = Field(default=False, description="是否流式返回") thinking: bool = Field(default=False, description="是否启用深度思考(需Agent配置支持)") files: List[FileInput] = Field(default_factory=list, description="附件列表(支持多文件)") - version: Optional[int] = Field(default=None, description="指定发布版本号,不传则使用当前发布版本") + version: Optional[uuid.UUID] = Field(default=None, description="指定发布版本ID,不传则使用当前生效版本") class DraftRunRequest(BaseModel): diff --git a/api/app/services/app_service.py b/api/app/services/app_service.py index b05e9621..e5d28c8d 100644 --- a/api/app/services/app_service.py +++ b/api/app/services/app_service.py @@ -619,12 +619,12 @@ class AppService: self._validate_app_accessible(app, workspace_id) return app - def get_release_by_version(self, app_id: uuid.UUID, version: int) -> AppRelease: - """按版本号获取发布快照 + def get_release_by_version(self, app_id: uuid.UUID, release_id: uuid.UUID) -> AppRelease: + """按发布版本ID获取发布快照 Args: app_id: 应用ID - version: 版本号(整数,按应用内递增) + release_id: 发布版本ID Returns: AppRelease: 发布快照 @@ -633,10 +633,10 @@ class AppService: BusinessException: 版本不存在或已下线 """ from app.repositories.app_repository import get_release_by_version - release = get_release_by_version(self.db, app_id, version) + release = get_release_by_version(self.db, app_id, release_id) if not release: raise BusinessException( - f"版本 {version} 不存在或已下线", + f"版本 {release_id} 不存在或已下线", BizCode.RELEASE_NOT_FOUND, ) return release