From d477520b67a1b73b9560fcb6d0fa042807861e1c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B9=90=E5=8A=9B=E9=BD=90?= <162269739+lanceyq@users.noreply.github.com> Date: Mon, 12 Jan 2026 18:47:40 +0800 Subject: [PATCH] [fix]Return the "statement" attribute (#76) * [fix]Return the "statement" attribute * [fix]Trigger the forgetting cycle using the end_user_id --- api/app/controllers/memory_forget_controller.py | 15 ++++++++------- .../forgetting_engine/access_history_manager.py | 1 + api/app/schemas/memory_storage_schema.py | 2 +- 3 files changed, 10 insertions(+), 8 deletions(-) diff --git a/api/app/controllers/memory_forget_controller.py b/api/app/controllers/memory_forget_controller.py index 705445fd..e8a5732f 100644 --- a/api/app/controllers/memory_forget_controller.py +++ b/api/app/controllers/memory_forget_controller.py @@ -70,24 +70,25 @@ async def trigger_forgetting_cycle( ApiResponse: 包含遗忘报告的响应 """ workspace_id = current_user.current_workspace_id + end_user_id = payload.end_user_id # 从 payload 中获取 end_user_id # 检查用户是否已选择工作空间 if workspace_id is None: api_logger.warning(f"用户 {current_user.username} 尝试触发遗忘周期但未选择工作空间") return fail(BizCode.INVALID_PARAMETER, "请先切换到一个工作空间", "current_workspace_id is None") - # 通过 group_id 获取关联的 config_id + # 通过 end_user_id 获取关联的 config_id try: from app.services.memory_agent_service import get_end_user_connected_config - connected_config = get_end_user_connected_config(payload.group_id, db) + connected_config = get_end_user_connected_config(end_user_id, db) config_id = connected_config.get("memory_config_id") if config_id is None: - api_logger.warning(f"终端用户 {payload.group_id} 未关联记忆配置") - return fail(BizCode.INVALID_PARAMETER, f"终端用户 {payload.group_id} 未关联记忆配置", "memory_config_id is None") + api_logger.warning(f"终端用户 {end_user_id} 未关联记忆配置") + return fail(BizCode.INVALID_PARAMETER, f"终端用户 {end_user_id} 未关联记忆配置", "memory_config_id is None") - api_logger.debug(f"通过 group_id={payload.group_id} 获取到 config_id={config_id}") + api_logger.debug(f"通过 end_user_id={end_user_id} 获取到 config_id={config_id}") except ValueError as e: api_logger.warning(f"获取终端用户配置失败: {str(e)}") return fail(BizCode.INVALID_PARAMETER, str(e), "ValueError") @@ -97,7 +98,7 @@ async def trigger_forgetting_cycle( api_logger.info( f"用户 {current_user.username} 在工作空间 {workspace_id} 请求触发遗忘周期: " - f"group_id={payload.group_id}, config_id={config_id}, max_batch={payload.max_merge_batch_size}, " + f"end_user_id={end_user_id}, config_id={config_id}, max_batch={payload.max_merge_batch_size}, " f"min_days={payload.min_days_since_access}" ) @@ -105,7 +106,7 @@ async def trigger_forgetting_cycle( # 调用服务层执行遗忘周期 report = await forget_service.trigger_forgetting_cycle( db=db, - group_id=payload.group_id, + group_id=end_user_id, # 服务层方法的参数名是 group_id max_merge_batch_size=payload.max_merge_batch_size, min_days_since_access=payload.min_days_since_access, config_id=config_id diff --git a/api/app/core/memory/storage_services/forgetting_engine/access_history_manager.py b/api/app/core/memory/storage_services/forgetting_engine/access_history_manager.py index 729a5542..913874f1 100644 --- a/api/app/core/memory/storage_services/forgetting_engine/access_history_manager.py +++ b/api/app/core/memory/storage_services/forgetting_engine/access_history_manager.py @@ -641,6 +641,7 @@ class AccessHistoryManager: n.access_count = $access_count, n.version = $new_version RETURN n.id as id, + n.statement as statement, n.activation_value as activation_value, n.access_history as access_history, n.last_access_time as last_access_time, diff --git a/api/app/schemas/memory_storage_schema.py b/api/app/schemas/memory_storage_schema.py index afaec722..ecb1570f 100644 --- a/api/app/schemas/memory_storage_schema.py +++ b/api/app/schemas/memory_storage_schema.py @@ -409,7 +409,7 @@ class ForgettingTriggerRequest(BaseModel): """手动触发遗忘周期请求模型""" model_config = ConfigDict(populate_by_name=True, extra="forbid") - group_id: str = Field(..., description="组ID(即终端用户ID,必填)") + end_user_id: str = Field(..., description="组ID(即终端用户ID,必填)") max_merge_batch_size: int = Field(100, ge=1, le=1000, description="单次最大融合节点对数(默认100)") min_days_since_access: int = Field(30, ge=1, le=365, description="最小未访问天数(默认30天)")