Studio-Yandex-Practicum / ProCharity_back_2.0

bot ProCharity (НКО Фонд Друзья)
13 stars 13 forks source link

Добавить оповещение админа при ошибках передачи данных на эндпоинты сайта #622

Closed gorskyolga closed 3 weeks ago

gorskyolga commented 1 month ago

Бот передает информацию на несколько эндпоинтов сайта:

Обращение к энпдоинтам сайта происходит при помощи метода _site_post класса ProcharityAPI (src\core\services\procharity_api.py).

При ошибках передачи данных на эндпоинты сайта должно отправляться сообщение в админку бота и письмо на почту EMAIL_ADMIN.

Сейчас в случае ошибки это фиксируется в логах. Нужно добавить:

  1. Отправку письма на почту EMAIL_ADMIN. Можно сделать по аналогии с отправкой причины отписки (метод unsubscribe_notification в EmailProvider). Нужно добавить в settings переменную (bool), включающую или выключающую отправку письма на почту в зависимости от её значения.
  2. Сохранение записи об ошибке в таблице tech_messages (новая таблица, нужно применить миграцию).

Текст сообщения в письме и в сообщении в tech_messages может совпадать с текстом в логах.

Сейчас указанные эндпоинты сайта не работают. Задеплоена другая ветка, поэтому эндпоинты всегда возвращают статус 200, но обращение к ним вызывает ошибку ContentTypeError ('Attempt to decode JSON with unexpected mimetype: text/html; charset=utf-8'). При разработке функционала по обращению к эндпоинтам сайта они работали и обрабатывались корректно. Нужно добавить обработку ошибки ContentTypeError и на её примере проверить отправку письма и сохранение записи в таблицу tech_messages.

Важно: Нельзя обращаться к апи внешнего сайта с действующим токеном и фейковым user.external_user.external_id, если бот запущен локально, чтобы не записать туда данные из локальной тестовой БД. При тестировании локально достаточно получить в ответ ошибку авторизации. Если необходимо получить и обработать ответ от эндпоинта, то необходимо записать в локальную БД свой user.external_user.external_id из БД на тестовом сервере.