▤ Руководства

Достоверность внешних данных

Содержание

Чтобы «0» не путался с «нет доступа», весь сервис говорит об источниках на одном языке. Модель — src/Trust/DataState.php.

Пять состояний

  • Данные получены — источник ответил, значение получено.
  • Проверено: ноль — источник ответил, и реальный результат равен нулю. Это результат, а не отсутствие данных.
  • Нет доступа — сервис не подключён, ключ не принят или у ключа нет прав на объект (коды 401 и 403).
  • Не проверено — запрос ещё не выполнялся, отложен или пропущен.
  • Ошибка получения — запрос выполнялся и не удался: сеть, лимит (429), ошибка сервера, непонятный ответ, пауза защиты.

К состоянию добавляются давность (свежие, устаревают, устарели — по норме обновления сервиса из Providers\Compliance::EVERY) и достоверность из трёх точек: данные вашего кабинета (Яндекс, Google, Метрика, GA4) надёжнее оценочных данных лицензированных сервисов, публичный разбор страниц — слабее; устаревшие данные понижают достоверность.

Где это видно

  • Отчёт о сайте. У строки «нет данных» теперь есть причина: нет доступа, не проверено или ошибка получения. То же в CSV (колонка «Состояние данных»).
  • Полоса «Источники данных» на страницах ссылок, трафика, позиций, индексации, рынка, отзывов и частотности: по каждому подключённому сервису — состояние, возраст данных, достоверность и действие, если данных нет.
  • «Здоровье API». Сводка «Достоверность данных»: сколько сервисов в каждом состоянии и что требует внимания.
  • API. GET /api/v1/providers: data_state, data_confidence, data_age, data_reason.

Как определяется состояние сервиса

Порядок проверки: ключ не принят или 401/403 → нет доступа; не подключён → нет доступа; лимит или пауза → ошибка; последняя проверка формата ответа не прошла → по тексту ошибки; последний запрос не удался позже последнего успеха → ошибка; успехов ещё не было → не проверено; иначе данные получены с возрастом по последнему успеху.

Проверка на живых данных

На странице «Здоровье API» кнопка «Проверить» выполняет настоящий лёгкий запрос к каждому подключённому сервису. Итог: сколько сервисов работает, сколько без доступа и с ошибкой получения, сколько не подключено. Проверка на реальных ключах возможна только у владельца сервиса: сам код форматы ответов проверяет по документации.

Для разработчика

DataState::fromMessage() разбирает текст ошибки, fromItem() — строку отчёта, provider() и providers() — сервисы, ofValue() отличает ноль от пустого значения, num() выводит число или слово состояния. В шаблонах: data_badge(), data_conf(), data_strip() из views/_helpers.php. Тест — Pack117.