Workers

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

Покриття: усі 12 воркерів ✅ описані. #TODO на сторінках позначає відкриті питання в коді (ковтання помилок, сумнівні чистки), а не недописану документацію.

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

  • Черга в Redis — ім’я <NODE_ENV>:golden:<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

СтанНазваРозкладСутьТГ
Повна вигрузка статистикищодня 13:06повна вигрузка статистики в golden_statistic + ланцюг агрегатів
Синхронізація TUщодня 00:01звірка списку TU з партнерським API
Денний онлайн по сендерущодня 00:01денні інтервали онлайну з sender-активності у golden_online_time
Тижневе оновлення даних TUщопонеділка 00:10повний sync метаданих TU
Конвертація mail-історіїщопонеділка 00:30агрегація mail-історії у golden_converted_mail_history
Генерація даних для дашборду тасківщопонеділка 09:00 UTCагрегати минулого тижня у golden_task_dashboards

Ephemeral

СтанНазваРозкладСуть
Денна вигрузка статистикищохвбонуси дня у golden_temp_statistics (пропуск 13:00-13:05)
Фіксація онлайну TU та RUкожні 5 хвточка онлайну в golden_online_users + ClickHouse
Оновлення буфера онлайн-сесійкожні 10 хвперерахунок буфера online поточного дня
Агрегація операторських дійкожні 10 хвагрегація сирих operator-actions у golden_action_operators
Архівація тасківкожні 10 хвперенесення завершених тасків у golden_task_archive

Ad-hoc

СтанНазваТригерСуть
Прибирання завершених тасків після disconnectRMQ disconnect оператора + 60 сек delayприбирає вже-завершені таски оператора з golden_task