Fix/release memory bug (#335)
* Write Missing None * Write Missing None * Write Missing None * Apply suggestion from @sourcery-ai[bot] Co-authored-by: sourcery-ai[bot] <58596630+sourcery-ai[bot]@users.noreply.github.com> * Write Missing None * redis update * redis update * redis update * redis update * writer_dup_bug/fix * writer_graph_bug/fix * writer_graph_bug/fix --------- Co-authored-by: sourcery-ai[bot] <58596630+sourcery-ai[bot]@users.noreply.github.com>
This commit is contained in:
@@ -1004,3 +1004,58 @@ RETURN DISTINCT
|
|||||||
x.statement as statement,x.created_at as created_at
|
x.statement as statement,x.created_at as created_at
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
Graph_Node_query = """
|
||||||
|
MATCH (n:MemorySummary)
|
||||||
|
WHERE n.end_user_id = $end_user_id
|
||||||
|
RETURN
|
||||||
|
elementId(n) AS id,
|
||||||
|
labels(n) AS labels,
|
||||||
|
properties(n) AS properties,
|
||||||
|
0 AS priority
|
||||||
|
LIMIT $limit
|
||||||
|
|
||||||
|
UNION ALL
|
||||||
|
|
||||||
|
MATCH (n:Dialogue)
|
||||||
|
WHERE n.end_user_id = $end_user_id
|
||||||
|
RETURN
|
||||||
|
elementId(n) AS id,
|
||||||
|
labels(n) AS labels,
|
||||||
|
properties(n) AS properties,
|
||||||
|
1 AS priority
|
||||||
|
LIMIT 1
|
||||||
|
|
||||||
|
UNION ALL
|
||||||
|
|
||||||
|
MATCH (n:Statement)
|
||||||
|
WHERE n.end_user_id = $end_user_id
|
||||||
|
RETURN
|
||||||
|
elementId(n) AS id,
|
||||||
|
labels(n) AS labels,
|
||||||
|
properties(n) AS properties,
|
||||||
|
1 AS priority
|
||||||
|
LIMIT $limit
|
||||||
|
|
||||||
|
UNION ALL
|
||||||
|
|
||||||
|
MATCH (n:ExtractedEntity)
|
||||||
|
WHERE n.end_user_id = $end_user_id
|
||||||
|
RETURN
|
||||||
|
elementId(n) AS id,
|
||||||
|
labels(n) AS labels,
|
||||||
|
properties(n) AS properties,
|
||||||
|
2 AS priority
|
||||||
|
LIMIT $limit
|
||||||
|
|
||||||
|
UNION ALL
|
||||||
|
|
||||||
|
MATCH (n:Chunk)
|
||||||
|
WHERE n.end_user_id = $end_user_id
|
||||||
|
RETURN
|
||||||
|
elementId(n) AS id,
|
||||||
|
labels(n) AS labels,
|
||||||
|
properties(n) AS properties,
|
||||||
|
3 AS priority
|
||||||
|
LIMIT $limit
|
||||||
|
|
||||||
|
"""
|
||||||
@@ -15,6 +15,7 @@ from app.core.memory.utils.llm.llm_utils import MemoryClientFactory
|
|||||||
from app.db import get_db_context
|
from app.db import get_db_context
|
||||||
from app.repositories.conversation_repository import ConversationRepository
|
from app.repositories.conversation_repository import ConversationRepository
|
||||||
from app.repositories.end_user_repository import EndUserRepository
|
from app.repositories.end_user_repository import EndUserRepository
|
||||||
|
from app.repositories.neo4j.cypher_queries import Graph_Node_query
|
||||||
from app.repositories.neo4j.neo4j_connector import Neo4jConnector
|
from app.repositories.neo4j.neo4j_connector import Neo4jConnector
|
||||||
from app.schemas.memory_episodic_schema import EmotionSubject, EmotionType, type_mapping
|
from app.schemas.memory_episodic_schema import EmotionSubject, EmotionType, type_mapping
|
||||||
from app.services.implicit_memory_service import ImplicitMemoryService
|
from app.services.implicit_memory_service import ImplicitMemoryService
|
||||||
@@ -1508,7 +1509,6 @@ async def analytics_graph_data(
|
|||||||
user_uuid = uuid.UUID(end_user_id)
|
user_uuid = uuid.UUID(end_user_id)
|
||||||
repo = EndUserRepository(db)
|
repo = EndUserRepository(db)
|
||||||
end_user = repo.get_by_id(user_uuid)
|
end_user = repo.get_by_id(user_uuid)
|
||||||
|
|
||||||
if not end_user:
|
if not end_user:
|
||||||
logger.warning(f"未找到 end_user_id 为 {end_user_id} 的用户")
|
logger.warning(f"未找到 end_user_id 为 {end_user_id} 的用户")
|
||||||
return {
|
return {
|
||||||
@@ -1562,21 +1562,11 @@ async def analytics_graph_data(
|
|||||||
}
|
}
|
||||||
else:
|
else:
|
||||||
# 查询所有节点
|
# 查询所有节点
|
||||||
node_query = """
|
node_query=Graph_Node_query
|
||||||
MATCH (n)
|
|
||||||
WHERE n.end_user_id = $end_user_id
|
|
||||||
RETURN
|
|
||||||
elementId(n) as id,
|
|
||||||
labels(n)[0] as label,
|
|
||||||
properties(n) as properties
|
|
||||||
LIMIT $limit
|
|
||||||
"""
|
|
||||||
node_params = {
|
node_params = {
|
||||||
"end_user_id": end_user_id,
|
"end_user_id": end_user_id,
|
||||||
"limit": limit
|
"limit": limit
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
# 执行节点查询
|
# 执行节点查询
|
||||||
node_results = await _neo4j_connector.execute_query(node_query, **node_params)
|
node_results = await _neo4j_connector.execute_query(node_query, **node_params)
|
||||||
|
|
||||||
@@ -1587,9 +1577,9 @@ async def analytics_graph_data(
|
|||||||
|
|
||||||
for record in node_results:
|
for record in node_results:
|
||||||
node_id = record["id"]
|
node_id = record["id"]
|
||||||
node_label = record["label"]
|
node_labels = record.get("labels", [])
|
||||||
|
node_label = node_labels[0] if node_labels else "Unknown"
|
||||||
node_props = record["properties"]
|
node_props = record["properties"]
|
||||||
|
|
||||||
# 根据节点类型提取需要的属性字段
|
# 根据节点类型提取需要的属性字段
|
||||||
filtered_props = await _extract_node_properties(node_label, node_props,node_id)
|
filtered_props = await _extract_node_properties(node_label, node_props,node_id)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user