Карта репозиториев
Этот раздел нужен как техническая карта ownership по всей экосистеме NPPWEB.
Основные репозитории
| Репозиторий | Технологии | Назначение |
|---|---|---|
infra | Docker Compose, Make | локальный и deploy-контур |
contracts | JSON Schema, GraphQL SDL | общие схемы и контракты |
npp-backend | NestJS, GraphQL, Prisma | API, auth, ingest, отчёты и аналитика |
npp-web | Nuxt 3, Tailwind, Apollo | frontend кабинета и аналитических экранов |
processing-worker | Node.js worker | нормализация и ingest |
scrape-helper | Node.js worker | сбор данных, source runs, артефакты |
Как читать экосистему
Технический контур
infraсобирает локальную среду;contractsзадаёт формы данных;scrape-helperиprocessing-workerобеспечивают путь raw → normalized → ingest;npp-backendдержит бизнес-состояние;npp-webвизуализирует контракт.
Аналитический контур
- агрегаты и отчётные сценарии живут в
npp-backend; - дашборд, аналитика и отчёты отображаются в
npp-web; - источники и качество контура читаются одновременно как технический и бизнес-сигнал.
Зависимости между репозиториями
| Репозиторий | От чего зависит | Что даёт другим |
|---|---|---|
infra | env-конфигурация и Dockerfiles всех сервисов | единый способ запуска и деплоя |
contracts | согласование схем между сервисами | source of truth по API и событиям |
scrape-helper | RabbitMQ, MinIO, proxy, contracts | raw-события и артефакты |
processing-worker | RabbitMQ, backend ingest, contracts | нормализованный поток |
npp-backend | Postgres, Redis, Prisma, ingest и source runs | GraphQL API, отчёты, аналитика |
npp-web | GraphQL API и клиентский runtime Nuxt | интерфейс для чтения и управления |
Ownership по изменениям
| Изменение | Куда идти первым |
|---|---|
| новый внешний источник | scrape-helper |
| изменение схемы raw/normalized | contracts, затем worker/backend |
| новая бизнес-метрика | npp-backend |
| новая карточка/таблица/экран | npp-web |
| новый runtime-сервис или env | infra |
| изменение GraphQL API | contracts + npp-backend + npp-web |
Рекомендуемый порядок изучения
Что особенно важно новым участникам
- не путать источник данных и аналитический срез;
- не менять GraphQL-схему только на frontend или только на backend;
- помнить, что отчёты могут жить snapshot-ом и быть воспроизводимыми;
- понимать:
0 публикаций— это не всегда “нет данных”, иногда это “проблема в сборе или фильтрации”.