From d2af8078eb35d8055fef30b2aac4a217e1891553 Mon Sep 17 00:00:00 2001 From: LuiKlee Date: Tue, 16 Dec 2025 14:17:13 +0800 Subject: [PATCH] =?UTF-8?q?fix(graph=5Fstore):=20=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E8=BE=B9=E7=B1=BB=E5=9E=8B=E5=A4=84=E7=90=86=E9=80=BB=E8=BE=91?= =?UTF-8?q?=EF=BC=8C=E7=A1=AE=E4=BF=9D=E4=BD=BF=E7=94=A8=20EdgeType=20?= =?UTF-8?q?=E6=9E=9A=E4=B8=BE=E5=B9=B6=E7=A7=BB=E9=99=A4=E9=87=8D=E5=A4=8D?= =?UTF-8?q?=E6=B3=A8=E9=94=80=E8=AE=B0=E5=BF=86=E8=BE=B9=E7=9A=84=E8=B0=83?= =?UTF-8?q?=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/memory_graph/storage/graph_store.py | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/src/memory_graph/storage/graph_store.py b/src/memory_graph/storage/graph_store.py index 1caedc345..3b4fbcae6 100644 --- a/src/memory_graph/storage/graph_store.py +++ b/src/memory_graph/storage/graph_store.py @@ -9,7 +9,7 @@ from collections.abc import Iterable import networkx as nx from src.common.logger import get_logger -from src.memory_graph.models import Memory, MemoryEdge +from src.memory_graph.models import EdgeType, Memory, MemoryEdge logger = get_logger(__name__) @@ -159,9 +159,6 @@ class GraphStore: # 1.5. 注销记忆中的边的邻接索引记录 self._unregister_memory_edges(memory) - # 1.5. 注销记忆中的边的邻接索引记录 - self._unregister_memory_edges(memory) - # 2. 添加节点到图 if not self.graph.has_node(node_id): from datetime import datetime @@ -201,6 +198,9 @@ class GraphStore: ) memory.nodes.append(new_node) + # 5. 重新注册记忆中的边到邻接索引 + self._register_memory_edges(memory) + logger.debug(f"添加节点成功: {node_id} -> {memory_id}") return True @@ -926,12 +926,23 @@ class GraphStore: mem_edge = MemoryEdge.from_dict(edge_dict) except Exception: # 兼容性:直接构造对象 + # 确保 edge_type 是 EdgeType 枚举 + edge_type_value = edge_dict["edge_type"] + if isinstance(edge_type_value, str): + try: + edge_type_enum = EdgeType(edge_type_value) + except ValueError: + logger.warning(f"未知的边类型: {edge_type_value}, 使用默认值") + edge_type_enum = EdgeType.RELATION + else: + edge_type_enum = edge_type_value + mem_edge = MemoryEdge( id=edge_dict["id"] or "", source_id=edge_dict["source_id"], target_id=edge_dict["target_id"], relation=edge_dict["relation"], - edge_type=edge_dict["edge_type"], + edge_type=edge_type_enum, importance=edge_dict.get("importance", 0.5), metadata=edge_dict.get("metadata", {}), )