Files
clientsflow/schedulers

Client Timeline Calendar Scheduler

Изолированный scheduler-сервис для актуализации ClientTimelineEntry.datetime за 30 минут до календарного события.

Что делает

  • Берет advisory lock в PostgreSQL, чтобы не было гонок между инстансами.
  • Находит активные CalendarEvent с contactId в рабочем окне времени.
  • Когда событие вошло в окно start - 30m, делает upsert в ClientTimelineEntry:
    • contentType = CALENDAR_EVENT
    • datetime = startsAt - TIMELINE_EVENT_PREDUE_MINUTES

ENV

  • DATABASE_URL (обязательно)
  • TIMELINE_EVENT_PREDUE_MINUTES (default 30)
  • TIMELINE_EVENT_LOOKBACK_MINUTES (default 180)
  • TIMELINE_EVENT_LOOKAHEAD_MINUTES (default 1440)
  • TIMELINE_SCHEDULER_LOCK_KEY (default 603001)

Локально

cd schedulers
npm install
npm run start

Docker

docker build -t client-timeline-calendar-scheduler .
docker run --rm -e DATABASE_URL="$DATABASE_URL" client-timeline-calendar-scheduler

Dokploy

Сделай отдельный app/job и поставь schedule * * * * *.