iac/apps/contracts/ENDPOINTS.md

5.4 KiB
Raw Blame History

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

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

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

Запросы сгруппированы по доменам в каталоге src/shared/api/fetch/*.api.ts. Каждая функция вызывает соответствующий метод httpService (src/shared/api/http-service.ts), который создаётся фабрикой createHttpService из @sarex-team/sdk-js (поверх axios). Для запроса указываются:

  • service — логическое имя сервиса (см. таблицу хостов ниже);
  • url — путь запроса (добавляется к базовому хосту сервиса);
  • data — тело запроса (для post/put);
  • axiosConfig.params — query-параметры;
  • cache, queryKey — опции кеширования (react-query-подобные ключи из src/shared/api/keys/*);
  • isCSRF — включение CSRF-обработки (для departments).

Базовый хост подставляется по значению service и текущему окружению __BUILD_ENV__ (local/stage/preprod/prod, по умолчанию prod; см. http-service.ts). В режиме local для http-сервиса устанавливается тип zitadel (setTypeOfHttpService("zitadel")). Итоговый URL = <базовый хост сервиса> + url.

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

Значения из src/shared/api/hosts.ts. Ниже перечислены сервисы, фактически используемые запросами модуля; в реестре хостов определены и другие сервисы (bim, bimv2, workflows, workspaces, documentations, comparisons, remarks, projects, eavV1, notifications, google, sarexApi, zitadel), но обращений к ним в fetch/* нет.

Сервис (service) Назначение stage prod
contracts Сервис договоров (contracts-backend) https://stage-api.sarex.io/contracts https://api.sarex.io/contracts
sarex Локальный backend Sarex (core/admin) "" (относительные пути) ""
gateway Gateway/API Sarex (ресурсы/проекты) https://stage-api.sarex.io/gateway https://api.sarex.io/gateway

Также определены окружения local и preprod. В local сервисы проксируются на относительные пути (contracts/sarex-contracts, sarex/sarex-backend, gateway/sarex-gateway, zitadel/zitadel). Значения preprod используют домен api.preprod.sarex.io.

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

contracts — Сервис договоров

Определены в src/shared/api/fetch/contract.api.ts.

Функция Метод Путь Назначение
fetchContractsByResourceId GET /api/v0/contracts Список договоров (query: limit, offset, resource_id, tenant_id)
fetchCreateContractByResourceId POST /api/v0/contracts Создать договор
fetchUpdateContract PUT /api/v0/contracts/{contract.id} Обновить договор по id

Функция удаления fetchDeleteContract (DELETE /api/v0/contracts/{contractId}) присутствует в коде, но закомментирована.

sarex — Локальный backend Sarex (core/admin)

Определены в company.api.ts, contractor.api.ts, department.api.ts.

Функция Метод Путь Назначение
fetchCompanies GET /api/core/admin/companies/ Список компаний (кешируется, ключ companies)
fetchContractors GET /api/core/admin/contractors/?company_id={companyId} Контрагенты компании (кешируется, ключ contractors)
fetchDepartments GET /api/core/admin/departments/ Отделы (кешируется, ключ departments, isCSRF: true)

gateway — Gateway/API Sarex

Определён в project.api.ts.

Функция Метод Путь Назначение
fetchProjects GET /api/v1/resources/?company_id={companyId} Список ресурсов/проектов компании (кешируется, ключ projects)

Обработка запросов и кеширование

Кеширование включается флагом cache: true с ключом queryKey (значения ключей — в src/shared/api/keys/*.ts: companies, projects, contractors, departments). Обработка ошибок и авторизация (в т.ч. режим zitadel для local) выполняются внутри httpService из @sarex-team/sdk-js.