41 lines
1.7 KiB
Markdown
41 lines
1.7 KiB
Markdown
# backend
|
||
|
||
Core CRM/omni-домен с единственной Prisma-базой.
|
||
|
||
## Назначение
|
||
|
||
- принимает входящие telegram-события через GraphQL mutation `ingestTelegramInbound`;
|
||
- создает исходящую задачу через GraphQL mutation `requestTelegramOutbound` (в `telegram_backend`, далее в Hatchet);
|
||
- принимает отчет о доставке через GraphQL mutation `reportTelegramOutbound`.
|
||
- выполняет sync календарных предзаписей через GraphQL mutation `syncCalendarPredueTimeline`.
|
||
|
||
## API
|
||
|
||
- `GET /health`
|
||
- `POST /graphql`
|
||
|
||
## GraphQL auth
|
||
|
||
Если задан `BACKEND_GRAPHQL_SHARED_SECRET`, запросы на `/graphql` должны содержать заголовок:
|
||
|
||
- `x-graphql-secret: <BACKEND_GRAPHQL_SHARED_SECRET>`
|
||
|
||
## Переменные окружения
|
||
|
||
- `PORT` (default: `8090`)
|
||
- `MAX_BODY_SIZE_BYTES` (default: `2097152`)
|
||
- `BACKEND_GRAPHQL_SHARED_SECRET` (optional)
|
||
- `TELEGRAM_BACKEND_GRAPHQL_URL` (required для `requestTelegramOutbound`)
|
||
- `TELEGRAM_BACKEND_GRAPHQL_SHARED_SECRET` (optional)
|
||
- `DEFAULT_TEAM_ID` (optional fallback для inbound маршрутизации)
|
||
- `TIMELINE_EVENT_PREDUE_MINUTES` (default: `30`)
|
||
- `TIMELINE_EVENT_LOOKBACK_MINUTES` (default: `180`)
|
||
- `TIMELINE_EVENT_LOOKAHEAD_MINUTES` (default: `1440`)
|
||
- `TIMELINE_SCHEDULER_LOCK_KEY` (default: `603001`)
|
||
|
||
## Prisma policy
|
||
|
||
- Источник схемы: `frontend/prisma/schema.prisma`.
|
||
- Локальная копия в `backend/prisma/schema.prisma` обновляется только через `scripts/prisma-sync.sh`.
|
||
- Миграции/`db push` выполняются только в `frontend`.
|