feat: add dedicated calendar timeline scheduler service
This commit is contained in:
38
frontend/schedulers/client-timeline-calendar/README.md
Normal file
38
frontend/schedulers/client-timeline-calendar/README.md
Normal file
@@ -0,0 +1,38 @@
|
||||
# Client Timeline Calendar Scheduler
|
||||
|
||||
Одноразовый scheduler-раннер для актуализации `ClientTimelineEntry.datetime` по календарным событиям.
|
||||
|
||||
## Что делает
|
||||
|
||||
- Ищет неархивные `CalendarEvent` с привязкой к контакту в окне времени вокруг `now`.
|
||||
- Если событие уже вошло в окно `start - 30 минут`, делает `upsert` в `ClientTimelineEntry` с `contentType=CALENDAR_EVENT` и `datetime=start-30m`.
|
||||
- Логика идемпотентна: повторный запуск только подтверждает корректное значение.
|
||||
- Берёт Postgres advisory lock, чтобы параллельные запуски не конфликтовали.
|
||||
|
||||
## Переменные окружения
|
||||
|
||||
- `DATABASE_URL` (обязательно)
|
||||
- `TIMELINE_EVENT_PREDUE_MINUTES` (по умолчанию `30`)
|
||||
- `TIMELINE_EVENT_LOOKBACK_MINUTES` (по умолчанию `180`)
|
||||
- `TIMELINE_EVENT_LOOKAHEAD_MINUTES` (по умолчанию `1440`)
|
||||
- `TIMELINE_SCHEDULER_LOCK_KEY` (по умолчанию `603001`)
|
||||
|
||||
## Локальный запуск
|
||||
|
||||
```bash
|
||||
cd frontend
|
||||
node schedulers/client-timeline-calendar/run.mjs
|
||||
```
|
||||
|
||||
## Docker запуск
|
||||
|
||||
```bash
|
||||
docker build -f schedulers/client-timeline-calendar/Dockerfile -t client-timeline-calendar-scheduler .
|
||||
docker run --rm \
|
||||
-e DATABASE_URL="$DATABASE_URL" \
|
||||
client-timeline-calendar-scheduler
|
||||
```
|
||||
|
||||
## Dokploy schedule
|
||||
|
||||
Создай Scheduled Job и поставь период `* * * * *` (раз в минуту), который запускает этот контейнер/команду.
|
||||
Reference in New Issue
Block a user