# 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: ` ## Переменные окружения - `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`.