diff --git a/services/backend/routes/message/get_message.py b/services/backend/routes/message/get_message.py index 0039ec4..6643a9a 100644 --- a/services/backend/routes/message/get_message.py +++ b/services/backend/routes/message/get_message.py @@ -1,11 +1,14 @@ import traceback from flask import jsonify, Blueprint from services.message_service import MessageService +from flasgger import swag_from +from schemas.get_message_schema import get_message_swagger, CheckTaskResultSchema api = Blueprint('api', __name__) @api.route('/messages/', methods=['GET']) +@swag_from(get_message_swagger) def get_user_messages(conversation_id): try: result = MessageService.get_message(conversation_id) diff --git a/services/backend/schemas/get_message_schema.py b/services/backend/schemas/get_message_schema.py index 0b9d399..59cb679 100644 --- a/services/backend/schemas/get_message_schema.py +++ b/services/backend/schemas/get_message_schema.py @@ -1,60 +1,55 @@ from marshmallow import Schema, fields -class MessageSchema(Schema): - task_id = fields.Str(required=True) - id = fields.Int(required=True) - role = fields.Str(required=True) - text = fields.Str(required=True) +class CheckTaskResultSchema(Schema): + task_id = fields.Str(allow_none=True, description="ID задачи") + id = fields.Int(allow_none=True, description="ID сообщения в таблице messages") + role = fields.Str(allow_none=True, description="Роль отправителя сообщения (1 - система, 2 - пользователь)") + text = fields.Str(allow_none=True, description="Текст сообщения") -messages_swagger = { - 'tags': ['Messages'], - 'description': 'Получить все беседы для указанного пользователя, включая сообщения бесед', +get_message_swagger = { + 'tags': ['Message'], + 'description': 'Получить сообщения беседы по ID беседы', 'parameters': [ { - 'name': 'user_id', - 'type': 'string', + 'name': 'conversation_id', + 'in': 'path', # Указано, что параметр передается в URL как часть пути 'required': True, - 'description': 'ID пользователя для получения сообщений' + 'description': 'ID беседы, для которой нужно получить сообщения', + 'schema': { + 'type': 'integer' + } } ], 'responses': { - '200': { - 'description': 'Список сообщений, сгруппированных по conversation_id', - 'schema': { - 'type': 'object', - 'properties': { - 'messages': { - 'type': 'array', - 'items': { - 'type': 'object', - 'properties': { - 'conversation_id': { - 'type': 'integer', - 'description': 'ID беседы' - }, - 'messages': { - 'type': 'array', - 'items': { - 'type': 'object', - 'properties': { - 'task_id': { - 'type': 'string', - 'description': 'ID задачи' - }, - 'id': { - 'type': 'integer', - 'description': 'ID сообщения' - }, - 'role': { - 'type': 'string', - 'description': 'Роль отправителя сообщения (1 - "system", 2 - "user")' - }, - 'text': { - 'type': 'string', - 'description': 'Текст сообщения' - } + 200: { + 'description': 'Сообщения в беседе', + 'content': { + 'application/json': { + 'schema': { + 'type': 'object', + 'properties': { + 'messages': { + 'type': 'array', + 'items': { + 'type': 'object', + 'properties': { + 'task_id': { + 'type': 'string', + 'description': 'ID задачи' + }, + 'id': { + 'type': 'integer', + 'description': 'ID сообщения в таблице messages' + }, + 'role': { + 'type': 'string', + 'description': 'Роль отправителя сообщения (1 - система, 2 - пользователь)' + }, + 'text': { + 'type': 'string', + 'description': 'Текст сообщения' } } } @@ -64,8 +59,21 @@ class MessageSchema(Schema): } } }, - '404': { - 'description': 'Не найдены беседы или сообщения для указанного пользователя' + 404: { + 'description': 'ID беседы не найдено', + 'content': { + 'application/json': { + 'schema': { + 'type': 'object', + 'properties': { + 'error': { + 'type': 'string', + 'description': 'Описание ошибки' + } + } + } + } + } } } -} \ No newline at end of file +} diff --git a/services/backend/services/message_service.py b/services/backend/services/message_service.py index 88e10fb..fed062c 100644 --- a/services/backend/services/message_service.py +++ b/services/backend/services/message_service.py @@ -60,10 +60,13 @@ def delete_message(conversation_id): @staticmethod def get_message(conversation_id): messages = MessageModel.query.filter(MessageModel.conversation_id.in_([conversation_id])).all() - print("CONV_ID:", conversation_id) - if not messages: - return jsonify({'error': 'No messages found for these conversations'}), 404 + if not messages: + return { + 'messages': [ + {conversation_id: [{'task_id': None, 'id': None, 'role': None, 'text': None}]} + ] + }, 200 grouped_messages = defaultdict(list) for message in messages: