> ## Documentation Index
> Fetch the complete documentation index at: https://docs.didit.me/llms.txt
> Use this file to discover all available pages before exploring further.

# Оценка возраста: предупреждения и коды риска

> Справочник Didit по кодам риска оценки возраста: AGE_BELOW_MINIMUM, LOW_LIVENESS_SCORE и другим, с порогами и действиями.

Функция «Оценка возраста» генерирует **предупреждения**, когда при комбинированной проверке возраста и пассивной живости срабатывает сигнал риска: предполагаемый возраст ниже установленного минимума, возраст не удалось рассчитать, субъект не прошёл проверку живости, лицо не обнаружено или выявлена атака предъявления. На этой странице описан каждый код, условия его срабатывания и настройка реакции сценария.

## Обзор

Оценка возраста всегда выполняет **две проверки за один вызов** — пассивную проверку живости и модель регрессии возраста, — поэтому её предупреждения проходят через общий конвейер проверки живости и помечаются функцией `LIVENESS`. Они отображаются в отчёте в `age_estimation.warnings[]` (отдельный API) или `liveness_checks[].warnings[]` (при встраивании в сценарий). Схема объекта предупреждения описана в разделе [Модели данных — Объект предупреждения](https://docs.didit.me/ru/reference/data-models.md#объект-предупреждения).

Источники:

* **Отдельный API** — endpoint генерирует пять предупреждений, перечисленных в разделе [Триггеры отклонения](#триггеры-отклонения).
* **Сценарии** — общие источники проверки живости плюс специализированные проверки возраста. Предупреждения о возрасте возникают только в процессах оценки возраста (адаптивные сценарии проверки возраста или узлы сценария `AGE_ESTIMATION`): стандартный шаг проверки живости сообщает предполагаемый возраст, но никогда не создаёт предупреждения о возрасте.

Уровни серьезности: пять рисков с автоматическим отклонением (`NO_FACE_DETECTED`, `LIVENESS_FACE_ATTACK`, `FACE_IN_BLOCKLIST`, `AGE_BELOW_MINIMUM`, `AGE_NOT_DETECTED`) всегда имеют `log_type: "error"` и приводят к решению `Declined`; для остальных рисков устанавливается `error` / `warning` / `information` на основе порогов или настроенного действия.

## Триггеры отклонения

В отдельном API решение принимает значение `Declined`, если срабатывает **любое** предупреждение:

* **Возраст ниже порога** — предполагаемый возраст строго ниже `age_estimation_decline_threshold` (по умолчанию `18`; `0` отключает проверку возраста). Создаёт `AGE_BELOW_MINIMUM`.
* **Возраст не рассчитан** — не удалось оценить возраст по лицу (лицо не обнаружено или непригодно для модели оценки возраста). Создаёт `AGE_NOT_DETECTED`.
* **Оценка живости на уровне или ниже порога** — `score <= face_liveness_score_decline_threshold` (по умолчанию `30`); значение `null` считается равным `0`. Создаёт `LOW_LIVENESS_SCORE`. Подавляется, если срабатывает `NO_FACE_DETECTED` — они взаимно исключают друг друга.
* **Лицо не обнаружено** — модель проверки живости не нашла лицо. Создаёт `NO_FACE_DETECTED`.
* **Атака предъявления** — модель проверки живости зафиксировала экран, распечатанное фото, маску или другой спуфинг. Создаёт `LIVENESS_FACE_ATTACK`.

В сценариях проверки возраста сравнивают усечённый предполагаемый возраст (в целых годах) с настроенными порогами:

* **При включённом резервном переходе на верификацию личности** (`enable_id_verification_fallback`, по умолчанию включён): возраст ниже `borderline_minimum_age_threshold` (по умолчанию `18`) создаёт `AGE_BELOW_MINIMUM`; при возрасте в пограничном диапазоне (до `borderline_maximum_age_threshold`) процесс продолжается верификацией документов вместо создания предупреждения, а `AGE_NOT_DETECTED` никогда не создаётся — неопределённый возраст также направляется на верификацию документов.
* **При отключённом резервном переходе**: отсутствие рассчитанного возраста создаёт `AGE_NOT_DETECTED`, а возраст ниже `minimum_age_threshold` (по умолчанию `18`) создаёт `AGE_BELOW_MINIMUM`.

## Настраиваемые риски

Следующие риски позволяют настраивать пороги или действие для каждой настройки сценария:

| Настройка | Код риска | Настраиваемые параметры |
| - | - | - |
| Пороги возраста | `AGE_BELOW_MINIMUM` | Отдельный API: `age_estimation_decline_threshold` (по умолчанию `18`, `0` отключает проверку). Сценарии: `minimum_age_threshold` / `borderline_minimum_age_threshold` (по умолчанию `18`) плюс резервный переход на верификацию личности для пограничного возраста. |
| Низкая оценка живости | `LOW_LIVENESS_SCORE` | Отдельные параметры **Порог отклонения** (по умолчанию `30` → `error` + отклонение) и **Порог проверки** (по умолчанию `60` → `warning` + проверка), применяемые к оценке живости. |
| Возможное дублирование лица | `POSSIBLE_DUPLICATED_FACE` | Действие при обнаружении: `DECLINE` / `REVIEW` / `NO_ACTION` (по умолчанию `NO_ACTION`). Только для сессий сценария. |
| Несколько лиц | `MULTIPLE_FACES_DETECTED` | Действие при обнаружении: `DECLINE` / `REVIEW` / `NO_ACTION` (по умолчанию `NO_ACTION`). Только для пассивной проверки живости в сценарии. |

Сессии сценария также проверяют лицо по вашим спискам: `FACE_IN_BLOCKLIST` всегда автоматически отклоняет сессию (`error`), тогда как `POSSIBLE_FACE_IN_BLOCKLIST` переводит сессию в статус `In Review`.

## Сгенерированные предупреждения

| Тег | Серьёзность (`log_type`) | Описание |
| - | - | - |
| `AGE_BELOW_MINIMUM` | `error` — автоотклонение | Оценочный возраст ниже активного порога (автономный `age_estimation_decline_threshold`; в сценарии `minimum_age_threshold` / `borderline_minimum_age_threshold`; по умолчанию везде `18`). Поле `additional_data` всегда равно `null`. |
| `AGE_NOT_DETECTED` | `error` — автоотклонение | Не удалось оценить возраст лица. Всегда формируется автономным API, когда возраст равен `null`; в сценариях только если резервный переход на верификацию личности отключён. |
| `LOW_LIVENESS_SCORE` | `error` на уровне/ниже порога отклонения; `warning` на уровне/ниже порога проверки | Оценка живости находится на уровне или ниже заданного порога (по умолчанию порог отклонения равен `30` в автономном API и сценарии; порог проверки в сценарии равен `60`), что указывает на возможное использование статического фото, экрана или видео. Не формируется, если срабатывает `NO_FACE_DETECTED`. |
| `NO_FACE_DETECTED` | `error` — автоотклонение | На отправленном изображении лицо не обнаружено. Попросите пользователя расположить лицо по центру камеры при достаточном освещении. |
| `LIVENESS_FACE_ATTACK` | `error` — автоотклонение | Модель проверки живости выявила атаку предъявления (воспроизведение с экрана, распечатанное фото, маска, дипфейк). |
| `MULTIPLE_FACES_DETECTED` | В зависимости от настроенного действия (по умолчанию `information`, без действий) | На изображении обнаружено более одного лица; результат определяется по самому крупному лицу. Только для пассивной проверки живости в сценариях — автономный API это предупреждение не формирует. |
| `FACE_IN_BLOCKLIST` | `error` — автоотклонение | Обнаруженное лицо совпадает с записью в вашем списке блокировки лиц, управляемом через [Lists API](https://docs.didit.me/ru/management-api/lists/overview.md). Только для сессий со сценарием. |
| `POSSIBLE_DUPLICATED_FACE` | В зависимости от настроенного действия (по умолчанию `information`, без действий) | Обнаруженное лицо существенно похоже на ранее одобренное лицо в другой сессии (совпадения с одинаковым `vendor_data` исключаются). Только для сессий со сценарием. |

## Пример

```json theme={null}
{
  "warnings": [
    {
      "risk": "LOW_LIVENESS_SCORE",
      "feature": "LIVENESS",
      "additional_data": null,
      "log_type": "error",
      "short_description": "Low liveness score",
      "long_description": "The liveness check resulted in a low score, indicating potential use of non-live facial representations or poor-quality biometric data."
    },
    {
      "risk": "AGE_BELOW_MINIMUM",
      "feature": "LIVENESS",
      "additional_data": null,
      "log_type": "error",
      "short_description": "Age below minimum",
      "long_description": "The age of the face is below the minimum age threshold for the application."
    }
  ]
}
```

В payload решения по сценарию (`liveness_checks[].warnings[]`) каждое предупреждение также содержит поле `node_id`, определяющее узел сценария, который его сформировал.

## Типы предупреждений

Каждому риску присваивается серьёзность на основе конфигурации вашего приложения. Серьёзность делится на три категории:

## Связанные разделы

* [Обзор оценки возраста](https://docs.didit.me/ru/core-technology/age-estimation/overview.md) — логика работы функции, цены и правила принятия решений.
* [Отчёт об оценке возраста](https://docs.didit.me/ru/core-technology/age-estimation/report-age-estimation.md) — полная структура ответа как для автономного API, так и для встроенного значения в сценарии.
* [Справочник по автономному API](https://docs.didit.me/ru/standalone-apis/age-estimation.md) — запрос и ответ для `POST /v3/age-estimation/`.
* [Пассивная проверка живости](https://docs.didit.me/ru/core-technology/liveness/overview.md) — общая модель проверки живости, используемая в ответах оценки возраста.
* [Модели данных — оценка возраста](https://docs.didit.me/ru/reference/data-models.md#оценка-возраста) — эталонная схема с описанием каждого поля.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.