fix(graph_store): 修复边类型处理逻辑,确保使用 EdgeType 枚举并移除重复注销记忆边的调用

This commit is contained in:
LuiKlee
2025-12-16 14:17:13 +08:00
parent 7a500d15a1
commit d2af8078eb

View File

@@ -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", {}),
)