# Эндпоинты, с которыми взаимодействует comparisons-frontend Документ описывает все HTTP-эндпоинты внешних сервисов, к которым обращается модуль (микрофронтенд `comparisons-frontend`). ## Как устроено взаимодействие Все запросы описаны декларативно в реестре `module/networking/endpoints.ts` (объект `endpoints`). Каждый эндпоинт задаётся структурой `Endpoint`: - `service` — логическое имя сервиса (`EServices`, см. таблицу хостов ниже); - `method` — HTTP-метод (`GET`/`POST`/`PUT`/`PATCH`/`DELETE`); - `path(args)` — функция, возвращающая путь запроса (с подстановкой параметров/query); - `body(args)` — опционально, формирование тела запроса. Запрос выполняется единой функцией `fetch(endpoint, params)`, которая через `httpService` (`module/httpService/httpService.ts`, поверх `@sarex-team/sdk-js` + `axios`) отправляет запрос на базовый хост сервиса. Базовый хост подставляется `resolveHost(service)` из `module/httpService/hosts.ts` в зависимости от `buildEnv` (`__BUILD_ENV__`, задаётся сборкой; по умолчанию `prod`). Результат возвращается как `{ resp }` либо `{ errMessage }`. ## Базовые хосты по сервисам и окружениям Значения из `module/httpService/hosts.ts` (`allHosts`). Итоговый URL = `<базовый хост сервиса>` + `path` эндпоинта. Хосты берутся из `@sarex-team/sdk-js` (`resolveHost`). | Сервис (`EServices`) | Назначение | `stage` | `prod` | | --- | --- | --- | --- | | `comparisons` | Сервис сравнений (comparisons-backend) | `https://stage-api.sarex.io/comparisons` | `https://api.sarex.io/comparisons` | | `documentations` | Сервис документации (диски, документы) | `https://stage-api.sarex.io/documentations` | `https://api.sarex.io/documentations` | | `sarexApi` | Gateway/API Sarex (`/gateway`) | `https://stage-api.sarex.io` | `https://api.sarex.io` | | `sarex` | Локальный сервис данных (`/api/core`) | `""` (относительные пути) | `""` | | `workflows` | Сервис обработки документов | `https://stage-api.sarex.io/workflows` | `https://api.sarex.io/workflows` | | `bimv2` | BIM API v2 | `https://stage-api.sarex.io/bimv2` | `https://api.sarex.io/bimv2` | | `zitadel` | IdP (аутентификация) | `https://idp.dev.stage.sarex.io` | `https://login.sarex.io` | > Также определены окружения `local`, `preprod` и `contour`. В `local` сервисы проксируются на `https://localhost:9000/sarex-backend` и `https://localhost:9000/sarex-api-backend/*`. В `contour` используются относительные пути (`/comparisons`, `/documentations`, `/bimv2`, `/workflows`) для изолированного контура. В `preprod` — `https://api.preprod.sarex.io/*`. ## Эндпоинты по сервисам ### `comparisons` — Сервис сравнений | Ключ | Метод | Путь | Назначение | | --- | --- | --- | --- | | `getTypes` | GET | `/api/v1/types` | Справочник типов сравнений и их параметров | | `createComparison` | POST | `/api/v1/comparisons` | Создать сравнение (тело — параметры сравнения) | | `getComparisons` | GET | `/api/v1/comparisons?workspace_id={workspaceId}` | Список сравнений рабочей области | | `deleteComparison` | DELETE | `/api/v1/comparisons/{id}` | Удалить сравнение | ### `documentations` — Сервис документации | Ключ | Метод | Путь | Назначение | | --- | --- | --- | --- | | `getDisks` | GET | `/api/v1/disks` | Список дисков | | `getDocuments` | GET | `/api/v1/disks/{id}/documents` | Документы диска | | `getNearestNameTemplate` | GET | `/api/v1/documents/{documentId}/name_template` | Ближайший шаблон имени документа | ### `sarexApi` — Gateway/API Sarex | Ключ | Метод | Путь | Назначение | | --- | --- | --- | --- | | `getDocumentsV2` | GET | `/gateway/api/v1/disks/{id}/documents?parent_id=&child_id=&search=&{attributeValue}` | Документы диска с фильтрами (родитель/ребёнок/поиск/атрибуты) | ### `sarex` — Локальный сервис данных | Ключ | Метод | Путь | Назначение | | --- | --- | --- | --- | | `getUsersByIDs` | GET | `/api/core/users/?id={ids}` | Пользователи по списку id | ### `workflows` — Сервис обработки документов | Ключ | Метод | Путь | Назначение | | --- | --- | --- | --- | | `getWorkflow` | GET | `/api/v1/workflows/{workflowId}` | Workflow по id | ### `bimv2` — BIM API v2 | Ключ | Метод | Путь | Назначение | | --- | --- | --- | --- | | `getBim` | GET | `/api/v1/bims/{bimId}` | BIM-модель по id | ## Обработка ошибок `fetch` перехватывает исключения запроса и возвращает `{ errMessage }` (строка ошибки) вместо данных; успешный ответ приходит как `{ resp: }`. Явного маппинга кодов ответа в реестре нет — обработка и отображение ошибок выполняются на уровне репозиториев/вью-моделей, использующих `fetch`.