Дашборд продаж
Сводка продаж за период: воронка, план на месяц, реакция на лиды, причины отказа, переток по стадиям, лиды на карте и выгрузка.
Дашборд продаж
URL: /admin/crm/. Сверху — итоги периода и выбор воронки, под
ними AI-сводка и плитки воронки за всё время. Дальше блоки идут двумя
колонками: план на месяц, разбивка по организациям, сотрудники, «Сегодня»,
назначенные монтажи, застрявшие сделки, карта лидов, воронка и переток,
реакция на лид, причины отказа, последние сделки, источники и типы. Крупные
суммы показываются коротко («549,8К ₽»), точное значение — в подсказке.
Выпуск 3.7.0: воронка и период в шапке
Выбор воронки, период (общий календарь с готовыми вариантами и своими датами) и «Выгрузить» стоят в строке шапки рядом с названием. Сводки, AI-сводка, переток по стадиям и выгрузка считаются за выбранные даты, а не только за «последние 7/30/90 дней». Цвета стадий — оттенки фирменного зелёного, серые — для закрытых.
Выбор воронки
Кнопка над показателями переключает дашборд между «Все воронки» и одной
воронкой (?pipeline=<id>). По выбранной воронке считаются итоги
периода, AI-сводка, плитки, воронка и переток, застрявшие сделки, сотрудники и
разбивка по организациям — по тому же правилу, что на доске: сделки своей
воронки, а у основной ещё и сделки её типа без явной воронки.
- Выбор общий с доской: воронка, открытая на доске, открывается и здесь. «Все воронки» дашборд запоминает отдельно и доску не трогает.
- Список тот же, что над доской: бейдж организации, стрелки и Esc с клавиатуры, на телефоне — отдельной строкой во всю ширину.
- При «Все воронки» подключённой считается сделка в выигрышной стадии любой воронки (у интернета — «Подключено», у видео — «Сдан» и «Обслуживание», у ИТ-услуг — «Поддержка»), отказом — в проигрышной.
Итоги периода
Полоса над плитками: новые лиды · подключено · абонплата подключённых
в месяц · доля заявок периода, которые уже подключены — за 7, 30 или 90
дней (параметр ?days=). У каждой цифры — дельта к предыдущему такому
же окну: ↑ зелёная, ↓ красная, доля — в процентных пунктах. Подключение
считается по моменту входа сделки в выигрышную стадию. Разовые поступления — в
подсказке к абонплате: складывать их с ежемесячными деньгами нельзя. Чипы
«новых лидов» и «подключено» ведут на доску выбранной воронки.
План на месяц
Цель на календарный месяц: сколько подключений и какую абонплату они должны принести. Задаётся в Настройки CRM → «План продаж на месяц» отдельно для каждой организации; пустые поля — плана нет. На дашборде — факт с начала месяца, процент выполнения и отметка ровного темпа (доля прошедших дней). Строка под полосой говорит словами: «Идём с опережением», «Идём по графику», «Отстаём от ровного темпа на N» или «План выполнен».
- При «Все организации» складываются планы организаций, доступных сотруднику; при выбранной в шапке организации — только её план.
- План и факт — по всем воронкам организации; при выбранной воронке под полосами стоит напоминание.
- Пока плана нет, блок видят только те, кто может менять настройки CRM, — с кнопкой «Задать план».
- Цвет полосы: зелёный — в графике, оранжевый — отстаём, но не больше чем на 20 %, красный — сильнее.
- Изменение плана пишется в журнал: кто, по какой организации, было и стало.
flowchart LR
S["Настройки CRM:
план по организациям"] --> P["План месяца
в области видимости"]
D["Сделки, вошедшие
в выигрышную стадию
с 1-го числа"] --> F["Факт: подключения
и абонплата по тарифам"]
T["Прошедшая доля месяца"] --> E["Ровный темп =
план × доля"]
P --> E
F --> C{"Факт против
ровного темпа"}
E --> C
C -- "не меньше" --> OK["Зелёный:
по графику"]
C -- "меньше, но от 80 %" --> W["Оранжевый:
отстаём"]
C -- "меньше 80 %" --> R["Красный:
отстаём сильно"]
Реакция на лид
Сколько времени проходит от появления заявки до первого действия сотрудника по ней — за период полосы сверху. Действием считается заметка сотрудника, исходящий звонок по сделке или смена стадии; действия ботов не считаются. Время календарное, без учёта рабочих часов.
flowchart LR
N["Новая сделка
(время создания)"] --> M{"Первое действие
сотрудника"}
A1["Заметка"] --> M
A2["Исходящий звонок"] --> M
A3["Смена стадии
(история стадий)"] --> M
M --> R["Реакция =
действие − создание"]
R --> B["Медиана и доли:
15 мин · час · сутки · дольше"]
N -. "действий нет" .-> X["Ещё без реакции"]
Причины отказа
Сделки, ушедшие в отказ за период, по причинам. Причину спрашивает окно перевода в стадию отказа — выбор из списка правила воронки или свой вариант. Одинаковые причины, записанные с разным регистром, объединяются, редкие собраны в «Другие», пустые — в «Причина не указана». Длина полосы — относительно самой частой причины, справа число и доля.
Остальные блоки
- Источники лидов и типы сделок — кольцевые диаграммы, рядом список с цветом, долей и числом; у редких строк доля «<0,1 %». Блок типов скрыт при выбранной воронке: тип в ней один.
- Сегодня — кто сколько сделал с начала дня: звонки, заметки, созданные и выигранные сделки; у сотрудника — фото или инициалы.
- Последние сделки — стадия бейджем: при «Цветовой маркировке статусов» — цветом стадии из воронки, без неё — тоном по смыслу (подключено зелёный, отказ красный).
- Застрявшие сделки — открытые сделки, которые дольше 7 дней в одной стадии: десять самых давних и общее число («10 из 540»). Подпись и цвет стадии берутся из воронки самой сделки.
Выгрузка в Excel
Кнопка «Выгрузить» в полосе итогов скачивает файл за тот же период, с учётом выбранной воронки и организации.
- Лист «Сделки» — строка на сделку: создана, название, организация, воронка, стадия, источник, кампания, ответственный, клиент, телефон, адрес, тариф, абонплата в месяц и разовые, реакция в минутах, дата входа в стадию, причина отказа.
- Лист «Сводка» — кто и когда выгрузил, период, воронка и организация, итоги периода, реакция на лид и причины отказа.
- В файле до 20 000 строк; если сделок больше, сводка об этом предупреждает.
- Каждая выгрузка пишется в журнал: кто, за какой период, сколько сделок и из какой воронки.
AI-сводка воронки
Зелёная карточка под итогами: AI формулирует 3–5 предложений — динамика
периода, узкое место (стадия с застрявшими ≥5 дней сделками), лучший источник
лидов и рекомендация. Факты собирает код (числа AI не выдумывает), текст пишет
движок из AI-агента. Сводка учитывает
выбранную воронку. Первый раз карточка открыта, дальше свёрнута до заголовка.
Кеш — 1 час на сочетание «организация + доступ сотрудника + воронка + период»,
кнопка ↻ пересчитывает принудительно.
Endpoint: GET /admin/crm/ai_summary/?days=30&pipeline=all.
Переток по стадиям — Sankey
Диаграмма под воронкой: сколько сделок за период перешло из стадии в стадию.
Ширина потока — число переходов, цвета узлов — цвета стадий воронки. Видно, на
какой стадии воронка «протекает» в отказ. Движения назад в диаграмму не входят —
они посчитаны отдельно («N возвр.» в шапке карточки). Воронка — выбранная на
дашборде, при «Все воронки» — основная интернет-воронка.
Endpoint: GET /admin/crm/stage_flow/?days=30&pipeline=<id>.
Источник — история стадий. Каждая смена стадии записывается отдельной строкой: сделка, воронка, организация, из какой стадии, в какую, кто и когда. Запись делает сама модель сделки при сохранении, поэтому в историю попадает любой путь: доска, панель лида, наряд «Выполнено», автоматизации, импорт. Создание сделки тоже записывается — с пустой исходной стадией. Раньше переток собирался разбором текста журнала, и новая формулировка в журнале молча опустошила бы диаграмму.
Переходы до 16.09.2026 восстановлены из журнала (3 309 переходов с
13.06.2026) командой manage.py crm_stage_events_backfill --apply;
повторный запуск ничего не дублирует. Мимо истории проходят только массовые
обновления базы и создание демо-данных.
flowchart LR
subgraph W["Где меняется стадия"]
K["Доска"]
L["Панель лида"]
MZ["Наряд «Выполнено»"]
AU["Автоматизации, импорт"]
end
W --> S["Сохранение сделки"]
S --> H[("История стадий")]
J["Журнал аудита
до 16.09.2026"] -. "crm_stage_events_backfill" .-> H
H --> F["Переток по стадиям"]
H --> R["Реакция на лид"]
Лиды на карте
URL: /admin/crm/map/, тот же блок — на дашборде. Карта выглядит
так же, как слой «Лиды» на карте сети:
метки — капли цвета этапа со значком (новый лид, тариф, монтаж, подключено,
отказ), соседние собираются в кластер. Над картой две полосы:
- Этапы — у каждого число сделок с домом за выбранный период; нажатие скрывает или показывает этап, скрытый становится полупрозрачным. По умолчанию «Подключено» скрыто. Последняя кнопка — «Без дома N»: открытые заявки, у которых адрес не привязан к дому, на карту не попадают. Если у сотрудника есть доступ к карте сети, кнопка ведёт в её «Что заполнить».
- Ответственный — Все / Мои / Наблюдаю, у каждого варианта своё число.
Период (дата создания сделки) выбирается в шапке карточки, «Обновить» и «На весь экран» — справа на самой карте, «домой» — под кнопками масштаба. Нажатие на метку открывает карточку с телефоном и кнопками «Позвонить» и «Открыть»; вторая открывает боковую панель лида, и после действий в панели карта перерисовывается сама.
Выборку делает сервер. Раньше на страницу клали последние
2000 сделок с координатами, а период и «Мои» фильтровали только их: старые
сделки в выбранный период не попадали вовсе. Теперь период, ответственный,
скрытые этапы и воронка дашборда применяются на сервере — запросом той же
страницы с ?map_json=1; точек не больше 2000, новые первыми. Счётчик
в шапке показывает число сделок, а при обрезке — «показано N из M» и подсказку
на карте сузить период.
sequenceDiagram
autonumber
participant U as Сотрудник
participant P as Страница карты
participant S as Сервер
U->>P: период, этап, «Мои»
P->>S: та же страница, ?map_json=1
from, to, resp, off, pipeline
S->>S: сделки организации и воронки
с домом и координатами
S-->>P: до 2000 точек, числа по этапам,
«Без дома», всего M
P-->>U: метки, полосы с числами,
«показано N из M»