iac/apps/django/ENDPOINTS.md

9.4 KiB
Raw Permalink Blame History

Эндпоинты и хосты сервисов для sarex-frontend

Документ описывает базовые хосты сервисов, к которым обращается фронтенд-шелл sarex-frontend, и удалённые модули (Module Federation), которые он подгружает. Backend для этого приложения — sarex-backend (Django), его конфигурация и переменные описаны в CONFIGURATION.md, а серверное REST API — в openapi.yaml.

Как устроено взаимодействие

sarex-frontend — это host-приложение на Webpack Module Federation. Реестр хостов задаётся декларативно в endpoints.js (корень репозитория): объект вида <сервис>.<тип>.<окружение> → URL. Возможные типы:

  • api / apiV1 / apiV2 / … — базовый URL REST API сервиса;
  • module — URL remoteEntry.js удалённого микрофронтенда;
  • gateway — базовый URL gateway.

Окружение выбирается сборочной переменной ENDPOINT (process.env.ENDPOINT, по умолчанию prod) в webpack.common.js. Значения endpoints.js[сервис][тип][ENDPOINT] пробрасываются в код как константы process.env.<CONST> через DefinePlugin (объект processEnvByEndpoint), напр. endpoints.bim.api[ENDPOINT]BIM_API.

Для локального запуска backend-таргет задаётся отдельно в env.js (SAREX_BACKEND, по умолчанию https://stage.sarex.io/) и используется dev-сервером (webpack.dev.js) как прокси; собственный Django-backend в окружении contour доступен по относительным путям (пустой хост).

Окружения (ENDPOINT)

Значение Назначение
prod Продакшн (https://api.sarex.io, https://modules.sarex.io)
stage Stage (https://stage-api.sarex.io, https://stage-modules.sarex.io)
preprod Preprod (https://api.preprod.sarex.io, https://modules.preprod.sarex.io)
contour Изолированный контур — относительные пути (пустой хост)
local Локальная разработка (задан не у всех сервисов)

У части сервисов gateway определены также специальные ключи contour_local (https://stage.sarex.io) и contour_prod (https://lk.sarex.io).

Базовые хосты API-сервисов

Итоговый URL = <базовый хост сервиса> + путь запроса.

Сервис (endpoints.*) Константа stage prod contour
api.api SAREX_API https://stage-api.sarex.io https://api.sarex.io ""
bim.api BIM_API https://stage-api.sarex.io/bim/api/v1 https://api.sarex.io/bim/api/v1 ""
bim.apiV2 BIM_API_V2 …/bim/api/v2 …/bim/api/v2 ""
bim.files BIM_FILES …/bim …/bim ""
workspaces.api / workspacesV2.api WORKSPACESV2_API …/workspaces/ …/workspaces/ /workspaces/
workflows.api WORKFLOWS_API …/workflows …/workflows /workflows
remarks.api REMARKS_API …/remarks/api/v1 …/remarks/api/v1 /remarks/api/v1
issues.api ISSUES_API …/issues/api/v1 …/issues/api/v1 /issues/api/v1
issuesBase.api ISSUES_BASE_API …/issues/api …/issues/api /issues/api
flows.api …/issues/api/v1 …/issues/api/v1 /issues/api/v1
inspections.api …/inspections/api/v1 …/inspections/api/v1 /inspections/api
documentations.api DOCUMENTATIONS_API …/documentations/api/v1 …/documentations/api/v1 /documentations/api/v1
pm.api …/documentations/api/v1 …/documentations/api/v1 /documentations/api/v1
analyticsV2.api …/analytics-v2/api/v1 …/analytics-v2/api/v1 /analytics-v2/api/v1
analytics.api ANALYTICS_API …/analytics …/analytics /analytics
processes.api PROCESSES_API …/flows/api/v1 …/flows/api/v1 /flows/api/v1
gateway.gateway GATEWAY …/gateway …/gateway (local: http://localhost:9000/gateway)
gateway.api GATEWAY_API …/gateway/api/v1 …/gateway/api/v1 /gateway/api/v1
gateway.apiV2 GATEWAY_API_V2 …/gateway/api/v2 …/gateway/api/v2 /gateway/api/v2
eav.api EAV_API …/eav/api/v0 …/eav/api/v0 /eav/api/v0
eav.apiV1…apiV4 EAV_API_V1…V4 …/eav/api/v1…v4 …/eav/api/v1…v4 /eav/api/v1…v4
notifications.api NOTIFICATIONS_API …/lambdas/notification/ …/lambdas/notification/ ""
lambdas.api LAMBDAS_API …/lambdas …/lambdas /lambdas
automations.api AUTOMATIONS_API …/automation/api/v1 …/automation/api/v1 /automation/api/v1
orchestrator.api ORCHESTRATOR_API …/orchestrator …/orchestrator/api /orchestrator/api

= https://stage-api.sarex.io (stage) или https://api.sarex.io (prod). Собственный Django-backend (sarex-backend) в контуре обслуживается по относительным путям /api/... — см. openapi.yaml.

Удалённые модули (Module Federation, remoteEntry.js)

Хост подгружает микрофронтенды по URL из endpoints.<сервис>.module[ENDPOINT]. Базовый хост модулей: https://stage-modules.sarex.io (stage) / https://modules.sarex.io (prod); в контуре — относительные пути.

Сервис Константа Путь module (относительный, контур)
workspaces WORKSPACES_MODULE /workspaces/module/remoteEntry.js
workspacesV2 WORKSPACESV2_MODULE /workspaces-v2/module/remoteEntry.js
workflows WORKFLOWS_MODULE /workflows/module/remoteEntry.js
remarks REMARKS_MODULE /remarks/static/module/remoteEntry.js
issues ISSUES_MODULE /issues/static/module/remoteEntry.js
flows FLOWS_MODULE /flows/static/module/remoteEntry.js
inspections INSPECTIONS_MODULE /inspections/static/module/remoteEntry.js
documentations DOCUMENTATIONS_MODULE /documentations/static/module/remoteEntry.js
pm PM_MODULE /pm/module/remoteEntry.js
projects PROJECTS_MODULE /projects/static/module/remoteEntry.js
analyticsV2 ANALYTICS_MODULE /analytics-v2/static/module/remoteEntry.js
reviews REVIEWS_MODULE /reviews/static/module/remoteEntry.js
administration ADMINISTRATION_MODULE /control-interface/modules/admin/remoteEntry.js
adminProc ADMIN_PROC_MODULE /admin-frontend/static/module/remoteEntry.js
assets ASSETS_MODULE /control-interface/modules/assets/remoteEntry.js
premises PREMISES_MODULE /premises/static/module/remoteEntry.js
contracts CONTRACTS_MODULE /cotracts/static/module/remoteEntry.js
transmittal TRANSMITTAL_MODULE /transmittal/static/module/remoteEntry.js
prescriptions PRESCRIPTIONS_MODULE /prescriptions/static/module/remoteEntry.js
rfi RFI_MODULE /rfi/static/module/remoteEntry.js
assistant /assistant/static/module/remoteEntry.js

Список подключаемых в ЛК модулей (пункты меню) дублируется на стороне backend в SAREX_MODULES (ConfigMap django-configmap): remarks, issues, documentations, reviews, processes, rfi, transmittal.

Backend, обслуживающий шелл

Основной API самого шелла (аутентификация, пользователи, настройки приложения, проекты/цели/миссии, аналитика) — это sarex-backend под префиксом /api/.../internal/... для внутрикластерных вызовов). Полное описание серверных эндпоинтов приведено в openapi.yaml. Ключевые группы:

Префикс Назначение
/api/token…, /api/auth/…, /api/login, /api/logout Аутентификация и JWT
/api/app-settings/ Настройки приложения
/api/core/… Пользователи, компании, цели, миссии, ортофото, облака точек и т.д.
/api/client/… Клиентский дашборд, загрузки, self-сервис
/api/analytics/… Аналитические дашборды, метрики, виджеты
/api/map/… Кадастр и заметки на карте
/api/pg/… Облака точек, экспорт, измерения
/internal/client/… Внутренние вызовы (настройки, токены)