Workers

Фонові задачі на Bull (Redis). Усі крон-воркери — класи на спільній основі (src/prime/workers/bull/CronWorker.ts), стартують одним реєстром (src/prime/workers/CronWorkersModule.ts) тільки на production/computer. Розклад і параметри кожного воркера живуть у stack-commons (StackMonitoring.WORKERS) — це єдине джерело правди, в коді воркера розкладу нема.

Спільна інфраструктура

  • Черга в Redis — ім’я <NODE_ENV>:prime:<workerType>, тому prod/dev-черги в одному Redis не перетинаються. Реєстрація розкладу ідемпотентна: зміна cron/tz прибирає застарілий repeat-запис, активні/відкладені джоби не чіпає (ретраї переживають деплой). Завислий джоб визнається stalled і піднімається повторно (до 2 разів), потім FAILED. Сам Bull-engine — платформенний, спільний для беків (stack-commons).
  • VPS-гейт — логіка виконується лише на головному VPS; на інших тік скіпається, крон при цьому не зупиняється.
  • Два режими:
    • durable — рідкісні/важливі задачі: черга не чиститься при рестарті, ретраї (3 спроби з паузою 30 хв) і відновлення завислих джобів переживають рестарт, таймаут-запобіжник 1 год.
    • ephemeral — часті задачі: черга чиститься на старті (без catch-up прострочених тіків), без ретраю — наступний тік і так скоро.
  • ТГ-моніторинг (де ввімкнений): COMPLETED на успіху; після першої невдалої спроби — ранній сигнал «не відробив вчасно»; FAILED рівно один раз — коли ретраї вичерпано або джоб остаточно завис.

Durable

НазваРозкладСутьТГ
Вигрузка основної статистикищодня 00:20 UTCпостійна статистика (downloadStatistics + updateCollection)
Оновлення даних TUщодня 00:01 UTCsync профілів TU (processLadyUpdates)
Оновлення лімітів чатівщодня 00:05 UTCініціалізація лімітів на створення чатів по TU (initLadyInfo)
Вигрузка статистики по типахщопонеділка 00:10 UTCsaveDashboardStatisticsTypes для дашборду
Генерація дашбордущопонеділка 09:00 UTCфаворити (new + unique) + таск-дашборд за минулий тиждень

Ephemeral

НазваРозкладСуть
Вигрузка тимчасової статистикикожні 5 хвdownloadTempStatistics (тимчасова стата дня)
Агрегація операторських дійкожні 10 хвагрегація manual + automatic дій операторів
Оновлення онлайнукожні 10 хвglobalMan.updateOnline

Ad-hoc

НазваТригерСуть
Закриття тасків після disconnectRMQ disconnect оператора + 10 хв delayзакриває незакриті/невідповіджені таски оператора