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)