Работа с синхронизацией пользователей
📍 Ручка GET /sync/sync_users
Описание: Асинхронно инициирует синхронизацию пользователей. Используется в составе процессов, связанных с отправкой push-уведомлений, чтобы обеспечить актуальность данных перед рассылкой.
В рамках одного вызова выполняются следующие подзадачи: 👨🏫 Синхронизация пользователей в Mentor-сервисе 📅 Синхронизация пользователей в Event-сервисе 📝 Синхронизация пользователей в Worksheet-сервисе Все задачи выполняются параллельно.
Полный адрес: https://mobile-api.terraprod.ru/sync/sync_users
Тело запроса: Отсутствует.
SyncUsers
Метод SyncUsers синхронизирует пользователей между несколькими сервисами, основываясь на UUID пользователей, полученных из аутентификационного сервиса. Все операции логируются и выполняются с трассировкой и параллельной обработкой.
⚙️ Основные действия
-
Получение UUID всех пользователей из аутентификационного сервиса:
- Используется постраничный запрос
authService.GetAllUsersUUIDsс лимитом 2000 и постраничной пагинацией. - UUID пользователей собираются в карту
existingUsersUUIDsMapдля удобства дальнейшей обработки и исключения дубликатов. - Если на странице нет пользователей — цикл завершается.
- Используется постраничный запрос
-
Запуск параллельной синхронизации пользователей в нескольких сервисах:
- С помощью горутин одновременно вызываются методы:
mentorService.SyncUsers(ctx, existingUsersUUIDsMap)eventService.SyncUsers(ctx, existingUsersUUIDsMap)worksheetService.SyncUsers(ctx, existingUsersUUIDsMap)- Для контроля завершения всех горутин используется
sync.WaitGroup.
-
Обработка ошибок:
- Ошибки в каждом сервисе логируются в спан.
- При ошибках отправляется уведомление в Telegram бот через
notificationService.SendErrorToTgBot.