diff --git a/controller/QAController.py b/controller/QAController.py
index 9c49b42..0613334 100644
--- a/controller/QAController.py
+++ b/controller/QAController.py
@@ -1,5 +1,7 @@
import json
import traceback
+import uuid
+
from util.neo4j_utils import Neo4jUtil, neo4j_client
import httpx
from robyn import jsonify, Response
@@ -7,7 +9,48 @@ from robyn import jsonify, Response
from app import app
from controller.client import client
+def convert_to_g6_format(data):
+ entities = data["entities"]
+ relations = data["relations"]
+
+ # 创建实体名称到唯一ID的映射
+ name_to_id = {}
+ nodes = []
+
+ for ent in entities:
+ name = ent["n"]
+ if name not in name_to_id:
+ node_id = str(uuid.uuid4())
+ name_to_id[name] = node_id
+ nodes.append({
+ "id": node_id,
+ "label": name,
+ "type": ent["t"] # 可用于 G6 的节点样式区分
+ })
+
+ # 构建边
+ edges = []
+ for rel in relations:
+ e1 = rel["e1"]
+ e2 = rel["e2"]
+ r = rel["r"]
+
+ source_id = name_to_id.get(e1)
+ target_id = name_to_id.get(e2)
+ if source_id and target_id:
+ edges.append({
+ "source": source_id,
+ "target": target_id,
+ "label": r
+ })
+ else:
+ print(f"Warning: Entity not found for relation: {rel}")
+
+ return {
+ "nodes": nodes,
+ "edges": edges
+ }
@app.post("/api/qa/analyze")
async def analyze(request):
body = request.json()
@@ -56,7 +99,7 @@ async def analyze(request):
sorted_items = sorted(items, key=lambda x: x["sort"], reverse=True)
# 第四步:取前5个
- top5 = sorted_items[:1]
+ top5 = sorted_items[:5]
for item in top5:
resp = await client.post(
"/extract_entities_and_relations",
@@ -66,14 +109,14 @@ async def analyze(request):
if resp.status_code in (200, 202):
result = resp.json()
print(result)
+ g6_data = convert_to_g6_format(result)
+ print(g6_data)
qaList.append({
"answer": item["answer"],
- "result": result,
+ "result": g6_data,
})
print(f"xh: {item['xh']}, answer: {item['answer']}, sort: {item['sort']}")
print(resp.json())
-
-
return Response(
status_code=200,
description=jsonify(qaList),
diff --git a/vue/src/system/GraphBuilder.vue b/vue/src/system/GraphBuilder.vue
index 6152a1d..1cd39e4 100644
--- a/vue/src/system/GraphBuilder.vue
+++ b/vue/src/system/GraphBuilder.vue
@@ -28,8 +28,6 @@
-
-
{{ msg.content }}
@@ -52,8 +50,8 @@
type="checkbox"
:id="'entity-' + i"
:value="ent"
- v-model="selectedEntities"
- @change=""
+ v-model="ent.selected"
+ @click="handleEntitySelectionChange(msg,ent)"
/>
@@ -53,6 +65,8 @@