В прогоне курса дашборд «Кодиума» уже работал на сервере, когда мы открыли две страницы кабинета рядом. Старая «Аналитика» из П4 показала 83 заявки. Новый «Дашборд» сложил бота и сайт: 44 плюс 36, итого 80. Ошибки в коде не было. Обе страницы считали честно, просто считали разное. Владелец, увидев два «всего», перестал бы верить обеим. Этот урок о том, как выбрать числа для дашборда и записать для каждого одно определение.
Чему научишься в этом уроке:
• отбирать 5–7 ключевых чисел по правилу «что сделает владелец»;
• записывать определение метрики: что считаем, какие заявки входят, за какой период;
• выбирать медиану вместо среднего, когда одна заявка портит картину;
• читать «к прошлой неделе» и не делать выводов из маленьких чисел.
Семь чисел «Кодиума»
В уроке 6.1 мы договорились: в KPI попадает число, по которому владелец что-то сделает. Для «Кодиума» с его кабинетом заявок получилось семь:
- Заявки за неделю. Упали: смотреть рекламу и работу бота.
- Записано за неделю. Главный результат для школы.
- Конверсия недели: записано разделить на заявки. Падает при том же числе заявок: смотреть работу менеджеров.
- Воронка: сколько заявок недели сейчас «новая», «в работе», «записан», «отказ». Показывает, где застревают.
- Конверсия по источникам (бот, сайт). Куда вкладывать деньги на рекламу.
- Конверсия по курсам. Какой курс проседает: менять описание, цену, программу.
- Время до первого контакта: сколько заявка ждала, пока менеджер взял её в работу. Выросло: человек остыл, пока ему не звонили.
Заметь, чего в списке нет. Выручки: кабинет не знает об оплатах, и придумывать её мы не будем. Сравнения менеджеров между собой: двух человек мало для честного рейтинга, а спор «кто лучше» уводит от дела. Если заказчик попросит, это отдельная договорённость.
Одно определение на весь кабинет
Почему 83 и 80? Разобрали по строкам. «Аналитика» считала все заявки за всё время, включая одну тестовую с источником test, оставшуюся от проверки приёма заявок. «Дашборд» считал только последние 8 недель и только бота и сайт. Два разных вопроса с одинаковой подписью «всего».

Это как два продавца в одном магазине, которые по-разному считают «продажи за день»: один с возвратами, другой без. Оба правы, а хозяин в растерянности. Лечится не исправлением одной страницы, а договорённостью: у каждой метрики одно записанное определение, и все страницы кабинета считают её одной функцией в коде.
Определение метрики отвечает на четыре вопроса:
- Что считаем: количество заявок, долю, время.
- Какие заявки входят: без тестовых; демо-данные для показа только с пометкой и отдельно от настоящих.
- За какой период: неделя с понедельника по воскресенье по московскому времени.
- Откуда число: из таблицы заявок или из журнала смены статусов.
Почему важно «по московскому времени». Кабинет хранит время в UTC (время по Гринвичу, на 3 часа раньше московского), это мы разбирали в П4. Заявка пришла в понедельник в 01:00 по Москве, а в UTC это ещё воскресенье 22:00. Режем недели по UTC, и она попадёт в прошлую неделю. Так ночные заявки уезжают не туда, и «к прошлой неделе» поедет.
Тестовые заявки помечай. Ты будешь отправлять их ещё не раз: при каждой проверке приёма. Если у них нет пометки, они тихо попадают в «всего». В П5 демо-заявки получат пометку is_demo, а тестовой нужен источник test и правило «test в метрики не входит».
Медиана вместо среднего
Время до первого контакта берём из журнала П4: момент, когда заявка сменила статус «новая» на «в работе», минус момент её создания. Пусть за неделю пять заявок ждали 0,5, 0,7, 0,8 и 1 час, а одну забыли на 48 часов. Среднее: сложить и поделить на 5, получится 10,2 часа. Кажется, что менеджеры работают ужасно, хотя три заявки из пяти взяты меньше чем за час, а ещё одна ровно за час.
Медиана: выстрой значения по порядку и возьми то, что посередине. Здесь это 0,8 часа. Как средний рост в классе: если в класс зашёл баскетболист, среднее подскочит, а рост «среднего ученика» не изменится. Поэтому на дашборде «Кодиума» две цифры: медиана и доля заявок, взятых быстрее часа. А заявки, которые ещё никто не взял, идут отдельной строкой «ещё не взяты», а не нулём: ноль часов ожидания выглядел бы как рекорд.
«К прошлой неделе» и маленькие числа
Число без сравнения мало что говорит. «Записано 4» это хорошо или плохо? Поэтому у карточек недели подпись «к прошлой неделе». В прогоне карточки показали: новых заявок 15 (на 4 больше, чем неделей раньше), записано 4 (на 2 больше), конверсия 26,7%.

Две тонкости. Первая: у конверсии подпись «+8,5%», но это не рост на 8,5 процента, а разница долей: было около 18%, стало 26,7%. Такую разницу называют процентными пунктами, и в определении стоит так и написать. Вторая: в той же строке карточка «В работе» показывает 17, а в воронке недели «в работе» всего 2. По экрану не понять, кто из них прав: похоже, карточка считает все заявки, что сейчас в работе, а воронка только заявки этой недели. Проверить можно одним способом: спросить агента, по какому правилу считается каждое число. Снова два определения под одним названием, и снова лечится записью определения.
Маленькие числа обманывают. Курс JavaScript на демо-данных: 10 заявок, 7 записаны, конверсия 70%. Модель в выводах назвала его лидером, «опережающим остальные почти в два раза». Но при 10 заявках одна лишняя запись меняет долю на 10 пунктов. Правило для «Кодиума»: если в разрезе 10 заявок и меньше, рядом с процентом всегда показываем количество, а выводов «курс лучший» не делаем. 3 из 4 это 75%, но это шум, а не закономерность.

Контрольный вопрос. «Аналитика» показывает 83 заявки, «Дашборд» показывает 80 (бот 44 + сайт 36). Что делаешь?
Подсказка: Обе страницы считают честно. Чем отличаются их вопросы?
На курсе задания проверяются автоматически. Решить первое задание бесплатно → · Подобрать курс
Контрольный вопрос. Пять заявок недели ждали первого контакта 0,5; 0,7; 0,8; 1 и 48 часов. Что покажешь на дашборде как типичное время?
Подсказка: Одна забытая заявка не должна определять картину всей недели.
На курсе задания проверяются автоматически. Решить первое задание бесплатно → · Подобрать курс
Контрольный вопрос. У курса 10 заявок и 7 записанных, конверсия 70%. Модель пишет: «лучший курс, вдвое опережает остальные». Как подать это владельцу?
Подсказка: Насколько изменится доля, если записался бы на одного человека меньше?
На курсе задания проверяются автоматически. Решить первое задание бесплатно → · Подобрать курс
Задание. МИССИЯ «Карточки определений». 1. Возьми таблицу «вопрос → число → действие» из миссии урока 6.1. 2. Оставь 5–7 чисел. Для каждого заполни карточку: что считаем, какие записи входят (что делаем с тестовыми), период и часовой пояс, откуда число (таблица или журнал). 3. Для времени отметь, что показываешь: медиану, долю быстрее порога, отдельно «ещё не взяты». 4. Для каждого разреза (источник, курс, услуга) запиши порог малых чисел: при скольких записях вывод не делаем. 5. Открой две страницы своего кабинета из П4, где есть одно и то же число (например, «всего заявок»), и сравни. Совпали? Если нет, запиши почему. Сделай в среде: К каждой карточке выполни на базе кабинета запрос, который считает это число. Принято, если: приложены 5–7 карточек по четырём вопросам, у разрезов есть порог, и есть результат сравнения двух страниц со снимками; у каждой карточки есть запрос и его результат с базы.
Подсказка: Если в кабинете нет второй страницы с тем же числом, сравни число на странице с выгрузкой xlsx.
✅ Готово, если: программа запускается без ошибок и выводит то, что просят в задании.
На курсе задания проверяются автоматически. Решить первое задание бесплатно → · Подобрать курс
Что дальше
Числа выбраны и определены. В следующем уроке собираем страницу «Дашборд» с Claude Code: демо-данные, графики без внешних серверов и сверка каждого числа с базой.
Итог:
• на дашборде «Кодиума» семь чисел, и у каждого есть действие владельца;
• у метрики одно записанное определение: что, какие записи, период по МСК, откуда;
• время до контакта показываем медианой и долей быстрее часа;
• «к прошлой неделе» для долей считаем в пунктах, маленькие разрезы показываем с количеством.
