iac/apps/rfi/ENDPOINTS.md

7.9 KiB
Raw Permalink Blame History

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

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

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

Все запросы собраны в реестре module/api/index.ts и сгруппированы по объектам-«API»: RfiAPI, AttachmentsAPI, CoreAPI, ResourcesAPI и функция getAttributes. Каждый вызов идёт через единый httpService (module/api/http-service.ts), созданный фабрикой createHttpService из @sarex-team/sdk-js (поверх axios).

Вызов задаётся объектом:

  • service — логическое имя сервиса (см. таблицу хостов ниже);
  • url — путь запроса (дописывается к базовому хосту сервиса);
  • data — тело запроса (для POST/PUT/PATCH);
  • axiosConfig — доп. настройки axios, чаще всего params (query-параметры: limit, offset, company_id и т.п.);
  • showErrorNotification — показывать ли уведомление об ошибке;
  • controllerAbortController для отмены запроса.

Методы httpService: getRequest, postRequest, putRequest, patchRequest, deleteRequest. Базовый хост подставляется по service из module/api/hosts.ts в зависимости от BUILD_ENV.

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

Значения из module/api/hosts.ts. Итоговый URL = <базовый хост сервиса> + url. Использовано пять сервисов (остальные ключи в hosts.ts объявлены, но модулем не вызываются).

Сервис (service) Назначение stage prod
rfi Собственный backend RFI (этот сервис) https://stage-api.sarex.io/rfi/api/v1 https://api.sarex.io/rfi/api/v1
sarexApi Gateway/API Sarex (attachments, users v2) https://stage-api.sarex.io https://api.sarex.io
sarex Локальный backend Sarex (/api/core, /api/client) https://stage.sarex.io https://lk.sarex.io
gateway_api_v1 Gateway API v1 (resources) https://stage-api.sarex.io/gateway/api/v1 https://api.sarex.io/gateway/api/v1
eav_api_v0 EAV — сервис атрибутов/схем https://stage-api.sarex.io/eav/api/v0 https://api.sarex.io/eav/api/v0

Также определены окружения local, preprod и contour. В local сервис sarex проксируется на /sarex-backend; в contour используются относительные пути. Подключаемый удалённый модуль documentations описан отдельно в module/api/module-hosts.ts (Module Federation remoteEntry.js).

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

rfi — Backend RFI (этот сервис)

RfiAPI из module/api/index.ts. Пути указаны относительно базы .../rfi/api/v1.

Метод (RfiAPI) HTTP Путь Назначение
getRfi POST /rfi/filter/ Список RFI по фильтру (query limit/offset, тело — фильтры)
postRfi POST /rfi/ Создать RFI
putRfi PUT /rfi/{rfiId}/ Полное обновление RFI
patchRfi PATCH /rfi/{rfiId}/ Частичное обновление RFI
copyRfi POST /rfi/{rfiId}/copy/ Скопировать RFI (тело { name })
getRfiById GET /rfi/{id}/ RFI по id
deleteRfi DELETE /rfi/{id}/ Удалить RFI (soft-delete)
getHistory GET /rfi/history/ История изменений по списку RFI (query-параметры фильтра)
getStatusCount POST /rfi/status-count/ Количество RFI по статусам (по resource_id)
getPriorityCount POST /rfi/priority-count/ Количество RFI по приоритетам (по resource_id)
createRfiMessage POST /messages/ Создать сообщение в RFI
getMessagesByRfiId GET /messages/?request_id={id} Сообщения по id запроса
patchRfiMessage PATCH /messages/{id}/ Отметить сообщение решением (is_solution)
getStatuses GET /statuses/ Список статусов (query company_id, limit, offset)
getStatusModels GET /status-models/ Модели статусов компании (query company_id)
getPriorities GET /priorities/ Список приоритетов (query company_id, limit, offset)
getPriorityModels GET /priority-models/ Модели приоритетов компании (query company_id)

sarexApi — Gateway/API Sarex

AttachmentsAPI и CoreAPI.getUsersV2. Пути указаны относительно базы https://(stage-)api.sarex.io.

Метод HTTP Путь Назначение
AttachmentsAPI.uploadFiles POST /gateway/api/v1/attachments/ Загрузить файлы (multipart/form-data)
AttachmentsAPI.deleteFile DELETE /gateway/api/v1/attachments/{id} Удалить файл
AttachmentsAPI.getFilesByRfiId GET /gateway/api/v1/attachments/?company_id={companyId}&instance_id={rfiId}&model_name={ATTACHMENTS_MODEL_NAME} Файлы, привязанные к RFI
CoreAPI.getUsersV2 GET /gateway/api/v2/users/ Пользователи (query company_id, permissions, resource_id, limit, offset)

sarex — Backend Sarex

CoreAPI. Пути указаны относительно базы https://stage.sarex.io / https://lk.sarex.io.

Метод HTTP Путь Назначение
CoreAPI.getUsers GET /api/core/users/ Пользователи (query company, perm, resource_id, limit, offset)
CoreAPI.getDepartments GET /api/core/admin/departments/?company={companyId}&{query} Отделы компании
CoreAPI.getPositions GET /api/core/admin/positions/?company={companyId}&{query} Должности компании
CoreAPI.getSettings GET /api/client/settings/ Клиентские настройки

gateway_api_v1 — Gateway API v1

ResourcesAPI. База уже включает /gateway/api/v1.

Метод HTTP Путь Назначение
ResourcesAPI.getResources GET /resources/ Список ресурсов (query company_id)

eav_api_v0 — EAV (атрибуты)

Функция getAttributes. База уже включает /eav/api/v0.

Метод HTTP Путь Назначение
getAttributes GET /schema/?model_name=flow&company_id={companyId} Схема атрибутов по компании

Обработка ошибок

Ошибки обрабатываются в httpService (@sarex-team/sdk-js). Тип ответа с ошибкой описан в module/api/types.ts (ErrorResponse{ response?.data?.detail }). Часть запросов включает показ уведомления об ошибке флагом showErrorNotification: true (например getSettings, AttachmentsAPI.*). Права доступа (core.can_*_RFI) описаны в module/api/permissions.ts и проверяются на стороне backend RFI (RFITokenBasedPermission).