Синхронізація TU
src/golden/workers/bull/queue/checkGoldenLadies.queue.ts
Щодня о 00:01 (cron 01 */24 * * *).
Перед стартом є перевірка: якщо менш ніж 12 годин минуло з попереднього запуску — пропускає. ❓ Точна мотивація саме 12 годин не задокументована — TODO уточнити.
Що відбувається
Дві окремі підзадачі, кожна обкладена власним try/catch (помилка однієї не блокує іншу):
Підзадача 1 — синхронізація TU (processLadyUpdates):
- Лок
isLaunched— повторний виклик кидає 429 - Для кожного незаблокованого
golden_adminsскачує список ТЮ - Звіряє список з API проти
golden_lady:- створює нові (між створеннями
delay(5000)) - видаляє (isDeleted) ті що пропали з API (з додатковою логікою для тих що мають бонуси чи прив’язку до supervisor)
- оновлює статуси існуючих
- створює нові (між створеннями
- Підсумок (скільки створено/видалено/оновлено) пише у
golden_error_reportчерезsaveCriticalLogs
Підзадача 2 — оновлення результатів онлайну по чат сендеру (cronUpdateOnlineTime):
- Якщо остання дата в
golden_online_time== вчорашня — пропускає (вже пораховано) - Інакше для кожного дня з пропусків і кожного operatorFamilyId з
golden_history_sending_messagesбудує денні інтервали онлайну і пише вgolden_online_time - Підсумок (success/error) пише у
golden_error_reportчерезsaveCriticalLogs
Моніторинг
У production шле StackMonitoring.MonitoringWorkerLogMessage зі статусом COMPLETED / FAILED (WorkerType.CheckProfiles).
⚠️ TODO — оскільки кожна підзадача має свій try/catch, статус FAILED сюди приходить тільки коли впала зовнішня обгортка. Внутрішні помилки кожної підзадачі видно лише в golden_error_report. Треба ясніше розрізняти: яка з двох підзадач впала, і чи це фейталь для звіту next day.