Достоверность внешних данных
Содержание
Чтобы «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.