10 KiB
Эндпоинты, с которыми взаимодействует 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 и contour (в contour — относительные пути для изолированного контура; в 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— на относительные пути контура.