From 3237f4cd6eb7f527d2467baf63b49dca93f58937 Mon Sep 17 00:00:00 2001 From: Timebomb2018 <18868801967@163.com> Date: Tue, 10 Mar 2026 11:27:28 +0800 Subject: [PATCH] feat(app): Application (agent, workflow) import/export --- api/app/controllers/app_controller.py | 4 ++-- api/app/services/app_dsl_service.py | 12 ++++++------ 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/api/app/controllers/app_controller.py b/api/app/controllers/app_controller.py index a4048bf4..cadc7df8 100644 --- a/api/app/controllers/app_controller.py +++ b/api/app/controllers/app_controller.py @@ -1021,12 +1021,12 @@ async def export_app( app_id: uuid.UUID, db: Annotated[Session, Depends(get_db)], current_user: Annotated[User, Depends(get_current_user)], - release_version: Optional[str] = None + release_id: Optional[uuid.UUID] = None ): """导出 agent / multi_agent / workflow 应用配置为 YAML 文件流。 release_version: 指定发布版本号,不传则导出当前草稿配置。 """ - yaml_str, filename = AppDslService(db).export_dsl(app_id, release_version) + yaml_str, filename = AppDslService(db).export_dsl(app_id, release_id) encoded = quote(filename, safe=".") yaml_bytes = yaml_str.encode("utf-8") file_stream = io.BytesIO(yaml_bytes) diff --git a/api/app/services/app_dsl_service.py b/api/app/services/app_dsl_service.py index 7258fc2b..c120d98b 100644 --- a/api/app/services/app_dsl_service.py +++ b/api/app/services/app_dsl_service.py @@ -26,7 +26,7 @@ class AppDslService: # ==================== 导出 ==================== - def export_dsl(self, app_id: uuid.UUID, release_version: Optional[str] = None) -> tuple[str, str]: + def export_dsl(self, app_id: uuid.UUID, release_id: Optional[uuid.UUID] = None) -> tuple[str, str]: """构建应用 DSL yaml 字符串,返回 (yaml_str, filename)""" app = self.db.query(App).filter(App.id == app_id, App.is_active.is_(True)).first() if not app: @@ -46,19 +46,19 @@ class AppDslService: "tags": app.tags or [], } - if release_version is not None: - return self._export_release(app, release_version, meta, app_meta) + if release_id is not None: + return self._export_release(app, release_id, meta, app_meta) return self._export_draft(app, meta, app_meta) - def _export_release(self, app: App, release_version: str, meta: dict, app_meta: dict) -> tuple[str, str]: + def _export_release(self, app: App, release_id: uuid.UUID, meta: dict, app_meta: dict) -> tuple[str, str]: release = self.db.query(AppRelease).filter( AppRelease.app_id == app.id, - AppRelease.id == release_version, + AppRelease.id == release_id, AppRelease.is_active.is_(True) ).first() if not release: - raise ResourceNotFoundException("版本", str(release_version)) + raise ResourceNotFoundException("版本", str(release_id)) meta["release_version"] = release.version meta["release_name"] = release.version_name