10 KiB
Эндпоинты, с которыми взаимодействует inspections-frontend
Документ описывает все HTTP-эндпоинты внешних сервисов, к которым обращается модуль (микрофронтенд inspections-frontend).
Как устроено взаимодействие
Запросы выполняются через общий httpService (module/api/http-service.ts), созданный фабрикой createHttpService из @sarex-team/sdk-js (поверх axios). У сервиса есть методы getRequest, postRequest, patchRequest, deleteRequest, каждый из которых принимает объект с полями:
service— логическое имя сервиса (см. таблицу хостов ниже);url— путь запроса (дописывается к базовому хосту сервиса);data— тело запроса (для POST/PATCH);axiosConfig— доп. настройки axios (params,paramsSerializerи т.п.);showErrorNotification— показывать ли уведомление об ошибке.
Базовый хост подставляется по паре «service + окружение». Окружение определяется глобальной переменной сборки BUILD_ENV (local/stage/preprod/prod/contour); при её отсутствии используется prod (const buildEnv = BUILD_ENV ?? "prod"). В режиме local для http-сервиса выставляется type: "original". BUILD_ENV задаётся при сборке (напр. BUILD_ENV=stage npm start) и прокидывается через webpack DefinePlugin.
Определения запросов сгруппированы по файлам в module/api/ (inspections.ts, assets.ts, Issues.ts, premises-api.ts) и по стор-файлам в module/Inspections/store/ (inspections.ts, filters.ts, resource.ts, calendar.ts, issuesStore.ts).
Базовые хосты по сервисам и окружениям
Значения из module/api/hosts.ts. Итоговый URL = <базовый хост сервиса> + url запроса.
Сервис (service) |
Назначение | stage |
prod |
|---|---|---|---|
inspections |
Сервис событий/инспекций (этот бэкенд) | https://stage-api.sarex.io/inspections/api/v1 |
https://api.sarex.io/inspections/api/v1 |
sarexApi |
Gateway/API Sarex (/gateway) |
https://stage-api.sarex.io |
https://api.sarex.io |
sarex |
Локальный сервис данных (/api/core, /api/client) |
"" (относительные пути) |
"" |
eavV0 |
Сервис атрибутов EAV, API v0 | https://stage-api.sarex.io/eav/api/v0 |
https://api.sarex.io/eav/api/v0 |
eavV4 |
Сервис атрибутов EAV, API v4 (ассеты) | https://stage-api.sarex.io/eav/api/v4 |
https://api.sarex.io/eav/api/v4 |
issues |
Сервис замечаний | https://stage-api.sarex.io/issues/api |
https://api.sarex.io/issues/api |
premises |
Сервис помещений | https://stage-api.sarex.io/premises/api/v1 |
https://api.sarex.io/premises/api/v1 |
zitadel |
IdP (аутентификация) | https://idp.dev.stage.sarex.io |
https://login.sarex.io |
Также определены окружения
local,preprodиcontour. Вlocalсервисsarexпроксируется на/sarex-backend, аinspections/eav/issues/premisesуказывают на стейдж. Вcontourвсе хосты пустые (относительные пути для изолированного контура). Сервисzitadelв hosts объявлен, но прямых запросов из модуля к нему нет — аутентификация обрабатывается на уровне SDK/платформы.
Эндпоинты по сервисам
inspections — Сервис событий/инспекций
Базовый хост уже включает /api/v1, поэтому в путях ниже он не повторяется.
| Метод | Путь | Где вызывается | Назначение |
|---|---|---|---|
| GET | /inspections/ |
store/resource.ts |
Создание/список событий |
| POST | /inspections/ |
store/resource.ts |
Создать событие |
| POST | /inspections/filter/ |
store/resource.ts, store/calendar.ts |
Список событий с фильтрами и пагинацией в теле |
| GET | /inspections/{id}/ |
api/inspections.ts, store/resource.ts |
Событие по id |
| PATCH | /inspections/{id}/ |
api/inspections.ts |
Частичное обновление события |
| GET | /inspections/types/ |
api/inspections.ts |
Типы событий компании (query company_id) |
| POST | /inspections/status-count/ |
store/inspections.ts |
Счётчики по статусам (фильтры в теле) |
| POST | /inspections/filter-options/ |
store/filters.ts |
Доступные значения фильтров |
| GET | /inspections/aggregate/created_at/minmax/ |
store/filters.ts |
Мин/макс по дате создания |
| GET | /inspections/aggregate/inspection_dt/minmax/ |
store/filters.ts |
Мин/макс по дате проведения |
| GET | /inspections/change-history/ |
api/inspections.ts |
История изменений (пагинация, фильтры в query) |
| GET | /inspections/export/ |
store/inspections.ts |
Экспорт событий (xlsx) |
| POST | /inspections/unavailable-dates/ |
api/inspections.ts |
Недоступные даты для исполнителей |
| POST | /inspections/unavailable-users/ |
api/inspections.ts |
Недоступные исполнители на интервал |
sarexApi — Gateway/API Sarex
| Метод | Путь | Где вызывается | Назначение |
|---|---|---|---|
| GET | /gateway/api/v1/resources/?company_id={companyId} |
store/inspections.ts |
Ресурсы (проекты) компании |
| GET | /gateway/api/v2/users/ |
store/issuesStore.ts, store/resource.ts |
Пользователи (с пагинацией/фильтрами) |
| GET | /gateway/api/v1/attachments/?company_id={companyId}&instance_id={id}&model_name=inspection |
store/resource.ts |
Вложения события |
| POST | /gateway/api/v1/attachments/ |
store/resource.ts |
Создать вложение |
| DELETE | /gateway/api/v1/attachments/{id} |
store/resource.ts |
Удалить вложение |
sarex — Локальный сервис данных
| Метод | Путь | Где вызывается | Назначение |
|---|---|---|---|
| GET | /api/client/settings/ |
store/inspections.ts |
Клиентские настройки |
| GET | /api/core/users/ |
store/inspections.ts |
Пользователи |
| GET | /api/core/admin/departments/?company={companyId} |
store/inspections.ts |
Отделы компании |
| GET | /api/core/admin/positions/?company={companyId} |
store/inspections.ts |
Должности компании |
eavV4 — Сервис атрибутов EAV (ассеты)
| Метод | Путь | Где вызывается | Назначение |
|---|---|---|---|
| POST | /assets/search/ |
api/assets.ts |
Поиск ассетов по списку id |
| GET | /assets/ |
api/assets.ts |
Список ассетов (фильтры/пагинация/теги в query) |
Теги ассетов (
EnumAssetTags):location,project_structure,events.can_be_selected,remarks.can_be_selected.
eavV0 — Сервис атрибутов EAV (атрибуты)
| Метод | Путь | Где вызывается | Назначение |
|---|---|---|---|
| GET | /attribute/?company_id={companyId} |
store/inspections.ts |
Атрибуты компании |
issues — Сервис замечаний
| Метод | Путь | Где вызывается | Назначение |
|---|---|---|---|
| POST | /issues/ |
api/Issues.ts |
Создать замечание |
| GET | /issues/ |
api/Issues.ts |
Список замечаний (фильтры по компании/ресурсу/событию/типам) |
| POST | /attachments/ |
api/Issues.ts, store/issuesStore.ts |
Прикрепить медиа к замечанию |
| GET | /companies/{companyId}/status-model/ |
api/Issues.ts |
Статусная модель замечаний компании |
| GET | /issue-types/ |
api/Issues.ts |
Типы замечаний компании |
premises — Сервис помещений
Базовый хост уже включает /api/v1.
| Метод | Путь | Где вызывается | Назначение |
|---|---|---|---|
| GET | /premises/{id}/ |
api/premises-api.ts |
Помещение по id |
| POST | /premises/filter/ |
api/premises-api.ts |
Помещения по фильтру (пагинация в query) |
| POST | /premise_types/filter/ |
api/premises-api.ts |
Типы помещений по фильтру (пагинация в query) |
Обработка ошибок
Показ уведомлений об ошибках управляется флагом showErrorNotification в параметрах запроса (включается точечно для части запросов). Для сериализации query-параметров-массивов местами используется query-string с arrayFormat: "comma" (напр. в api/Issues.ts). Часть запросов в api/assets.ts оборачивает ошибку в throw new Error(...).