refactor: flatten scheduler service to root schedulers dir
This commit is contained in:
38
schedulers/README.md
Normal file
38
schedulers/README.md
Normal file
@@ -0,0 +1,38 @@
|
||||
# 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`)
|
||||
|
||||
## Локально
|
||||
|
||||
```bash
|
||||
cd schedulers
|
||||
npm install
|
||||
npm run start
|
||||
```
|
||||
|
||||
## Docker
|
||||
|
||||
```bash
|
||||
docker build -t client-timeline-calendar-scheduler .
|
||||
docker run --rm -e DATABASE_URL="$DATABASE_URL" client-timeline-calendar-scheduler
|
||||
```
|
||||
|
||||
## Dokploy
|
||||
|
||||
Сделай отдельный app/job и поставь schedule `* * * * *`.
|
||||
Reference in New Issue
Block a user