Studio-Yandex-Practicum / ProCharity_back_2.0

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

Добавление эндпойнта "api/messages/new" с новой логикой выбора режима отправки #672

Open eugemos opened 1 week ago

eugemos commented 1 week ago

Что сделано

  1. Добавлен эндпойнт api/messages/new с логикой выбора режима отправки, указанной в задаче #659. Обновление: эндпойнт api/messages/new теперь стал api/messages
  2. В fill_db.py внесено изменение, предотвращающее наличие у фейковых пользователей telegram_id, могущих оказаться реальными. Подстраховался перед тестированием.
  3. Схема UserFilter адаптирована для её применения также и в новом эндпойнте.
  4. Внесены изменения в функцию UserRepository.get_filtered_objects_by_page для возможности её использования также и в новом эндпойнте:
    • добавлен режим работы без ограничения выдачи (пагинации);
    • исправлена ошибка, которая приводила к неправильной сортировке выдачи в эндпойнте api/users/. Хотя в новом эндпойнте сортировка и не критична, но при тестировании всё же удобно иметь правильную.
  5. Выполнен рефакторинг остальных эндпойнтов для отправки уведомлений: /api/messages/group, /api/messages, /api/messages/{telegram_id} для однообразия используемых подходов и упрощения кода. Часть функциональности вынесена, при этом, в классы TelegramNotificationUsersGroups, InfoRate.
  6. Решена задача #621:
    • URL эндпойнта /api/messages изменён на api/send_telegram_notification;
    • поле mode в схеме запроса переименовано в has_mailing.

Как тестировал

Локально, через страницу документации API. Пользователей в БД создавал с помощью python3 fill_db.py with_fake_users плюс добавлялся сам. Проверил работу всех эндпойнтов из категории Messages в различных режимах, а также эндпойнта api/users/, так как используемый им код был адаптирован для работы в новом эндпойнте. Проверил также, что работает уведомление в Телеграм подписанного пользователя, когда создаётся новая задача в его категории (рефакторинг и сюда пролез).

eugemos commented 5 days ago

Обновил описание.

eugemos commented 1 day ago

Обновил описание.