Client Timeline Calendar Scheduler
Изолированный scheduler-сервис для актуализации ClientTimelineEntry.datetime за 30 минут до календарного события.
Что делает
- Берет advisory lock в PostgreSQL, чтобы не было гонок между инстансами.
- Находит активные
CalendarEventсcontactIdв рабочем окне времени. - Когда событие вошло в окно
start - 30m, делает upsert вClientTimelineEntry:contentType = CALENDAR_EVENTdatetime = startsAt - TIMELINE_EVENT_PREDUE_MINUTES
ENV
DATABASE_URL(обязательно)TIMELINE_EVENT_PREDUE_MINUTES(default30)TIMELINE_EVENT_LOOKBACK_MINUTES(default180)TIMELINE_EVENT_LOOKAHEAD_MINUTES(default1440)TIMELINE_SCHEDULER_LOCK_KEY(default603001)
Локально
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 * * * * *.