Работа с синхронизацией пользователей

📍 Ручка GET /sync/sync_users

Описание: Асинхронно инициирует синхронизацию пользователей. Используется в составе процессов, связанных с отправкой push-уведомлений, чтобы обеспечить актуальность данных перед рассылкой.

В рамках одного вызова выполняются следующие подзадачи: 👨‍🏫 Синхронизация пользователей в Mentor-сервисе 📅 Синхронизация пользователей в Event-сервисе 📝 Синхронизация пользователей в Worksheet-сервисе Все задачи выполняются параллельно.

Полный адрес: https://mobile-api.terraprod.ru/sync/sync_users

Тело запроса: Отсутствует.

SyncUsers

Метод SyncUsers синхронизирует пользователей между несколькими сервисами, основываясь на UUID пользователей, полученных из аутентификационного сервиса. Все операции логируются и выполняются с трассировкой и параллельной обработкой.


⚙️ Основные действия

  1. Получение UUID всех пользователей из аутентификационного сервиса:

    • Используется постраничный запрос authService.GetAllUsersUUIDs с лимитом 2000 и постраничной пагинацией.
    • UUID пользователей собираются в карту existingUsersUUIDsMap для удобства дальнейшей обработки и исключения дубликатов.
    • Если на странице нет пользователей — цикл завершается.
  2. Запуск параллельной синхронизации пользователей в нескольких сервисах:

    • С помощью горутин одновременно вызываются методы:
    • mentorService.SyncUsers(ctx, existingUsersUUIDsMap)
    • eventService.SyncUsers(ctx, existingUsersUUIDsMap)
    • worksheetService.SyncUsers(ctx, existingUsersUUIDsMap)
    • Для контроля завершения всех горутин используется sync.WaitGroup.
  3. Обработка ошибок:

    • Ошибки в каждом сервисе логируются в спан.
    • При ошибках отправляется уведомление в Telegram бот через notificationService.SendErrorToTgBot.