2025-06-17 17:46:44 +08:00
|
|
|
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/<int:sessionId>', 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/<int:messageId>/<int:sessionId>', 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'})
|
|
|
|
|
|
|
|
|
2025-06-17 17:49:40 +08:00
|
|
|
@message_routes.route('/to-chat/<int:sessionId>', methods=['POST'])
|
|
|
|
def to_chat(sessionId):
|
|
|
|
data = request.get_json()
|
|
|
|
print("33333request.json",request.json)
|
|
|
|
print("对话内容", data)
|
2025-06-17 17:46:44 +08:00
|
|
|
value, option, system = None, None, None
|
2025-06-17 17:49:40 +08:00
|
|
|
print("55555sessionId",sessionId)
|
|
|
|
# globals.consultation.init_session(sessionId, case_data=data)
|
2025-06-17 17:46:44 +08:00
|
|
|
|
|
|
|
|
2025-06-17 17:49:40 +08:00
|
|
|
cur_card, answer = globals.consultation.qa_chat(sessionId, data['content'])
|
2025-06-17 17:46:44 +08:00
|
|
|
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
|