9.9 KiB
Эндпоинты, с которыми взаимодействует remarks-frontend
Документ описывает все HTTP-эндпоинты внешних сервисов, к которым обращается модуль (микрофронтенд remarks-frontend).
Как устроено взаимодействие
В отличие от transmittal-frontend, в remarks-frontend нет декларативного реестра эндпоинтов (endpoints.ts). Запросы формируются по месту — в API-объектах (module/api/*.ts) и в MobX-сторах (module/store/*.ts) — прямыми вызовами методов httpService:
httpService.getRequest(options)httpService.postRequest(options)httpService.putRequest(options)(объявлен, в коде не используется)httpService.patchRequest(options)httpService.deleteRequest(options)
Каждый вызов задаётся объектом-параметром:
service— логическое имя сервиса (см. таблицу хостов ниже), определяет базовый хост;url— путь запроса (часто шаблонная строка с подстановкой id/query);data— тело запроса (дляPOST/PATCH/PUT);axiosConfig— доп. настройки axios (paramsдля query-параметров,responseType: "blob"для файлов и т.п.);showErrorNotification— включает показ уведомления об ошибке средствами SDK.
httpService (module/api/http-client.ts) — это Proxy поверх базового baseHttpService (module/api/http-service.ts, создаётся через createHttpService из @sarex-team/sdk-js). Прокси добавляет единую обработку ответа 403: показывает toast с текстом response.data.detail либо сообщением «У вас недостаточно прав для выполнения данного действия.». Базовый хост подставляется SDK по значению service и текущему окружению BUILD_ENV (значения — из module/api/hosts.ts, по умолчанию prod). В окружении local тип HTTP-сервиса переключается на zitadel (setTypeOfHttpService("zitadel")).
Итоговый URL = <базовый хост сервиса> + url эндпоинта.
Базовые хосты по сервисам и окружениям
Значения из module/api/hosts.ts.
Сервис (service) |
Назначение | stage |
prod |
|---|---|---|---|
remarks |
Сервис замечаний | https://stage-api.sarex.io/remarks |
https://api.sarex.io/remarks |
sarexApi |
Gateway/API Sarex (/issues, /flows, /eav) |
https://stage-api.sarex.io |
https://api.sarex.io |
gateway |
Gateway Sarex | https://stage-api.sarex.io/gateway |
https://api.sarex.io/gateway |
documentations |
Сервис документации | https://stage-api.sarex.io/documentations |
https://api.sarex.io/documentations |
eavV4 |
Сервис атрибутов/ассетов (EAV v4) | https://stage-api.sarex.io/eav/api/v4 |
https://api.sarex.io/eav/api/v4 |
sarex |
Локальный сервис данных (/api/core, /api/client) |
"" (относительные пути) |
"" |
zitadel |
IdP (аутентификация) | https://idp.dev.stage.sarex.io |
https://login.sarex.io |
Также определены окружения
localиpreprod. Вpreprodхосты указывают наhttps://api.preprod.sarex.io/*(дляzitadel—https://login.preprod.sarex.io). Вlocalсервисsarexпроксируется на/sarex-backend, а остальные сервисы указывают наstage-хосты (https://stage-api.sarex.io/*,zitadel→https://idp.dev.stage.sarex.io). Сервисzitadelявно в коде не вызывается — используется SDK для аутентификации.
Эндпоинты по сервисам
sarexApi — Gateway/API Sarex (issues / flows / eav)
Базовый хост — корневой (https://<env>-api.sarex.io); маршрутизация задаётся префиксами пути (/issues/api, /flows/api, /eav/api).
| Метод | Путь | Назначение | Где вызывается |
|---|---|---|---|
| POST | /issues/api/issues/filter/ |
Список/фильтрация замечаний (пагинация limit/offset) |
api/issues/issues.ts |
| POST | /issues/api/issues/ |
Создать замечание | store/collectionRemarks.ts |
| GET | /issues/api/issues/{uuid}/ |
Замечание по uuid | store/collectionRemarks.ts |
| PATCH | /issues/api/issues/{uuid}/ |
Обновить замечание | store/collectionRemarks.ts, store/remarks.ts |
| POST | /issues/api/issues/export/?{params} |
Экспорт замечаний (ответ blob) |
store/remarks.ts |
| GET | /issues/api/issues/daterange/ |
Диапазон дат замечаний | store/filters.ts |
| POST | /issues/api/issues/filter-options/?{params} |
Опции фильтра замечаний | store/filters.ts |
| GET | /issues/api/issue-changes/?issue_id={uuid} |
История изменений замечания | store/remark.ts |
| POST | /issues/api/comments/ |
Создать комментарий | store/collectionRemarks.ts |
| DELETE | /issues/api/comments/{id}/ |
Удалить комментарий | store/collectionRemarks.ts |
| GET | /issues/api/attachments/{fileId}/ |
Получить вложение | store/collectionRemarks.ts |
| POST | /issues/api/attachments/ |
Загрузить вложение | store/collectionRemarks.ts |
| DELETE | /issues/api/attachments/{id}/ |
Удалить вложение | store/collectionRemarks.ts |
| GET | /issues/api/companies/{companyId}/status-model/v2/ |
Модель статусов компании | store/remarks.ts |
| GET | /flows/api/v1/documents/ |
Документы (flows) | store/filters.ts |
| GET | /flows/api/v1/documents/?{query}&offset=0&limit=100000 |
Документы (flows, полная выборка) | store/remarks.ts |
| POST | /flows/api/v1/flows/filter/ |
Фильтрация flows | store/filters.ts |
| GET | /eav/api/v0/attribute/?company_id={params} |
Атрибуты компании (EAV v0) | store/remarks.ts |
remarks — Сервис замечаний
| Метод | Путь | Назначение | Где вызывается |
|---|---|---|---|
| GET | /api/v1/remarks?target=true{params} |
Список замечаний по target | store/remarks.ts |
| DELETE | /api/v1/remarks/{uuid} |
Удалить замечание | store/collectionRemarks.ts |
gateway — Gateway Sarex
| Метод | Путь | Назначение | Где вызывается |
|---|---|---|---|
| GET | /api/v2/users/?{query} |
Пользователи (с фильтрами прав/таргета) | store/remarks.ts |
| GET | /api/v2/users/ |
Пользователи (без фильтров) | store/remarks.ts |
| GET | /api/v1/documents/{docId}/attributes/ |
Атрибуты документа | store/remarks.ts |
| GET | /api/v1/resources/ |
Список ресурсов | store/resourcesStore.ts |
documentations — Сервис документации
| Метод | Путь | Назначение | Где вызывается |
|---|---|---|---|
| GET | /api/v1/documents/{docId}?extend=bundles |
Документ с бандлами | store/remark.ts |
eavV4 — Сервис ассетов (EAV v4)
Базовый хост уже включает префикс /eav/api/v4.
| Метод | Путь | Назначение | Где вызывается |
|---|---|---|---|
| POST | /assets/search/ |
Поиск ассетов по набору id | api/assets.ts |
| GET | /assets/ |
Список ассетов (фильтры, пагинация, tag) |
api/assets.ts |
sarex — Локальный сервис данных
| Метод | Путь | Назначение | Где вызывается |
|---|---|---|---|
| GET | /api/client/settings/ |
Клиентские настройки | store/remarks.ts |
| GET | /api/core/admin/departments/?company={companyId} |
Отделы компании (пагинация по next) |
store/remarks.ts |
| GET | /api/core/admin/positions/?company={companyId} |
Должности компании (пагинация по next) |
store/remarks.ts |
Обработка ошибок
Отдельного файла-маппера ошибок (аналога module/api/errors.ts в transmittal-frontend) в проекте нет. Обработка сосредоточена в двух местах:
module/api/http-client.ts— прокси перехватывает ответ403и показывает toast (react-toastify) с текстомresponse.data.detailили сообщением по умолчанию «У вас недостаточно прав для выполнения данного действия.»;- SDK
@sarex-team/sdk-js— приshowErrorNotification: trueпоказывает стандартное уведомление об ошибке; в сторах ряд операций дополнительно оборачивается вtry/catchс собственными toast-сообщениями (напр. «Замечание успешно создано!» / «Произошла ошибка при создании замечания»).