Перейти к содержанию

Gerege Nexus

Gerege Eco System · Закрытая платформа

Gerege Nexus объединяет организации, сервисы и пользователей Gerege Eco System. Вход доступен только пользователям с заранее предоставленным доступом. eID подтверждает личность; право входа предоставляет администратор организации.

Gerege Nexus — это основа из Go backend, веб-оболочки Next.js, базы данных PostgreSQL, операторской control plane и native-клиентов. Бизнес-приложения добавляются репозиториями дистрибутивов в виде Go-модулей времени компиляции. Этот базовый репозиторий не является готовым ERP-пакетом для всех отраслей.

Реальный охват (2026-10-25): catalog/apps.json пуст — ядро не несёт ни одного бизнес-приложения; каждое приложение приходит из каталога дистрибутива. Последнее приложение, io.gerege.nexus.sso_clients, 2026-08-25 перешло в appstore-gerege-nexus, и любой дистрибутив получает его из магазина приложений. История миграций или переводы frontend для приложений contacts, products, inventory, billing, documents, government workflow, SSO-клиентов и т. п. могут оставаться в этом репозитории, но их работающих модулей в этом базовом бинарном файле нет. Маршруты таких приложений в этом deployment не открываются.

Монгол  ·  العربية  ·  中文  ·  English  ·  Français  ·  Русский  ·  Español

Go Version Next.js CI

Что именно содержит этот репозиторий

Часть Текущая реализация
Tenant plane Вход, сессии, членство в арендаторе, RBAC, профиль, установка/отключение приложений, AI API, устройства, подтверждение email, SSO client/provider, reporting engine
Operator plane Жизненный цикл арендаторов, вход операторов по TOTP, аудит, поддержка, quota/metering, feature flag, runtime settings/credentials, объявления, управление backup/deploy
Встроенные приложения Отсутствуют. Каждое приложение приходит через каталог — после ухода sso_clients 2026-08-25 этот бинарный файл не содержит ни одного бизнес-приложения
Web Публичный landing, login/setup, профиль, магазин приложений, настройки, control plane — всё на @gerege-systems/ui (Tailwind 4); экраны приложений (SSO-клиенты, документы, контрагенты) остались в оболочке неактивными, без своих модулей
Native Оболочки для macOS, iOS/iPadOS, Windows, Android; для Linux — PWA
Observability /health, /ready, /metrics, structured log, опционально OTLP/Sentry; отдельный monitoring compose

Наличие маршрутов, таблиц и сервисов базовой платформы ещё не означает, что у пользователя обязательно есть видимое бизнес-приложение. Маршруты модуля работают только тогда, когда модуль времени компиляции реализует контракт pkg/nexus, зарегистрирован в binary, внесён в каталог и установлен у данного арендатора.

Чего нет в этом базовом бинарном файле

  • Бизнес-приложений contacts, products, inventory, billing
  • Приложения отделов/сотрудников Organisation & People (при этом юридический профиль организации на /organisation остаётся частью платформы)
  • Backend-модуля Documents и UI отчётов. Опциональный frontend-клиент contract/inbox в этом repo есть, но соответствующего contract API пока нет ни в текущей base, ни в дистрибутиве client-gerege-nexus; если endpoint реально не отвечает, ссылка на landing не показывается
  • UI/модуля workflow государственных услуг
  • Станции целиком — панели, каналов, peer/exchange API, контракта конвертов. 2026-08-27 последняя её часть перешла в client-gerege-nexus
  • Коннекторов к внешним системам и webhook (Google Drive, Dropbox, Meet, URL заказчика). Они также ушли 2026-08-27; в ядре остался только шифр для запечатывания учётных данных (nexus.SecretSealer). Автоматическая отправка подписанных документов наружу также удалена из ядра
  • Общего adaptive circuit breaker, singleflight, generic retry engine

Часть из этого вынесена в репозитории продуктовых дистрибутивов. Как пишется модуль и как он приходит через каталог — см. docs/MODULES.md, как дистрибутив получает и обновляет ядро — docs/DISTRIBUTION.md, текущая архитектура — docs/ARCHITECTURE.md.

Ключевые возможности

  • SDK модулей времени компиляции: контракты route, permission, menu, dependency, migration, report, AI tool и capability.
  • Установка приложений и RBAC gate для каждого арендатора. Маршрут неустановленного/отключённого модуля возвращает 403.
  • Локальный каталог или удалённый каталог с подписью Ed25519; cache fallback и ручная/фоновая синхронизация.
  • Вход по паролю, eID, ДАН, Google и через upstream OIDC; также OAuth2/OIDC provider.
  • Схемы PostgreSQL workspace, registry, operator, защита через RLS/роли.
  • При настроенном Redis — инвалидация кэша между репликами и общий rate limit; без него — single-process fallback.
  • Load shedding конкурентных запросов. У каждого внешнего клиента своя политика timeout/retry; несуществующий generic circuit breaker не считается частью платформы.
  • При наличии ключа Gemini — chat, speech-to-text, text-to-speech, translation. AI tool для бизнес-данных регистрирует сам модуль дистрибутива; базовый deployment не выдумывает и не возвращает цифры inventory или billing.
  • Дизайн-система: веб-оболочка и консоль на @gerege-systems/ui, единственный источник токенов — theme.css библиотеки. Каждый deployment меняет внешний вид без правки кода через переменные окружения BRAND_THEME_* и CSS из «Get code» на ui.gecore.mn/#theme (DEVELOPMENT.md).
  • Клиенты E-ID, ДАН, ХУР есть в платформе. В окружении production mock по умолчанию выключен; для работы с реальными сервисами нужны соответствующие credential.

Структура репозитория

backend/
  cmd/                  инструменты api, migrate, bootstrap, catalog
  db/migrations/        базовые миграции PostgreSQL
  internal/kernel/      низкоуровневые механизмы, общие для трёх плоскостей
  internal/operator/    deployment/operator plane
  internal/workspace/   плоскость, действующая от имени организации
  internal/person/      личное пространство человека — /api/v1/me
  internal/apps/        точка сборки distribution module (пока пуста)
  pkg/nexus/            публичный SDK для distribution module
  pkg/host/             публичный entry point для запуска distribution binary
frontend/               Next.js web shell и UI control plane
catalog/                базовый каталог, manifest, chronicle
native-apps/            клиенты macOS, iOS/iPadOS, Windows, Android
deploy/                 image, compose, nginx, monitoring
docs/                   индекс текущих, исторических и proposal-документов

Запуск

Предварительные требования

  • Docker Compose, или
  • Go 1.26+, Node.js 20+, PostgreSQL 16+

Docker Compose

docker compose up -d
docker compose ps

Compose запускает PostgreSQL, Redis, одноразовую миграцию, backend и frontend. Используются следующие адреса:

Демо-учётная запись для разработки:

Поле Значение
Email admin@example.com
Пароль Password123!
Арендатор Demo Corporation (demo)

SEED_DEMO_DATA по умолчанию включён во всех окружениях, кроме production. В production демо-учётная запись не создаётся, если явно не задано true.

Вручную

Сначала запустите PostgreSQL (при необходимости Redis), затем:

cd backend
go mod download
DATABASE_URL="postgres://postgres:postgrespassword@localhost:5432/platform_db?sslmode=disable" \
  go run ./cmd/migrate up

PUBLIC_ORIGIN=http://nexus.localhost:3000 \
ALLOWED_ORIGINS=http://nexus.localhost:3000,http://admin.localhost:3000 \
CONTROL_PLANE_HOST=admin.localhost \
  go run ./cmd/api

В другом terminal:

cd frontend
npm ci
CONTROL_PLANE_HOST=admin.localhost \
NEXT_PUBLIC_API_URL=http://nexus.localhost:8080/api/v1 \
NEXT_PUBLIC_CONTROL_PLANE_API_URL=http://admin.localhost:8080/api/platform/v1 \
  npm run dev

Production-конфигурацию не угадывают по README. Полный список переменных и безопасные значения по умолчанию — в .env.example, конфигурация работающего развёртывания — proxmox-gerege-net (stack/nexus), шаги создания первого арендатора/оператора — docs/OPERATIONS.md.

Реальные источники истины для API и каталога

Список API в README не является полным контрактом. Источники, проверяемые вместе с кодом:

К основным публичным endpoint относятся /health, /ready, /metrics, auth, setup, OAuth2/OIDC, app store, device enrollment, email verification. Маршруты, требующие сессии арендатора, маршруты control plane и маршруты модулей защищены по отдельности.

Тесты

cd backend
go test ./...
go vet ./...

cd ../frontend
npm ci
npm test
npm run lint
npm run build

CI дополнительно выполняет race test с миграциями, проверки границ API/route, PWA, host, отчёт translation-gap, Docker build, govulncheck, gosec и сборку native-клиентов. Точные команды см. в .github/workflows/ci.yml, security.yml, native-clients.yml.

Статус языков и документации

Исходные строки UI есть на монгольском и английском; для арабского, китайского, французского, русского и испанского есть overlay. Недостающие overlay переключаются на английский (fallback), а CI сообщает о пробелах — перевод всех экранов на 100% не обещается.

README доступен на семи языках. Не каждый технический документ имеет семь переводов; язык и статус каждого файла отмечены в docs/README.md. Файлы с именами PLAN, PROPOSAL, PROMPT, WORKLOG не являются текущим runtime-контрактом. В инструкциях по запуску их нельзя использовать как единственный источник.

Безопасность и статус проекта

Уязвимости не публикуются в публичных issue; используйте порядок private reporting из SECURITY.md.

Частный проект. Все права защищены.