from flask import Blueprint, jsonify, request from ..models import Session, Message from .. import db from . import globals # from .report_routes import consultation message_routes = Blueprint('message', __name__) def filter_data(data): return { "content": data.get("content"), "remark": data.get("remark"), "role": data.get("role"), "sessionId": data.get("sessionId") } def validate_session_id(sessionId): """验证sessionId是否提供且存在于Session表中""" if not sessionId: return jsonify({"error": "sessionId is required"}), 400 session = Session.query.filter_by(id=sessionId).first() if not session: return jsonify({"error": "Session not found"}), 404 return None @message_routes.route('/get-message/', methods=['GET']) def get_message(sessionId): """获取当前用户的所有会话""" validation_result = validate_session_id(sessionId) if validation_result: return validation_result messages = Message.query.filter_by(sessionId=sessionId).all() return jsonify(messages=[message.to_dict() for message in messages]), 200 @message_routes.route('/add-message', methods=['POST']) def add_message(): """添加会话""" data = request.get_json() result = filter_data(data) validation_result = validate_session_id(result["sessionId"]) # 修改为字典访问方式 if validation_result: return validation_result if not result["role"]: # 修改为字典访问方式 return jsonify({"error": "role is required"}), 400 new_message = Message(**result) db.session.add(new_message) db.session.commit() return jsonify({'message': 'message added successfully', 'data': new_message.to_dict()}), 201 @message_routes.route('/update-message//', methods=['PUT']) def update_message(messageId, sessionId): """更新会话""" data = request.get_json() remark = data.get("remark") # 修改为字典访问方式 validation_result = validate_session_id(sessionId) # 修改为字典访问方式 if validation_result: return validation_result # 修改为字典访问方式 message = Message.query.filter_by(id=messageId).first() # 修改为字典访问方式 if not message: # 修改为字典访问方式 return jsonify({"error": "message not found"}), 404 # 修改为字典访问方式 if remark: message.remark = remark # 修改为字典访问方式 db.session.commit() # 修改为字典访问方式 return jsonify({'message': 'message updated successfully'}) @message_routes.route('/to-chat/', methods=['POST']) def to_chat(sessionId): data = request.get_json() print("33333request.json",request.json) print("对话内容", data) value, option, system = None, None, None print("55555sessionId",sessionId) # globals.consultation.init_session(sessionId, case_data=data) cur_card, answer = globals.consultation.qa_chat(sessionId, data['content']) if cur_card and cur_card[0] and cur_card[0]['status'] == 'success': value, option, system = cur_card[0]['option_value'], cur_card[1], cur_card[2] return jsonify({ 'answer': answer, 'analysis': { 'value': value, 'option': option, 'system': system } }), 201