Admin panel
Семнадцать экранов в двух режимах, блок «Почему ничего не происходит», как выглядит сбой и что из пульта видит клиент.
TL;DR
Пульт — семнадцать экранов в двух режимах: рабочем, где человек решает про аккаунты, и техническом, где видно состояние самой фермы. Главная его особенность в том, что он не рисует зелёные галочки: у каждой цифры три состояния — значение, честный ноль и «никто не смотрел».
Пульт оператора
Два режима вместо одной админки
Панель разделена по типу решения, а не по таблицам базы. В рабочем режиме человек отвечает на вопросы про аккаунты: что идёт сейчас, кого надо остановить, что ушло наружу, сколько потрачено. В техническом — про саму ферму: жив ли воркер, какие флаги взведены, на каких сборках приложений уехала карта экранов, что показывает журнал.
Деление не косметическое. Оператор в рабочем режиме не должен видеть внутренности, а инженер в техническом — не должен искать их между карточками персон.

Заголовок сформулирован как вопрос к человеку, а не как статус: «Ферма работает, но 10 вопросов требуют вашего решения» — и рядом оговорка «выполнено не меньше 221, а не ровно». Система не округляет в свою пользу.
Семь экранов, на которых работают
- Сегодня — живо ли всё, что идёт сейчас, и что сорвалось за сутки. Отсюда решают, куда бежать первым.
- Телефоны — парк, расхождения между тем, что видит система, и тем, что реально на шине, плюс живой поток экрана устройства. Отсюда решают, сломана трубка или просто спит.
- Персоны — кто на какой трубке, в какой фазе жизненного цикла, что делал сегодня. Отсюда решают, кого парковать.
- Задачи — очередь с состояниями и параметрами; тот же запуск повторяется одной кнопкой.
- Что ушло наружу — тексты, которые персоны реально опубликовали. Отсюда видно прокол в голосе раньше, чем его увидит аудитория.
- Публикации — что вышло и что ждёт своей даты.
- Расходы — сколько стоили вызовы моделей за месяц, с честной подписью «нижняя граница».
Главный экран — «Почему ничего не происходит»
В техническом режиме есть блок, который отвечает на самый частый вопрос эксплуатации не графиком, а текстом. Он перебирает причины по порядку — ночная пауза, окно персоны, парковка, кулдаун, потеря связи, пустая очередь — и называет ту, которая сработала сейчас.
Это сделано потому, что «всё зелёное, но ничего не идёт» — самое дорогое состояние в эксплуатации. Человек тратит на него часы, а система знает ответ и просто не говорила его вслух.
Как выглядит сбой
Сбой в пульте — не красная плашка, а карточка с четырьмя полями: кто, что именно не вышло, по какой причине и что с этим сейчас. Пример реального дня: телефон одной из персон ушёл из сети; шесть задач за сутки не выполнились, причина — устройство недоступно, текущее состояние — на связи, но за сутки сбоев насчитано девятнадцать.
Такая карточка честно говорит и то, чего система не знает: «по последним 500 задачам за сутки их могло быть больше». Отчёт, в котором всё всегда зелёное, — это отчёт, которому нельзя верить.
Флаги, карта экранов и остальное техническое
- Флаги — 376 переключателей с реестром зависимостей. Один и тот же флаг читают обе фермы со своими конфигами, и расхождение между ними подписано словом, а не цветом.
- Приложения — матрица «телефон × приложение»: где какая версия и где карта экранов помечена устаревшей.
- Селекторы — очередь самолечения: система предлагает правку карты по собственным замерам, утверждает человек. Заявки с возрастом и числом переспросов видны списком, и часть их помечена как опровергнутые свежим замером.
- Журнал — сквозной поток с курсором по времени и идентификатору задачи.
- Обучение — отдельный раздел, объясняющий каждую пустую клетку пульта: почему она пустая и что это значит.
Что из этого видит клиент
Когда телефоны стоят в ферме, клиент получает доступ в тот же рабочий режим — не в урезанную витрину с графиками, а в настоящий пульт. Он видит очередь своих аккаунтов, тексты, которые ушли наружу, и сбои со всеми подробностями. И у него есть та же кнопка «стоп», что и у оператора.