feat: 增加简化版json数据

This commit is contained in:
2026-04-15 14:52:33 +08:00
parent 37cd2171b1
commit 8c5cd3705a
9 changed files with 310 additions and 1 deletions
+63
View File
@@ -215,6 +215,69 @@ func (s *Neo4jService) GetStats() map[string]int {
}
}
// GetSimpleGraphData 获取简化的图数据,仅保留核心信息,适合 LLM 处理
func (s *Neo4jService) GetSimpleGraphData() models.SimpleGraphData {
ctx := context.Background()
var nodes []models.SimpleNode
var edges []models.SimpleEdge
nodeResult, err := neo4j.ExecuteQuery(ctx, s.driver,
"MATCH (n) RETURN n",
map[string]any{},
neo4j.EagerResultTransformer,
)
if err != nil {
fmt.Printf("Error querying nodes: %v\n", err)
return models.SimpleGraphData{}
}
for _, record := range nodeResult.Records {
if v, ok := record.Get("n"); ok {
if n, ok := v.(neo4j.Node); ok {
props := n.Props
node := models.SimpleNode{
ID: getStr(props, "id"),
Label: getStr(props, "label"),
Type: getStr(props, "type"),
}
nodes = append(nodes, node)
}
}
}
edgeResult, err := neo4j.ExecuteQuery(ctx, s.driver,
"MATCH (a)-[r]->(b) RETURN a.id AS source, b.id AS target, r",
map[string]any{},
neo4j.EagerResultTransformer,
)
if err != nil {
fmt.Printf("Error querying edges: %v\n", err)
return models.SimpleGraphData{Nodes: nodes}
}
for _, record := range edgeResult.Records {
source, _ := record.Get("source")
target, _ := record.Get("target")
v, _ := record.Get("r")
if rel, ok := v.(neo4j.Relationship); ok {
props := rel.Props
edge := models.SimpleEdge{
Source: getStr(props, "source"),
Target: getStr(props, "target"),
Type: rel.Type,
Label: getStr(props, "label"),
}
if s, ok := source.(string); ok {
edge.Source = s
}
if t, ok := target.(string); ok {
edge.Target = t
}
edges = append(edges, edge)
}
}
return models.SimpleGraphData{Nodes: nodes, Edges: edges}
}
func neo4jNodeToModel(n neo4j.Node) models.Node {
props := n.Props
node := models.Node{