iac/apps/flows/ENDPOINTS.md

10 KiB
Raw Blame History

Эндпоинты, с которыми взаимодействует flows-frontend

Документ описывает все HTTP-эндпоинты внешних сервисов, к которым обращается модуль (микрофронтенд flows-frontend).

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

В отличие от единого реестра эндпоинтов, запросы во flows-frontend выполняются точечно из MobX-сторов (module/store/stores/*.ts) через общий HTTP-клиент httpService.

httpService создаётся в module/api/http-service.ts фабрикой createHttpService из @sarex-team/sdk-js. Клиент предоставляет методы getRequest, postRequest, putRequest, patchRequest, deleteRequest, каждый из которых принимает объект вида:

httpService.getRequest({
    service: "flows",              // логическое имя сервиса (ключ из hosts.ts)
    url: `/flows/${id}/?full=true`, // путь запроса относительно базового хоста сервиса
    data: { ... },                  // тело запроса (для post/put/patch)
    // ...прочие опции axios
});

Базовый хост сервиса подставляется по ключу service из module/api/hosts.ts в зависимости от BUILD_ENV. Итоговый URL = <базовый хост сервиса> + url.

Окружение выбирается переменной BUILD_ENV (module/env.js): одно из local, stage, prod, preprod, contour, severstal, uralchem. В webpack.config.js значение прокидывается в бандл через DefinePlugin. Значение по умолчанию при резолве хоста — prod.

Подключаемый удалённый модуль (documentations) описан отдельно в module/api/modules-hosts.ts и резолвится функцией getModuleHost (Module Federation, remoteEntry.js).

Базовые хосты по сервисам и окружениям

Значения из module/api/hosts.ts. Показаны stage и prod; дополнительно определены local, preprod и contourcontour — относительные пути для изолированного контура; в local сервис sarex проксируется на /sarex-backend).

Сервис (service) Назначение stage prod
flows Сервис процессов согласования (flows, reviews, steps, statuses) https://stage-api.sarex.io/flows/api/v1 https://api.sarex.io/flows/api/v1
sarex Локальный backend (Django core/client) "" (относительные пути) ""
gateway_api_v1 Gateway API v1 (ресурсы) https://stage-api.sarex.io/gateway/api/v1 https://api.sarex.io/gateway/api/v1
gateway_api_v2 Gateway API v2 (пользователи) https://stage-api.sarex.io/gateway/api/v2 https://api.sarex.io/gateway/api/v2
documentations Сервис документации (диски, документы) https://stage-api.sarex.io/documentations/api/v1 https://api.sarex.io/documentations/api/v1
eav_api_v0 Сервис EAV (атрибуты/схемы) https://stage-api.sarex.io/eav/api/v0 https://api.sarex.io/eav/api/v0
checklists Сервис чек-листов https://stage-api.sarex.io/checklists/api/v1 https://api.sarex.io/checklists/api/v1
transmittals Сервис передачи документации (шаблоны) https://stage-api.sarex.io/transmittals/api/v1 https://api.sarex.io/transmittals/api/v1
zitadel IdP (аутентификация) https://idp.dev.stage.sarex.io https://login.sarex.io

Удалённые модули (module/api/modules-hosts.ts):

Модуль stage prod
documentations https://stage-modules.sarex.io/documentations/static/module/remoteEntry.js https://modules.sarex.io/documentations/static/module/remoteEntry.js

Эндпоинты по сервисам

flows — Сервис процессов согласования

Источник: module/store/stores/processes.ts, module/store/stores/resources.ts.

Метод (*Request) Путь Стор / метод Назначение
GET /flows/{id}/?full=true processes.loadFlow Маршрут по id (с шагами/статусами)
POST /flows/filter/ processes (фильтр) Список маршрутов по фильтру
POST /flows/count_flows_by_resource/ processes Количество маршрутов по ресурсам
POST /flows/count_flows_by_resource/ processes.getCountByResourceId Количество маршрутов для одного ресурса
POST /flows/ processes.createFlow Создать маршрут
POST /flows/{id}/copy/?full=true processes (копирование) Копировать маршрут
PUT /flows/{id}/?full=true processes (обновление) Обновить маршрут
PATCH /flows/bulk-update/ processes.bulkUpdateFlow Массовое обновление маршрутов
POST /steps/ processes.createStep Создать шаг
PUT /steps/{id}/?full=true processes.updateStep Обновить шаг
PATCH /steps/{stepId}/update_reviewers/ processes Обновить согласующих шага
GET /steps/{id}/active_reviews/ processes.getActiveReviewsForReviewer Активные review на шаге
POST /statuses/ processes.createStatus Создать статус
DELETE /statuses/{id}/ processes.deleteStatus Удалить статус
POST /reviews/count_by_resource_id/ resources Количество review по ресурсу

sarex — Локальный backend (Django)

Источник: module/store/stores/users.ts.

Метод Путь Стор / метод Назначение
GET /api/client/settings/ users.getCurrentUser Настройки/данные текущего пользователя
GET /api/core/users/?company={id}&{query} users.getUsers / getUsersByCompanyId / getAllUsersByCompanyId Пользователи компании
GET /api/core/admin/departments/?{query} users.fetchDepartmentsSA Департаменты (service account)
GET /api/core/admin/departments/?company={id}&{query} users.fetchDepartmentsByCompanyId Департаменты компании
GET /api/core/admin/positions/?{query} users.fetchPositionsSA Должности (service account)
GET /api/core/admin/positions/?company={id}&{query} users.fetchPositionsByCompanyId Должности компании

gateway_api_v1 — Gateway API v1 (ресурсы)

Источник: module/store/stores/resources.ts.

Метод Путь Стор / метод Назначение
GET /resources/?{query} resources Список ресурсов (по фильтру)
GET /resources/?company_id={id} resources Ресурсы компании

gateway_api_v2 — Gateway API v2 (пользователи)

Источник: module/store/stores/users.ts.

Метод Путь Стор / метод Назначение
GET /users/?{query} users.getUsersByResourceId Пользователи по ресурсу

documentations — Сервис документации

Источник: module/store/stores/documents.ts.

Метод Путь Стор / метод Назначение
GET /disks/{id}/documents documents.fetchDocumentsByDiskId Документы диска

eav_api_v0 — Сервис EAV (атрибуты)

Источник: module/store/stores/attributes.ts.

Метод Путь Стор / метод Назначение
GET /schema/?model_name=flow&company_id={id} attributes.fetchFlowsAttributes Схема атрибутов для модели flow

checklists — Сервис чек-листов

Источник: module/store/stores/checklists.ts.

Метод Путь Стор / метод Назначение
POST /checklists/filter/ checklists.fetchChecklists Список чек-листов по фильтру

transmittals — Сервис передачи документации

Источник: module/store/stores/transmittals.ts.

Метод Путь Стор / метод Назначение
POST /transmittal_templates transmittals Шаблоны трансмитталов (пагинация по next, фильтр по resources)

zitadel — IdP

Хост определён в hosts.ts для аутентификации через SDK; прямых вызовов из сторов в текущей версии модуля нет (используется инфраструктурой @sarex-team/sdk-js).

Замечания

  • Единого файла-реестра эндпоинтов (endpoints.ts) во flows-frontend нет — вызовы разбросаны по сторам module/store/stores/*. При добавлении нового запроса указывайте service строго из ключей hosts.ts.
  • Часть путей содержит завершающий слэш и query-параметры прямо в строке url (напр. /flows/{id}/?full=true) — это соответствует поведению backend (flows-backend), где роуты объявлены со слэшем на конце.
  • Сервис sarex в stage/prod имеет пустой базовый хост (""), то есть запросы идут по относительным путям того же origin; в local он проксируется на /sarex-backend, в contour — на относительные пути контура.