Любая панель управления флотом — всеми рабочими аккаунтами, которыми вы пишете, — обещает одно: посмотрел и понял, что происходит. Проблема в том, что интерфейсы устроены двоично. Значение либо есть, либо его нет; индикатор либо зелёный, либо красный. А реальность троична, и третье состояние — самое частое.
Два разных нуля
Возьмём простую строку на дашборде: «В спам-блоке: 0 аккаунтов».
- Ноль первый. Все аккаунты проверены сегодня, ни у одного ограничения нет. Отличная новость, можно работать.
- Ноль второй. Проверку никто не запускал. Ограничения, возможно, есть у половины флота — просто никто не спрашивал.
На экране это одна и та же строка. Владелец читает её одинаково, а работать эти два состояния заставляют по-разному: в первом случае надо запускать кампанию, во втором — сначала проверку.
Дальше хуже. Человек, увидевший зелёное, перестаёт задавать вопросы. Панель, которая рисует спокойствие вместо неизвестности, не просто ошибается — она активно мешает заметить проблему.
Правило: у признака три состояния, а не два
У нас это записано в коде отдельным файлом и звучит так: знаем · знали давно · не знаем. И следом — фраза, ради которой всё затевалось:
Отсутствие данных — это отдельный ответ, а не «всё хорошо». комментарий в модуле состояния аккаунта
Наружу поэтому уходит не голое значение, а тройка: что намерили, когда проверяли и насколько это ещё свежо. Экран сам решает, рисовать зелёное, серое или знак вопроса, — но соврать «всё в порядке» вместо «никто не смотрел» он уже не может: у него для этого просто нет данных.
Свежесть у разных признаков разная
Второе следствие того же правила, менее очевидное. Проверка не бывает вечной, но и устаревает она не одинаково: связь рвётся за час, а ограничение аккаунта держится неделями. Один общий срок годности здесь врал бы в обе стороны.
| Признак | Через сколько проверка перестаёт считаться свежей |
|---|---|
| Состояние связи | 6 часов |
| Состояние сессии | 1 сутки |
| Прокси | 1 сутки |
| Ограничение аккаунта | 7 суток |
| Спам-блок | 7 суток |
Практический смысл: вчерашняя проверка сессии — это ещё информация, а вчерашняя проверка связи — уже нет. «Знали давно» — честный ответ, который стоит между «знаем» и «не знаем», и он тоже должен быть виден.
Ноль вместо неизвестного — молчаливое занижение
То же правило всплывает там, где считается балл живучести аккаунта. Соблазн простой: признак не измерен — подставим ноль, формула не сломается.
Сломается не формула, а смысл. Аккаунт, о котором мы ничего не знаем, получит балл как у аккаунта с плохими показателями, и владелец начнёт лечить здоровое. Поэтому у нас ноль вместо недоступного значения запрещён, а недоступный признак исключается из расчёта целиком — и из числителя, и из знаменателя. Он не двигает балл, он уменьшает уверенность в нём.
Отсюда третье состояние, которого обычно нет вовсе: противоречие. Данные есть, но не сходятся между собой. Вот это как раз штраф — потому что противоречие мы измерили, а не пропустили.
Разница между «плохо», «не знаем» и «данные спорят» — это три разных действия для владельца. Панель, которая сводит их к одному индикатору, экономит место за счёт вашего времени.
Родственные правила, которые следуют из того же
- Рядом с цифрой должен стоять порог. Число без порога владельцу ничего не говорит: «17 ошибок» — это много или обычный вторник?
- Пустой экран подписывается словами. Пустота может означать «ничего не произошло», «не настроено» или «сломалось» — и это опять три разных ответа.
- Наши собственные объяснения доходят до человека целиком. Внутренности — имена таблиц, номера миграций, состояние служб — клиенту не показываются, но текст проверки, написанный для человека, проходит насквозь. Глушить его — значит оставить владельца без ответа на вопрос, что он сделал не так.
Что спросить у своей панели
Пять вопросов, которые работают с любым инструментом, включая наш. Ответы стоит получить до того, как вы начнёте принимать по этой панели решения.
- Сколько объектов стоит за этой цифрой? «0 в спам-блоке» из скольких проверенных?
- Когда это проверялось в последний раз? Если экран не отвечает — считайте, что не проверялось.
- Как выглядит «не удалось проверить»? Если так же, как «всё хорошо», — панели верить нельзя.
- Что показывается, когда данных нет вовсе? Прочерк, ноль и «нет данных» — три разных сообщения; подменять их друг другом нельзя.
- Обновляется ли это само? Если проверка запускается только руками, то «не проверялось» — не исключение, а обычное состояние большей части флота.
Честные границы
- Правило принято, но выполнено не везде. Часть экранов ещё живёт по старой двоичной логике — мы приводим их к трём состояниям по мере того, как доходим.
- Мы сами наступили на это первыми. В одном из разборов насчитали шесть разных подписей, означавших ровно одно и то же — «не проверялось». Отсюда и правило.
- Проверка ограничений идёт по требованию, а не по расписанию. Фонового обхода флота нет, поэтому у части аккаунтов состояние честно неизвестно — и именно так и должно быть написано.
- Три состояния не делают данные точнее. Они лишь не дают выдать незнание за благополучие — а это разные вещи.
Зачем это покупателю
Затем, что панель — это то, по чему вы принимаете решения каждый день. Инструмент, который рисует зелёное там, где просто не смотрел, экономит вам две секунды на чтении экрана и стоит потом флота.
И проверить это можно до покупки, на демонстрации: попросите показать аккаунт, который ни разу не проверяли. Если он выглядит как здоровый — вы уже знаете, что увидите в день, когда что-то пойдёт не так.