From bf3e30dac02eb7054d6c0a4b79ee10a8d258d7cb Mon Sep 17 00:00:00 2001 From: lixinyue11 <94037597+lixinyue11@users.noreply.github.com> Date: Wed, 28 Jan 2026 10:07:32 +0800 Subject: [PATCH] Fix/memory bug fix (#212) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 图谱数据量限制数量去掉 * 图谱数据量限制数量去掉 * 图谱数据量限制数量去掉 * 用户详情优化 * 用户详情优化 * 用户详情优化 * 用户详情优化 * 用户详情优化 * 用户详情优化 * 读取的接口,去掉全局锁 * 输出数组 * 反思优化1.0(优化隐私输出、时间检索) * 反思优化1.0(优化隐私输出、时间检索) * 反思优化1.0(优化隐私输出、时间检索) * 反思优化测试接口 * 反思优化测试接口 * 读取接口内层嵌套BUG修复 * 读取接口内层嵌套BUG修复 * 读取接口内层嵌套BUG修复 * 读取接口内层嵌套BUG修复 * 读取接口内层嵌套BUG修复 * 新增中翻英功能(记忆时间线)(用户摘要)(兴趣分布接口)(查询核心档案)(记忆洞察) * 新增中翻英功能(记忆时间线)(用户摘要)(兴趣分布接口)(查询核心档案)(记忆洞察)-接口添加翻译字段 * 新增中翻英功能(记忆时间线)(用户摘要)(兴趣分布接口)(查询核心档案)(记忆洞察)-接口添加翻译字段 * 新增中翻英功能(记忆时间线)(用户摘要)(兴趣分布接口)(查询核心档案)(记忆洞察)-接口添加翻译字段 * 新增中翻英功能(记忆时间线)(用户摘要)(兴趣分布接口)(查询核心档案)(记忆洞察)-接口添加翻译字段 * 新增中翻英功能(记忆时间线)(用户摘要)(兴趣分布接口)(查询核心档案)(记忆洞察)-接口添加翻译字段 * 新增中翻英功能(记忆时间线)(用户摘要)(兴趣分布接口)(查询核心档案)(记忆洞察)-接口添加翻译字段 * 把group_id替换end_user_id * 把group_id替换end_user_id_ * 把group_id替换end_user_id_ * config_config替换成memory_config * config_config替换成memory_config * [fix]Fix the memory interface to use end_user_id. * config_config替换成memory_config * config_config替换成memory_config * config_config替换成memory_config * config_id字段改成UUID * config_id字段改成UUID * config_id字段改成UUID * config_id字段改成UUID,与develop校对恢复 * 检查项目,修复group_id的遗留问题 * 检查项目,修复group_id的遗留问题 * 解决冲突 * 解决冲突 * end_user_id清理干净 * end_user_id清理干净 * 修复遗留合并BUG * 修复遗留合并BUG * 修复遗留合并BUG * 修复遗留合并BUG * 感知meta_data字段BUG修复 * user_id->现实为config_id_old * user_id->显示为config_id_old传输 * user_id->显示为config_id_old传输 * user_id->显示为config_id_old传输 * 检查需要更改的格式问题 * 修复宿主列表获取memory_config_idBUG * config_id做映射 * config_id做映射 * config_id做映射+1 * config_id做映射+1 * config_id做映射+1 --------- Co-authored-by: lanceyq <1982376970@qq.com> --- .../memory_dashboard_controller.py | 1 - api/app/services/memory_agent_service.py | 36 ++++++++++++++++--- 2 files changed, 31 insertions(+), 6 deletions(-) diff --git a/api/app/controllers/memory_dashboard_controller.py b/api/app/controllers/memory_dashboard_controller.py index 6181c319..88684a39 100644 --- a/api/app/controllers/memory_dashboard_controller.py +++ b/api/app/controllers/memory_dashboard_controller.py @@ -92,7 +92,6 @@ async def get_workspace_end_users( workspace_id=workspace_id, current_user=current_user ) - if not end_users: api_logger.info("工作空间下没有宿主") # 缓存空结果,避免重复查询 diff --git a/api/app/services/memory_agent_service.py b/api/app/services/memory_agent_service.py index c05ae027..2378da51 100644 --- a/api/app/services/memory_agent_service.py +++ b/api/app/services/memory_agent_service.py @@ -1283,6 +1283,8 @@ def get_end_users_connected_configs_batch(end_user_ids: List[str], db: Session) # 3. 收集所有 memory_config_id 并批量查询配置名称 memory_config_ids = [] + old_config_ids = [] # 存储旧的整数ID + for end_user_id, app_id in user_to_app.items(): release = app_to_release.get(app_id) if release: @@ -1290,13 +1292,37 @@ def get_end_users_connected_configs_batch(end_user_ids: List[str], db: Session) memory_obj = config.get('memory', {}) memory_config_id = memory_obj.get('memory_content') if isinstance(memory_obj, dict) else None if memory_config_id: - memory_config_ids.append(memory_config_id) - + # 判断是否为UUID格式 + if len(str(memory_config_id))>=5: + uuid.UUID(str(memory_config_id)) + memory_config_ids.append(memory_config_id) + else: + old_config_ids.append(str(memory_config_id)) + # 批量查询 memory_config_name config_id_to_name = {} + + # 记录分类结果 + if memory_config_ids or old_config_ids: + logger.info(f"Collected {len(memory_config_ids)} UUID config_ids and {len(old_config_ids)} old integer config_ids") + if old_config_ids: + logger.debug(f"Old config IDs: {old_config_ids}") + + # 查询新的UUID格式的config_id if memory_config_ids: memory_configs = db.query(MemoryConfig).filter(MemoryConfig.config_id.in_(memory_config_ids)).all() - config_id_to_name = {str(mc.config_id): mc.config_name for mc in memory_configs} + config_id_to_name.update({str(mc.config_id): mc.config_name for mc in memory_configs}) + + # 查询旧的整数ID(通过config_id_old字段) + if old_config_ids: + old_memory_configs = db.query(MemoryConfig).filter(MemoryConfig.config_id_old.in_(old_config_ids)).all() + # 使用config_id_old作为key,这样后面查找时能匹配上 + config_id_to_name.update({str(mc.config_id_old): mc.config_name for mc in old_memory_configs}) + # 同时也添加config_id作为key,方便后续使用 + for mc in old_memory_configs: + if mc.config_id_old: + config_id_to_name[str(mc.config_id)] = mc.config_name + logger.info(f"Found {len(old_memory_configs)} configs for old IDs") # 4. 构建最终结果 for end_user_id, app_id in user_to_app.items(): @@ -1312,8 +1338,8 @@ def get_end_users_connected_configs_batch(end_user_ids: List[str], db: Session) memory_obj = config.get('memory', {}) memory_config_id = memory_obj.get('memory_content') if isinstance(memory_obj, dict) else None - # 获取配置名称 - memory_config_name = config_id_to_name.get(memory_config_id) if memory_config_id else None + # 获取配置名称(使用字符串形式的ID进行查找,兼容新旧格式) + memory_config_name = config_id_to_name.get(str(memory_config_id)) if memory_config_id else None result[end_user_id] = { "memory_config_id": memory_config_id,