Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
68 changes: 34 additions & 34 deletions content/documentation/admin/healthchecks/types.ru.md
Original file line number Diff line number Diff line change
Expand Up @@ -157,11 +157,11 @@ conditions:

### Параметры конфигурации

| Название | Опциональность | Описание | Возможные значения |
| Название | Обязательность | Описание | Возможные значения |
|---------------------|-----------------|------------------------------------------------------------|---------------------|
| Ключ проекта | **Обязательно** | Идентификатор проекта в SonarQube | |
| Ветка | Опционально | Ветка проекта для которой будут браться метрики | |
| Условия | **Обязательно** | Условия для сравнения метрик в SonarQube | |
| Ключ проекта | **да** | Идентификатор проекта в SonarQube | |
| Ветка | нет | Ветка проекта для которой будут браться метрики | |
| Условия | **да** | Условия для сравнения метрик в SonarQube | |

#### Условия

Expand Down Expand Up @@ -203,10 +203,10 @@ conditions:

### Параметры конфигурации

| Название | Опциональность | Описание | Возможные значения |
| Название | Обязательность | Описание | Возможные значения |
|---------------------|-----------------|------------------------------------------------------------|---------------------|
| Ключ проекта | **Обязательно** | Идентификатор проекта в SonarQube | |
| Ветка | Опционально | Ветка проекта для которой будет проверяться Quality Gate. Если не указана, проверяется основная ветка | |
| Ключ проекта | **да** | Идентификатор проекта в SonarQube | |
| Ветка | нет | Ветка проекта для которой будет проверяться Quality Gate. Если не указана, проверяется основная ветка | |

> Для проверки каждой сущности выполняется отдельный запрос к SonarQube. Рекомендуется учитывать это при планировании нагрузки на систему.

Expand All @@ -216,36 +216,42 @@ conditions:

## URL

Правило типа **URL** выполняет проверку доступности HTTP/HTTPS-эндпоинта по заданным параметрам. Система формирует HTTP-запрос и сравнивает код ответа с ожидаемым.
Правило типа **URL** проверяет доступность HTTP/HTTPS-эндпоинта: отправляется запрос с заданными параметрами, результат оценивается по одному или нескольким **условиям** — выражениям Go template. В условиях можно проверять код ответа, заголовки, тело ответа и параметры сущности.

Во всех строковых полях используется шаблонизация с применением сущности, например:
Во всех строковых полях (URL, тело запроса, заголовки) доступна шаблонизация с подстановкой данных сущности (`.entity`), например: `{{ .entity.slug }}`.

```go
{{ .entity.slug }}
```
### Параметры конфигурации

Это можно использовать, например, для динамического формирования URL и/или тела запроса.
| Название | Обязательность | Описание | Примеры |
|----------------------------|-----------------|----------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------|
| URL | **да** | Полный адрес, по которому выполняется запрос | `https://example.com` |
| Метод | нет | HTTP-метод запроса | GET, POST |
| Сохранять детали | нет | Если включено — в таблице проверок сохраняются и отображаются тело ответа и статус (код, заголовки). Если выключено — только условие, результат и ошибка | |
| Условия | нет | Выражения Go template, по которым оценивается ответ | см. ниже |
| При нескольких условиях | нет | **AllOf** — должны выполниться все условия; **AnyOf** — достаточно одного | AllOf, AnyOf |
| Тело запроса | нет | Тело запроса в формате YAML. После подстановки шаблонов преобразуется в JSON и отправляется | |

### Параметры конфигурации
Если условия не заданы, по умолчанию используется проверка кода ответа 200: `{{ eq .status.code 200 }}`.

| Название | Опциональность | Описание | Примеры |
|--------------------|-----------------|-----------------------------------------------------------|-----------------------|
| URL | **Обязательно** | Полный адрес ресурса, к которому будет выполняться запрос | `https://example.com` |
| Метод | Опционально | HTTP-метод запроса | GET, POST |
| Тело запроса | Опционально | Тело запроса | |
| Ожидаемый статус | **Обязательно** | Код HTTP-статуса, с которым сравнивается полученный ответ | 200, 204. |
### Условия

### Обработка шаблонов
В условиях доступны:

- Поддерживается шаблонизация в полях, включая `URL` и `Тело запроса`.
- Значения могут браться из .entity, включая вложенные свойства (например, `{{ .entity.properties.id }}`).
- Также поддерживается шаблонизация в заголовках и других текстовых полях.
- **`.status`** — данные ответа: `.status.code` (код HTTP), `.status.status` (строка статуса), `.status.headers` (заголовки), `.status.contentLength`. **`.status.headers`** — карта «название заголовка → массив значений» (названия в нижнем регистре). Пример: первый элемент заголовка — `{{ index (index .status.headers "content-type") 0 }}`; перебор — `{{ range index .status.headers "set-cookie" }}...{{ end }}`.
- **`.response`** — тело ответа с приведёнными типами (для JSON-ответа).
- **`.entity`** — параметры проверяемой сущности.

### Пример тела запроса
Примеры условий:

Поле `Тело запроса` описывается в YAML. После раскодирования и шаблонизации оно будет сериализовано в JSON и отправлено.
```go
{{ eq .status.code 200 }}
{{ eq (index (index .status.headers "content-type") 0) "application/json" }}
{{ gt .status.contentLength 0 }}
```

Например:
### Пример тела запроса

Поле «Тело запроса» задаётся в формате YAML. Пример:

```yaml
id: "{{ .entity.id }}"
Expand All @@ -254,10 +260,4 @@ name: "{{ .entity.name }}"

### Проверка результата

Метод сравнивает фактический HTTP-статус ответа с ожидаемым значением. В случае несовпадения возвращается ошибка со значением кода ответа.

Учитывайте, что `URL` также может быть динамическим и шаблонизироваться на основе параметров сущности:

```go
https://api.example.com/{{ .entity.slug }}/health
```
Проверка считается успешной, если при режиме AllOf выполняются все условия, при AnyOf — хотя бы одно. Если при вычислении условия возникает ошибка (например, ответ не в JSON, а в условии используется `.response`), проверка завершается с ошибкой.
8 changes: 8 additions & 0 deletions content/documentation/release-notes/v1.4.0.ru.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,10 @@ weight: 930
CREATE EXTENSION IF NOT EXISTS pg_trgm;
```

### Проверки статуса

**Условия вместо «ожидаемого статуса»:** проверка результата теперь выполняется по одному или нескольким выражениям Go template (условиям). Поле «Ожидаемый статус» в конфигурации правила больше не используется. Если условия не заданы, подставляется выражение по умолчанию: `{{ eq .status.code 200 }}` ([подробнее](../../admin/healthchecks/types/#url)).

## Новые возможности

### Доверенные сертификаты
Expand All @@ -47,6 +51,10 @@ CREATE EXTENSION IF NOT EXISTS pg_trgm;

- **Wait** — добавлено действие для паузы на заданное время ([подробнее](../../admin/actions/types/#wait)).

### Проверки статуса

Обновлена логика настройки и работы правил проверки статуса типа **URL**, теперь можно делать проверку по полям возвращаемого ответа ([подробнее](../../admin/healthchecks/types/#url)).

## Безопасность

- Access и refresh-токены сессии пользователя больше не хранятся в local storage браузера: они передаются только через httpOnly cookie.
Expand Down
2 changes: 1 addition & 1 deletion content/documentation/user/ai-agent.ru.md
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ Authorization: Bearer {{ .credentials.openai_api_key }}
1. Откройте профиль пользователя и перейдите на вкладку **AI-провайдеры**.
1. Нажмите кнопку **Добавить**.
1. Заполните форму:
- **Название**: `ChatGPT` (или любое другое удобное имя).
- **Название**: `ChatGPT` (или любое другое удобное название).
- **Провайдер**: выберите `OpenAI`.
- **Модель**: укажите название модели, например `gpt-4` или `gpt-3.5-turbo`.
- **URL**: `https://api.openai.com/v1/chat/completions`.
Expand Down
8 changes: 4 additions & 4 deletions content/documentation/user/mcp-server.ru.md
Original file line number Diff line number Diff line change
Expand Up @@ -47,14 +47,14 @@ MCP — это открытый протокол для взаимодейств

| Название | Тип | Описание | Примеры |
|-------------------------|--------|-------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------|
| `external_service_name` | строка | Название внешнего сервиса. Будет выполнен поиск по имени или slug сервиса | `sonarqube`, `gitlab`, `kubernetes` |
| `external_service_name` | строка | Название внешнего сервиса. Будет выполнен поиск по названию или идентификатору сервиса | `sonarqube`, `gitlab`, `kubernetes` |
| `query` | строка | Описание запроса | `get pipelines for project 123`, `get sonarqube projects`, `get all namespaces` |
| `api_path` | строка | Путь к API-эндпоинт с параметрами запроса. Генерируется моделью на основе `query` и `external_service_name` | `/api/v4/projects?per_page=100&page=1` |
| `method` | строка | HTTP-метод. По умолчанию: GET. Модель определяет правильный метод на основе `query` | `GET`, `POST`, `PUT`, `DELETE`, `PATCH` |
| `body` | строка | Тело запроса для POST/PUT/PATCH-методов (JSON строка). Модель формирует правильное тело запроса на основе `query` | `{"title":"New MR","source_branch":"feature"}` |

**Описание:**
Инструмент позволяет выполнять HTTP-запросы к внешним сервисам, настроенным в платформе. Сервис находится по имени, затем автоматически получаются необходимые учетные данные пользователя (credentials), и выполняется HTTP-запрос к указанному API-эндпоинту.
Инструмент позволяет выполнять HTTP-запросы к внешним сервисам, настроенным в платформе. Сервис находится по названию, затем автоматически получаются необходимые учетные данные пользователя (credentials), и выполняется HTTP-запрос к указанному API-эндпоинту.

Модель должна самостоятельно определить правильный API-эндпоинт, HTTP-метод и тело запроса на основе описания запроса (`query`) и названия сервиса (`external_service_name`), используя свои знания об API различных сервисов.

Expand Down Expand Up @@ -137,7 +137,7 @@ MCP — это открытый протокол для взаимодейств

Заполните следующие параметры:

- **Server Name**: `DDP MCP Server` (или любое удобное имя).
- **Server Name**: `DDP MCP Server` (или любое удобное название).
- **Server URL**: `https://ddp.example.com/api/v2/mcp`.
- Замените `ddp.example.com` на адрес вашей платформы.
- **Transport**: `HTTP` или `JSON-RPC`.
Expand Down Expand Up @@ -247,7 +247,7 @@ Content-Type: application/json
### Инструмент возвращает ошибку доступа

- Убедитесь, что у вашего пользователя есть права на доступ к запрашиваемому ресурсу.
- Проверьте правильность имени или slug ресурса.
- Проверьте правильность названия или идентификатора ресурса.
- Обратитесь к администратору платформы для проверки прав доступа.

### Данные не возвращаются
Expand Down
4 changes: 2 additions & 2 deletions content/documentation/user/templating.ru.md
Original file line number Diff line number Diff line change
Expand Up @@ -350,7 +350,7 @@ title: Шаблонизация
где:

- `response` — указывает на то, что идет обращение к ответу действия.
- `field_name` — имя поля в ответе, значение которого необходимо подставить.
- `field_name` — название поля в ответе, значение которого необходимо подставить.

Посмотреть формат возвращаемого действием ответа можно либо в документации, описывающей действие, либо в записи действия в интерфейсе DDP:

Expand Down Expand Up @@ -411,7 +411,7 @@ title: Шаблонизация
где:

- `entity` — указывает на то, что идет обращение к сущности.
- `field_name` — имя поля сущности, значение которого необходимо подставить.
- `field_name` — название поля сущности, значение которого необходимо подставить.

### Основные поля сущности

Expand Down
Loading