From 13352178ad15849daac6cff4d9b0a8ef2ae9a319 Mon Sep 17 00:00:00 2001 From: wxy Date: Mon, 30 Mar 2026 11:55:21 +0800 Subject: [PATCH] fix: standardize app list pagination and fix session log isolation --- api/app/controllers/app_controller.py | 7 ++++++- api/app/controllers/app_log_controller.py | 6 ++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/api/app/controllers/app_controller.py b/api/app/controllers/app_controller.py index 352e0f0c..74991bcf 100644 --- a/api/app/controllers/app_controller.py +++ b/api/app/controllers/app_controller.py @@ -95,7 +95,12 @@ def list_apps( if app_ids: items_orm = app_service.get_apps_by_ids(db, app_ids, workspace_id) items = [service._convert_to_schema(app, workspace_id) for app in items_orm] - return success(data=items) + # 返回标准分页格式 + meta = PageMeta(page=1, pagesize=len(items), total=len(items), hasnext=False) + return success(data=PageData(page=meta, items=items)) + # ids 为空时,返回空列表 + meta = PageMeta(page=1, pagesize=0, total=0, hasnext=False) + return success(data=PageData(page=meta, items=[])) # 正常分页查询 items_orm, total = app_service.list_apps( diff --git a/api/app/controllers/app_log_controller.py b/api/app/controllers/app_log_controller.py index dfd10644..ac0b2ac4 100644 --- a/api/app/controllers/app_log_controller.py +++ b/api/app/controllers/app_log_controller.py @@ -35,6 +35,7 @@ def list_app_logs( - 支持按 user_id 筛选 - 支持按 is_draft 筛选(草稿会话 / 发布会话) - 按最新更新时间倒序排列 + - 所有人(包括共享者和被共享者)都只能查看自己的会话记录 """ workspace_id = current_user.current_workspace_id @@ -47,6 +48,9 @@ def list_app_logs( Conversation.workspace_id == workspace_id, Conversation.is_active.is_(True), ) + + # 所有人只能查看自己的会话记录 + stmt = stmt.where(Conversation.user_id == str(current_user.id)) if user_id: stmt = stmt.where(Conversation.user_id == user_id) @@ -86,6 +90,7 @@ def get_app_log_detail( - 返回会话基本信息 + 所有消息(按时间正序) - 消息 meta_data 包含模型名、token 用量等信息 + - 所有人(包括共享者和被共享者)都只能查看自己的会话详情 """ workspace_id = current_user.current_workspace_id @@ -100,6 +105,7 @@ def get_app_log_detail( Conversation.app_id == app_id, Conversation.workspace_id == workspace_id, Conversation.is_active.is_(True), + Conversation.user_id == str(current_user.id), ) ).first()