You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
54 lines
1.6 KiB
54 lines
1.6 KiB
from flask import Flask, request, jsonify
|
|
from flask_cors import CORS
|
|
import asyncio
|
|
from qc_engine import QCManager
|
|
|
|
app = Flask(__name__)
|
|
CORS(app, supports_credentials=True)
|
|
|
|
# 初始化质控管理器
|
|
qc_manager = QCManager()
|
|
|
|
@app.route('/')
|
|
def hello():
|
|
return 'Ultrasound AI QC Engine is running.'
|
|
|
|
@app.route('/h', methods=["POST"])
|
|
def zhipu():
|
|
"""
|
|
对接前端的质控接口
|
|
"""
|
|
user_info = request.get_json()
|
|
|
|
# 构造传递给 QCManager 的数据
|
|
report_data = {
|
|
"report": user_info.get("report", ""),
|
|
"patient_info": user_info.get("patient_info", {}),
|
|
"examinePart": user_info.get("examinePart", ""),
|
|
"image_urls": user_info.get("image_urls", [])
|
|
}
|
|
|
|
# 运行异步质控逻辑
|
|
try:
|
|
# 在 Flask 同步路由中运行异步方法
|
|
loop = asyncio.new_event_loop()
|
|
asyncio.set_event_loop(loop)
|
|
final_analysis = loop.run_until_complete(qc_manager.run_qc(report_data))
|
|
loop.close()
|
|
|
|
# 为了兼容旧前端代码,将结果放入 error_report 字段
|
|
# 此时 final_analysis 已经是包含 Markdown 和 JSON 的字符串
|
|
return jsonify({
|
|
'error_report': final_analysis,
|
|
'corrected_report': '建议查看下方的原地纠错建议。'
|
|
})
|
|
except Exception as e:
|
|
print(f"质控运行出错: {e}")
|
|
return jsonify({
|
|
'error_report': f"AI 质控分析暂时不可用: {str(e)}",
|
|
'corrected_report': ''
|
|
}), 500
|
|
|
|
if __name__ == '__main__':
|
|
# 注意:生产环境建议使用 gunicorn
|
|
app.run(host='0.0.0.0', port=5000)
|
|
|