Skip to content

Commit 91cc20d

Browse files
authored
Merge pull request #857 from wanxunyang/feature/switch-app-version-for-shared-api-key-apps
feat: add versioned app chat API and fix release isolation bug
2 parents 0019f3a + 7869121 commit 91cc20d

4 files changed

Lines changed: 13 additions & 13 deletions

File tree

api/app/controllers/service/app_api_controller.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -91,16 +91,16 @@ async def chat(
9191
Agent/Workflow 聊天接口
9292
9393
- 不传 version:使用当前生效版本(current_release,回滚后为回滚目标版本)
94-
- 传 version=N:使用指定版本号的历史快照,例如 {"version": 2}
94+
- 传 version=release_id:使用指定版本uuid的历史快照,例如 {"version": "{{release_id}}"}
9595
"""
9696
body = await request.json()
9797
payload = AppChatRequest(**body)
9898

9999
app = app_service.get_app(api_key_auth.resource_id, api_key_auth.workspace_id)
100100

101-
# 版本切换:指定 version 时查找对应历史快照,否则使用当前激活版本
101+
# 版本切换:指定 release_id 时查找对应历史快照,否则使用当前激活版本
102102
if payload.version is not None:
103-
active_release = app_service.get_release_by_version(app.id, payload.version)
103+
active_release = app_service.get_release_by_id(app.id, payload.version)
104104
else:
105105
active_release = app.current_release
106106
other_id = payload.user_id

api/app/repositories/app_repository.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -63,13 +63,13 @@ def get_apps_by_id(db: Session, app_id: uuid.UUID) -> App:
6363
return repo.get_apps_by_id(app_id)
6464

6565

66-
def get_release_by_version(db: Session, app_id: uuid.UUID, version: int):
67-
"""根据版本号查询发布快照(仅返回激活状态)"""
66+
def get_release_by_id(db: Session, app_id: uuid.UUID, release_id: uuid.UUID):
67+
"""根据发布版本ID查询发布快照(仅返回激活状态)"""
6868
from app.models.app_release_model import AppRelease
6969
return db.scalars(
7070
select(AppRelease).where(
7171
AppRelease.app_id == app_id,
72-
AppRelease.version == version,
72+
AppRelease.id == release_id,
7373
AppRelease.is_active.is_(True),
7474
)
7575
).first()

api/app/schemas/app_schema.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -616,7 +616,7 @@ class AppChatRequest(BaseModel):
616616
stream: bool = Field(default=False, description="是否流式返回")
617617
thinking: bool = Field(default=False, description="是否启用深度思考(需Agent配置支持)")
618618
files: List[FileInput] = Field(default_factory=list, description="附件列表(支持多文件)")
619-
version: Optional[int] = Field(default=None, description="指定发布版本号,不传则使用当前发布版本")
619+
version: Optional[uuid.UUID] = Field(default=None, description="指定发布版本ID,不传则使用当前生效版本")
620620

621621

622622
class DraftRunRequest(BaseModel):

api/app/services/app_service.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -619,24 +619,24 @@ def get_app(
619619
self._validate_app_accessible(app, workspace_id)
620620
return app
621621

622-
def get_release_by_version(self, app_id: uuid.UUID, version: int) -> AppRelease:
623-
"""按版本号获取发布快照
622+
def get_release_by_id(self, app_id: uuid.UUID, release_id: uuid.UUID) -> AppRelease:
623+
"""按发布版本ID获取发布快照
624624
625625
Args:
626626
app_id: 应用ID
627-
version: 版本号(整数,按应用内递增)
627+
release_id: 发布版本ID
628628
629629
Returns:
630630
AppRelease: 发布快照
631631
632632
Raises:
633633
BusinessException: 版本不存在或已下线
634634
"""
635-
from app.repositories.app_repository import get_release_by_version
636-
release = get_release_by_version(self.db, app_id, version)
635+
from app.repositories.app_repository import get_release_by_id
636+
release = get_release_by_id(self.db, app_id, release_id)
637637
if not release:
638638
raise BusinessException(
639-
f"版本 {version} 不存在或已下线",
639+
f"版本 {release_id} 不存在或已下线",
640640
BizCode.RELEASE_NOT_FOUND,
641641
)
642642
return release

0 commit comments

Comments
 (0)