Что было до: KPI в таблицах, совещание в пересказе

Руководитель L7 не видел, что происходит в компании прямо сейчас. KPI по отделам вели в Google-таблицах: одна общая по отделам плюс локальные по сотрудникам. Цифры переносили руками. Отклонения ловили на глаз.

Часть данных жила в чужих системах. Руководитель отдела каждый день переписывал прибыль клиентов с маркетплейсов из аналитики в таблицу. Приход и расход вбивали из финансовой CRM. Качество аудитов и звонков лежало ещё в нескольких отдельных файлах.

Утреннее совещание уходило на пересказ таблиц. Разбирать цифры было уже некогда. Задача звучала просто: один экран, где план и факт по всем отделам считаются сами и обновляются к девяти утра.

Один экран: план, факт, светофор, прогноз

Сервис построен по методике «Рука на пульсе». Иерархия простая: отдел, раздел, показатель. Планы ставятся на месяц, неделю и день, факт заполняется по дням. Рядом светофор и прогноз выполнения.

Показатели делятся на два типа. КОП это действия, которые команда контролирует сама. ГПР это результат. Третий раздел «Справочник» держит цифры-состояния: их видно, в процент выполнения они не входят.

Для планёрки сделали режим «Совещание» на весь экран. Отдел за отделом, вчерашние цифры, узкое горлышко недели, ключевое действие. Колонки настраиваются, стрелки перелистывания крупные, чтобы вести встречу с телефона. ИИ-директор Альберт читает цифры отдела и пишет короткий разбор: где горлышко и что делать сегодня.

Под отделы собрали отдельные модули: Sale Time с дневным планом по продавцам и воронкой, Отдел Контроля с аудитами и звонками, Календарь совещаний, Графики, сквозная аналитика лидов с Битрикс24 и Яндекс.Директом.

!
Самые дорогие баги ничего не ломают

Ни ложная галочка «сохранено», ни завышенная прибыль из соседней системы, ни пустой план не давали ошибки. Экран выглядел рабочим, цифры просто были другими. Поэтому в «Автоматизации» теперь видно статус синка, дату последнего заезда данных и явное предупреждение, когда план из внешней системы не приехал.

Цифры приезжают сами

Три источника подключены напрямую, чтобы никто не вбивал их руками.

Забор запускает сама база. Встроенный планировщик в 8:00 МСК идёт за данными и раскладывает суммы по дням. Час запаса до совещания. По такому показателю ручной ввод закрывается и в интерфейсе, и на сервере, чтобы цифру не переписали поверх.

Связки собраны в разделе «Автоматизация». Видно статус синка, когда последний раз приезжали данные, сумму за 30 дней по каждой связке и кнопку «Обновить сейчас». Одну цифру можно вести в несколько показателей с разными разрезами.

  • Модуль отдела продаж: дневной план и факт по продавцам, воронка, задачник.
  • Финансовая CRM: восемь денежных ключей, от прихода клиентов до остатка фондов, с разрезами по отделам.
  • Аналитика маркетплейсов: операционная прибыль минус налоги и реклама, по клиенту и по площадке.

Из внутреннего инструмента в продукт

Через месяц после старта сервис открыли внешним командам. Данные компаний разделены на уровне самой базы: у каждой строки есть отметка, чья она, и база физически не отдаёт чужие строки, даже если запрос их попросит. Приложению не нужно об этом помнить.

Добавились регистрация кабинета, три тарифа с лимитом по числу сотрудников (5 человек бесплатно, 20 за 990 ₽ в месяц, без ограничений за 2 990 ₽), проверка платных функций на сервере и панель супер-админа. Отдельно провели пентест: нашли и закрыли критические дыры в правах доступа, политики переписали целиком.

Деплой идёт без ручного захода на сервер. Пуш в репозиторий, сборка образа, сервер сам забирает новую версию по таймеру. Внутри сервиса есть раздел «Что нового» на 50 релизов, чтобы команда видела, что заехало.

Грабли, на которые наступили

23 июня команда написала массово: сервис не сохраняет цифры. Вводишь число, крутится индикатор, зелёная галочка. После обновления страницы пусто.

Проверили фактом и отсекли очевидное: код не менялся, контейнер не перезапускался, база без блокировок. Причин оказалось две, и они маскировали друг друга. Сеть части команды резала HTTP-метод PATCH, пропуская GET и POST: новые ячейки сохранялись, правки существующих терялись молча. Плюс лимит выдачи в 1000 строк, когда фактов за месяц уже 1057. Часть данных не доезжала до экрана вообще у всех.

Вылечили так: всю запись из браузера перевели на POST-вызовы под правами пользователя, чтение сделали постраничным. Побочный выигрыш оказался важнее самого фикса. При сетевом сбое индикатор теперь честно краснеет вместо зелёной галочки.

  • Пентест нашёл дыры, которые формально уже чинили. В прошлой миграции правила доступа удаляли по именам, реальные имена оказались другими, и старые правила продолжили жить рядом с новыми. Теперь сносим перебором по системному каталогу.
  • 1 июля 2026 выпало на среду. Месяц переключался строго по календарю, рабочая неделя разваливалась на два обрубка, планы слетали посреди недели. Ввели «недельный месяц»: неделя целиком принадлежит месяцу своего понедельника.
  • Первый коннектор записал деньги на реальные даты, и суммы занизились. Неделя в сервисе идёт с понедельника по пятницу, факт за субботу лежал в базе и не попадал ни в неделю, ни в месяц. Теперь выходные прибавляются к пятнице своей недели, и через этот пересчёт обязан проходить любой новый коннектор.
  • Кэш запросов остался общим на весь процесс после перехода на несколько компаний. Первый, кто сходил за данными, клал в кэш свой ответ, второй получал его в обход базы. Ключи привязали к компании, сброс сделали пофирменным.

Сколько это заняло

Старт во второй половине апреля 2026. Первого мая анонс команде и внутренний роллаут. Девятнадцатого мая за один этап закрыли всю цепочку для внешних компаний. Дальше пентест, контейнеризация, недельный месяц, два коннектора за один день третьего августа.

Итого около 4,5 месяцев непрерывной работы: 50 релизов, 42 спринта миграций базы, 21 функция расчёта внутри самой базы. Сервис живой и используется ежедневно.

Частые вопросы

Как контролировать KPI отделов без гугл-таблиц?

Показатели выстроены в три уровня: отдел, раздел, показатель. Планы ставятся на месяц, неделю и день, факт заполняется по дням, рядом светофор и прогноз выполнения. Показатели делятся на два типа: КОП это действия команды, ГПР это результат. Цифры-состояния лежат в разделе «Справочник» и в процент выполнения не входят.

Можно ли подтягивать цифры из CRM и с маркетплейсов автоматически?

В Пульсар7 подключены три внешних источника без ручного ввода. Модуль отдела продаж отдаёт дневной план и факт по продавцам, финансовая CRM восемь денежных ключей с разрезами по отделам, аналитика маркетплейсов операционную прибыль минус налоги и реклама. Планировщик забирает данные в 8:00 МСК и раскладывает суммы по дням, час запаса до совещания. По такому показателю ручной ввод закрыт и в интерфейсе, и на сервере, чтобы цифру не переписали поверх.

Сколько стоит Пульсар7, есть ли бесплатный тариф?

Тарифов три, лимит считается по числу сотрудников. До 5 человек бесплатно, до 20 человек 990 ₽ в месяц, без ограничений 2 990 ₽ в месяц. Доступ к платным функциям проверяется на сервере.

Как проводить утреннюю планёрку по цифрам?

Для этого есть режим «Совещание» на весь экран: отдел за отделом, вчерашние цифры, узкое горлышко недели, ключевое действие. Факт за вчера собирается к 8:00 МСК, до девяти остаётся час запаса. Колонки настраиваются, стрелки перелистывания крупные, встречу можно вести с телефона. ИИ-директор Альберт читает цифры отдела и пишет короткий разбор.

Как в сервисе разделены данные разных компаний?

Строки разделены на уровне самой базы: у каждой записи есть отметка, чья она, и база физически не отдаёт чужие строки, даже если запрос их попросит. Приложению не нужно об этом помнить. Перед выходом на внешние команды провели пентест: нашли и закрыли критические дыры в правах доступа, политики переписали целиком.