diff --git a/controller/BuilderController.py b/controller/BuilderController.py index 3d1e67d..aec9d45 100644 --- a/controller/BuilderController.py +++ b/controller/BuilderController.py @@ -107,7 +107,6 @@ async def analyze(request: Request): json={"text": final_text}, timeout=1800.0 # 30分钟 ) - # 6. 返回结果 if resp.status_code in (200, 202): try: @@ -121,7 +120,6 @@ async def analyze(request: Request): "detail": resp.text, "status_code": resp.status_code }, status_code=resp.status_code) - except Exception as e: error_trace = traceback.format_exc() print("❌ 后端异常:") diff --git a/controller/QAController.py b/controller/QAController.py index 750cd5e..9c49b42 100644 --- a/controller/QAController.py +++ b/controller/QAController.py @@ -21,6 +21,7 @@ async def analyze(request): json={"text": input_text}, timeout=1800.0 # 30分钟 ) + qaList = [] if resp.status_code == 202 or resp.status_code == 200: resp_json = resp.json() @@ -45,9 +46,37 @@ async def analyze(request): "text": input_text}, timeout=1800.0 # 30分钟 ) + resp_data = resp.json() + inner_data = json.loads(resp_data["data"]) + # 第二步:获取 json 数组 + items = inner_data["json"] + + # 第三步:按 sort 排序(虽然所有都是 0.9,但为了通用性还是排序) + # 如果 sort 相同,可以保留原始顺序(使用 stable sort),或按 xh 排序等 + sorted_items = sorted(items, key=lambda x: x["sort"], reverse=True) + + # 第四步:取前5个 + top5 = sorted_items[:1] + for item in top5: + resp = await client.post( + "/extract_entities_and_relations", + json={"text": item['answer']}, + timeout=1800.0 # 30分钟 + ) + if resp.status_code in (200, 202): + result = resp.json() + print(result) + qaList.append({ + "answer": item["answer"], + "result": result, + }) + print(f"xh: {item['xh']}, answer: {item['answer']}, sort: {item['sort']}") + print(resp.json()) + + return Response( status_code=200, - description=jsonify(resp.json()), + description=jsonify(qaList), headers={"Content-Type": "text/plain; charset=utf-8"} ) else: diff --git a/vue/src/system/GraphQA.vue b/vue/src/system/GraphQA.vue index 40da065..d4805da 100644 --- a/vue/src/system/GraphQA.vue +++ b/vue/src/system/GraphQA.vue @@ -32,7 +32,8 @@ v-for="(item, index) in answers" :key="index" class="answer-item" - :class="{ 'highlight': index === 0 }" + @click="selectGraph(index)" + :class="{ 'highlight': selected === index }" > {{ item }} @@ -60,15 +61,21 @@ export default { data() { return { query:"", - answers:['糖尿病不能吃什么','糖尿病不能吃什么','糖尿病不能吃什么','糖尿病不能吃什么','糖尿病不能吃什么',] + answers:['糖尿病不能吃什么','糖尿病不能吃什么','糖尿病不能吃什么','糖尿病不能吃什么','糖尿病不能吃什么',], + selected:0, + }; }, methods: { + selectGraph(index){ + this.selected=index + }, handleSearch(){ let data={ text:this.query } - qaAnalyze().then(res=>{ + this.query="" + qaAnalyze(data).then(res=>{ }) } @@ -167,6 +174,7 @@ export default { height: 30vw; overflow-y: auto; padding-right: 10px; + cursor: pointer; } .answer-items::-webkit-scrollbar { @@ -208,7 +216,11 @@ export default { border-color: #0066cc; color: #fff; } - +.answer-item:hover { + background-color: #165DFF; + border-color: #0066cc; + color: #fff; +} .empty-state { text-align: center; color: #fff;