> ## 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.

# Предупреждения верификации местоположения, LOCATION_

> Все предупреждения LOCATION_ в Didit при проверке локации: геозоны, спуфинг, VPN, точность, расстояние, разрешения, триггеры и стандартные действия.

## Обзор

Предупреждения в отчёте о местоположении фиксируют каждое условие, обнаруженное Didit на шаге верификации местоположения.
Они попадают в массив `warnings[]` каждого элемента `geolocation_checks[]` (см. [отчёт о местоположении](https://docs.didit.me/ru/core-technology/location-verification/report-location-verification.md)).

Каждое предупреждение имеет три уровня:

1. **Код `risk`**: постоянный идентификатор, с которым можно выполнять сопоставление; все они начинаются с `LOCATION_`.
2. **Тип `log_type`**: `information`, `warning` или `error`. Для настраиваемых рисков он следует настроенному действию: `NO_ACTION` даёт `information`, `REVIEW` даёт `warning`, `DECLINE` даёт `error`.
3. **Влияние на решение**: наиболее строгое действие среди предупреждений определяет `status` шага. `REVIEW` даёт `In Review`, `DECLINE` даёт `Declined`, а `NO_ACTION` оставляет его без изменений.

Неопределённость и отказ по умолчанию переводят в `REVIEW`, но никогда в `DECLINE`: отказ в предоставлении разрешения, нахождение в помещении или большой радиус не являются свидетельством мошенничества.
Предупреждения о точности, актуальности, областях, расстоянии и анонимайзерах формируются только при последней попытке, поэтому пользователь, успешно прошедший проверку со второй попытки, не получает предупреждений.
Пользовательские правила `status_rules` на узле могут сохранить или повысить статус, но никогда не понизить его.

## Условия автоматического отклонения

Они всегда отклоняют шаг со значением `log_type: "error"` и не имеют ключа действия.

| Риск | Триггер |
| - | - |
| `LOCATION_REPLAY_DETECTED` | Отправленные данные содержали проверочный токен, принадлежащий другой сессии. Каждая попытка получает один одноразовый проверочный токен, привязанный к своей сессии, поэтому его предъявление в другой сессии считается повторным воспроизведением. |
| `LOCATION_INTEGRITY_FAILED` | Аттестация устройства сопровождала данные о координатах и не прошла проверку. |

## Формируемые предупреждения

Значениями по умолчанию являются действия шага без `geolocation_preset`.
При пресете `licensing` для `LOCATION_VPN_DETECTED`, `LOCATION_TOR_DETECTED` и `LOCATION_EMULATOR_DETECTED` по умолчанию задано значение `DECLINE`, а для `LOCATION_PROXY_DETECTED` задано `REVIEW`.
При пресете `fraud_screening` любое значение по умолчанию `DECLINE` меняется на `REVIEW`, и эти четыре обнаружения анонимайзеров получают значение `REVIEW`.
Действие, заданное вами явно, всегда имеет приоритет.

### Разрешение и доступность

| Риск | Триггер | Ключ конфигурации | По умолчанию |
| - | - | - | - |
| `LOCATION_PERMISSION_DENIED` | Пользователь отклонил или закрыл запрос на доступ к местоположению на каждой разрешённой попытке. Это выбор пользователя, а не свидетельство мошенничества. | `geolocation_permission_denied_action` | `REVIEW` |
| `LOCATION_RESTRICTED` | Операционная система отклонила запрос до того, как пользователь успел ответить: службы геолокации отключены на уровне устройства, либо их блокирует политика управления устройствами или родительского контроля. | `geolocation_unavailable_action` | `REVIEW` |
| `LOCATION_UNAVAILABLE` | Устройство приняло запрос, но его система позиционирования не вернула координаты на каждой разрешённой попытке. Обычное явление внутри помещений и под землей. | `geolocation_unavailable_action` | `REVIEW` |
| `LOCATION_TIMEOUT` | Координаты не были получены в течение `geolocation_timeout_seconds` ни на одной из разрешённых попыток. | `geolocation_unavailable_action` | `REVIEW` |
| `LOCATION_SKIPPED` | Сценарий разрешает пропуск, и пользователь продолжил, не предоставив местоположение. | `geolocation_unavailable_action` | `REVIEW` |
| `LOCATION_UNSUPPORTED_CLIENT` | Сессия открыта в приложении или сборке SDK, где этот шаг не реализован. Didit завершил шаг вместо того, чтобы оставить сессию зависшей. Обновите SDK. | `geolocation_unavailable_action` | `REVIEW` |

### Точность и актуальность

| Риск | Триггер | Ключ конфигурации | По умолчанию |
| - | - | - | - |
| `LOCATION_LOW_ACCURACY` | Лучшая позиция имела радиус погрешности больше, чем `geolocation_max_accuracy_radius_m`. Это показатель уверенности, а не честности. | `geolocation_low_accuracy_action` | `REVIEW` |
| `LOCATION_ACCURACY_UNDETERMINED` | Координаты не содержали радиуса погрешности ни на одной разрешённой попытке, поэтому невозможно подтвердить соответствие лимиту. Они никогда не считаются соответствующими ему. | `geolocation_low_accuracy_action` | `REVIEW` |
| `LOCATION_STALE_FIX` | Координаты были измерены более чем за `geolocation_max_age_seconds` до того, как Didit их получил. | `geolocation_stale_fix_action` | `REVIEW` |
| `LOCATION_APPROXIMATE_ONLY` | Требовалось точное местоположение, но пользователь предоставил приблизительное (сниженная точность в iOS, режим «Приблизительно» в Android). Никогда не возникает в веб-версии, так как браузер не может это определить. | `geolocation_approximate_action` | `REVIEW` |
| `LOCATION_CLOCK_SKEW` | Устройство передало, что координаты измерены в будущем относительно часов Didit. Имеет только информационный характер: для определения актуальности используется время получения Didit. | нет | информация |

### Спуфинг и целостность

| Риск | Триггер | Ключ конфигурации | По умолчанию |
| - | - | - | - |
| `LOCATION_MOCK_PROVIDER_DETECTED` | Android сообщил, что координаты получены от провайдера фиктивного местоположения. Инструменты тестирования и специальных возможностей также могут его включать, поэтому действие настраивается. | `geolocation_mock_location_action` | `REVIEW` |
| `LOCATION_SIMULATED_BY_SOFTWARE` | iOS сообщила, что координаты были сэмулированы программно. | `geolocation_mock_location_action` | `REVIEW` |
| `LOCATION_INTEGRITY_MISSING` | Нативное приложение отправило координаты без аттестации устройства. Для веб-версии это фиксируется как неподдерживаемое, а не отсутствующее. | `geolocation_integrity_missing_action` | `NO_ACTION` |
| `LOCATION_EMULATOR_DETECTED` | Приложение сообщило о запуске на эмуляторе или виртуальной машине. Браузеры не могут передавать эти данные. Если для действия не задано `NO_ACTION`, шаг завершается на этой попытке. | `geolocation_emulator_action` | `NO_ACTION` |
| `LOCATION_VPN_DETECTED` | Соединение, через которое переданы координаты, выходит через коммерческий VPN. Если для действия не задано `NO_ACTION`, пользователю предлагается отключить его и повторить проверку. | `geolocation_vpn_action` | `NO_ACTION` |
| `LOCATION_PROXY_DETECTED` | Соединение проходит через открытый, анонимный прокси или прокси типа Private Relay. | `geolocation_proxy_action` | `NO_ACTION` |
| `LOCATION_TOR_DETECTED` | Соединение использует выходной узел Tor. | `geolocation_tor_action` | `NO_ACTION` |

### Зоны

| Риск | Триггер | Ключ конфигурации | По умолчанию |
| - | - | - | - |
| `LOCATION_OUTSIDE_GEOFENCE` | Координаты и весь круг погрешности находятся за пределами всех разрешённых зон. | `geolocation_geofencing_action` | `DECLINE` |
| `LOCATION_GEOFENCE_UNDETERMINED` | Круг погрешности пересекает границу, определяющую результат, либо координаты не привязаны ни к одной стране. Неопределённость никогда не интерпретируется как нахождение за пределами. | `geolocation_geofence_undetermined_action` | `REVIEW` |
| `LOCATION_IN_BLOCKED_AREA` | Координаты и весь круг погрешности находятся внутри заблокированной зоны. Это добавляется к вердикту по разрешённой зоне, а не заменяет его, и применяется более строгое действие. | `geolocation_blocked_area_action` | `DECLINE` |

### Расстояние и история

| Риск | Триггер | Ключ конфигурации | По умолчанию |
| - | - | - | - |
| `LOCATION_IP_DISTANCE_MISMATCH` | Расстояние между координатами устройства и местоположением по IP больше, чем `geolocation_ip_distance_km`, после вычитания обоих радиусов. VPN, корпоративный прокси или центральный шлюз оператора связи могут вызывать это на законных основаниях. | `geolocation_ip_distance_action` | `REVIEW` |
| `LOCATION_DOCUMENT_DISTANCE_MISMATCH` | Координаты находятся дальше от адреса в документе, чем `geolocation_document_distance_km`. Это слабый сигнал, поскольку адреса геокодируются приблизительно, а люди путешествуют. | `geolocation_document_distance_action` | `REVIEW` |
| `LOCATION_CONSECUTIVE_MISMATCHES` | Эта проверка и более ранние проверки того же пользователя (с тем же `vendor_data`) оказались вне разрешённой зоны, в заблокированной зоне или слишком далеко от адреса как минимум `geolocation_consecutive_mismatch_count` раз подряд. | `geolocation_consecutive_mismatch_action` | `REVIEW` |

## Что видит пользователь

Некоторые результаты никогда не объясняются пользователю, поскольку раскрытие сигнала подсказывает мошеннику, что именно нужно изменить.
`LOCATION_EMULATOR_DETECTED`, `LOCATION_MOCK_PROVIDER_DETECTED`, `LOCATION_SIMULATED_BY_SOFTWARE`, `LOCATION_REPLAY_DETECTED`, `LOCATION_INTEGRITY_FAILED` и `LOCATION_IP_DISTANCE_MISMATCH` входят в эту группу: если проверяющий отправляет верификацию на повторную проверку, пользователь видит обобщённую причину, тогда как payload решения и ваши webhook сохраняют полное предупреждение.
Использование VPN показывается пользователю только как просьба отключить любой VPN и повторить попытку, а заблокированная зона показывается только как список мест, где доступен сервис.

## Пример

```json theme={null}
{
  "risk": "LOCATION_LOW_ACCURACY",
  "log_type": "warning",
  "short_description": "Device location accuracy below the configured limit",
  "additional_data": {
    "accuracy_m": 1200.0,
    "accuracy_confidence": "p95",
    "max_accuracy_radius_m": 250
  },
  "node_id": "geolocation_1"
}
```

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

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

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

* [Отчёт о проверке местоположения](https://docs.didit.me/ru/core-technology/location-verification/report-location-verification.md) - поля рядом с `warnings[]`.
* [Проверка местоположения](https://docs.didit.me/ru/core-technology/location-verification/overview.md) - как работает этот шаг.
* [Конфигурация функций сценария](https://docs.didit.me/ru/management-api/workflows/feature-configs.md#верификация-местоположения) - все ключи действий.
* [Модели данных - Объект предупреждения](https://docs.didit.me/ru/reference/data-models.md#объект-предупреждения) - структура каждого элемента в `warnings[]`.


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