Skip to content

npp-backend

npp-backend — центральный сервис платформы на NestJS + GraphQL.

Ответственность

  • хранение пользователей, сессий, источников, source runs, закупок и отчётов;
  • аутентификация и авторизация;
  • реализация GraphQL-контракта;
  • ingest нормализованных данных от processing-worker.

Минимальные env-переменные

  • DATABASE_URL
  • REDIS_URL
  • RABBITMQ_URL
  • JWT_ACCESS_SECRET
  • INGEST_API_TOKEN

Готовый пример окружения удобнее брать из infra/.env.example.

Локальный запуск

bash
cd ../infra
cp .env.example .env
docker compose --env-file .env -f docker-compose.yml -f docker-compose.apps.yml up -d postgres redis rabbitmq minio minio-init

cd ../npp-backend
npm install
npm run db:setup
npm run start:dev

Основные endpoints

  • health: http://localhost:3000/api/health
  • ready: http://localhost:3000/api/health/ready
  • GraphQL: http://localhost:3000/graphql

Auth flow

  1. login выдаёт accessToken и refreshToken.
  2. refreshSession перевыпускает пару токенов и ревокает старую refresh-сессию.
  3. logout завершает текущую server-side сессию.
  4. access token валидируется не только криптографически, но и через связанную UserSession.

Ingest от воркера

processing-worker вызывает mutation ingestNormalizedItem.

  • JWT для ingest не нужен;
  • обязательная авторизация идёт через заголовок x-ingest-token;
  • значение заголовка должно совпадать с INGEST_API_TOKEN.

Качество

bash
npm run check
npm run test
npm run build

Техническая и аналитическая документация платформы NPPWEB.