Browse Source

all

hanyuqing
hanyuqing 3 months ago
parent
commit
f1e8480d23
  1. 2
      controller/BuilderController.py
  2. 31
      controller/QAController.py
  3. 20
      vue/src/system/GraphQA.vue

2
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("❌ 后端异常:")

31
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:

20
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 }}
</div>
@ -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;

Loading…
Cancel
Save