check-golden-ladies

Синхронізація 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.