Граф Wiki

Дашборд

Главный экран биллинга: показатели за день, тревоги, касса и финансовая динамика. С него начинается рабочий день оператора.

Модуль «Биллинг-ядро» — на сайте продукта
Содержание раздела

1. Дашборд

Обучающее видео 2:35

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

1920×1080 с озвучкой Скачать

Главная страница админки по адресу /admin/welcome/. Перестроена после /critique-аудита: иерархия KPI с hero-метрикой, единый визуальный язык компактных карточек (.dash-tile), все блоки скрываются автоматически при отсутствии данных.

Дашборд v966: «Что нового» с бейджами комментариев

Виджет SORM в правой колонке показывает статус выгрузок:

Виджет SORM на дашборде

«Горячие клиенты» + «Платежи: день × час» теперь в одном ряду:

Горячие клиенты + Heatmap в одном ряду

Карта клиентов (была пустой до v966):

Карта клиентов на дашборде (fix)

Период и организация — общие для всей страницы

Дашборд отвечает на два вопроса сразу: по какой компании смотрим и за какой срок. Оба ответа задаются один раз и действуют на все блоки «за период».

Дашборд: переключатель периода, KPI и сводки модулей

Наверху — период, ниже ключевые показатели, под ними сводки по модулям.

Показатели по выбранной организации

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

flowchart LR
  SEL["Селектор компании
в шапке"] --> F{"Фильтр организации"} F --> KPI["Клиенты · должники · заявки"] F --> FIN["Поступления · списания · ARPU"] F --> CH["График · карта платежей"] F --> TILES["Сводки модулей"] INFRA["Сеть: NAS · IP-пулы · СОРМ"] -.->|общие для установки| PAGE["Дашборд"] KPI --> PAGE FIN --> PAGE CH --> PAGE TILES --> PAGE
Что не фильтруется. Инфраструктура одна на установку: серверы доступа, IP-пулы, состояние СОРМ и нагрузка сервера показываются целиком независимо от выбранной компании — делить их между организациями нечего.

Единый период

Кнопки 7 дней · 30 дней · Квартал · Год в правой части шапки задают срок для всех блоков «за период»: поступления и списания, ARPU, новые клиенты, заявки, график и карта платежей. Выбор запоминается за сотрудником, поэтому при возврате на главную период остаётся прежним. Заголовки блоков называют выбранный срок — «Итого за период · 30 дней», «ARPU (квартал)», «Новых за год».

Блоки со своим смыслом. «Платежи сегодня» и «Касса месяца» остаются календарными: первый сравнивает сегодняшний день со вчерашним, второй показывает выполнение плана текущего месяца. Их период переключателю не подчиняется и подписан отдельно.

Сводки по модулям

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

Строка сводок по модулям

ПлиткаЧто показываетКуда ведёт
Сделки в работеОткрытые сделки всех воронок и число просроченных задачВоронка CRM
На складеСерийные единицы на складе и на руках у монтажниковСклад
Заявки с сайтовОбращения с лендингов за неделю и за сегодняЛендинги
Звонки за суткиВсе звонки и те, у которых не определился клиентЖурнал звонков
Разбор выписокСтроки выписок в очереди и проведённые за месяцОчередь выписок
КамерыВключённые камеры из общего числаОбъекты видеонаблюдения
flowchart TB
  MOD{"Модуль включён?"} -->|нет| SKIP["Плитки нет"]
  MOD -->|да| DATA["Считаем по выбранной организации"]
  DATA --> OK{"Есть что показать?"}
  OK -->|нет| SKIP2["Плитку пропускаем"]
  OK -->|да| TILE["Плитка: цифра · пояснение · ссылка"]
  TILE --> ATT{"Требует внимания?"}
  ATT -->|просрочки, очередь| WARN["Оранжевый значок"]
  ATT -->|всё ровно| CALM["Спокойный значок"]
Ошибка в одной плитке не роняет главную. Каждая считается отдельно: если у модуля ещё нет таблиц или сервис недоступен, пропадает только его плитка.

Тёмная тема и телефон

Дашборд в тёмной теме
Тёмная тема: та же раскладка, контраст бейджей доведён до нормы.
Дашборд на телефоне
Телефон: плитки по две в ряд, в шапке — значки и короткие подписи периодов.

На узком экране слова, которые не несут смысла без контекста («Просмотрено», «Обновление выкл.», «собираемость»), уступают место цифрам, а периоды сокращаются до «7 д · 30 д · 3 м · Год». Сумма дня показывается коротким числом — «154К ₽» вместо «153 957,80 ₽», точное значение остаётся в подсказке.

Шапка: 6 KPI-карточек

Верхний ряд — финансовый/операционный обзор. Hero-карточка «Должников» в 2× ширину с явным CTA «Все должники →» (единственный btn-primary на странице — даёт глазу первую точку фиксации). Остальные 5 KPI равноценные:

Все 6 градиентов унифицированы на linear-gradient(135deg, A, B) в одной палитре в одной палитре.

IP-пулы + EBS Синхронизация

Две компактные карточки в одну строку (~110px высоты вместо 200+):

Унифицированные бейджи .dash-pill с цветовым кодированием (is-ok/is-warn/is-danger/is-info). JS-обновление каждые 60 сек через /admin/dictionary/ip_pull_stats/ и /admin/ebs_sync_status/.

Свежие проблемы (alerts feed)

. Отображается только при наличии алертов. Источники:

Каждая строка кликабельна → ведёт в соответствующий раздел. Левый красный бордер 3px, максимум 6 алертов. Видна всем, не только cash-группе.

Касса месяца

. Расчёт по календарному месяцу (с 1-го числа) из FinanceOperations:

Касса месяца + Платежи сегодня vs вчера

Сверху справа бейдж «✓ Сбор N%» (зелёный/синий/оранжевый по тем же порогам). Видна только для группы cash.

Платежи сегодня vs вчера

. 4 ячейки + sparkline по часам:

В шапке — Δ-pill «к вчера» (≥+5% зелёный, ≤−5% оранжевый, иначе ≈ синий).

Горячие клиенты + CRM сегодня

. Две карточки в одной строке: «Горячие клиенты» (col-lg-8) + «CRM сегодня» (col-lg-4).

Горячие клиенты + CRM с 3 последними тикетами

Горячие клиенты 24ч — скоринг и интерпретация

Топ-5 клиентов, кому стоит уделить внимание прямо сейчас. Алгоритм в billing/views/auth.py::welcome.

Скоринг (суммируется):

В блок попадают клиенты со score ≥ 15, отсортированные по убыванию. Цвет строки: ≥50 — красный, ≥25 — оранжевый, <25 — синий.

Что значат коды разрыва (END_REASON в RADIUS_SESSIONS):

Корневые причины (паттерны):

  1. Массовые Lost-Carrier каждые 4–10 минут (100+ разрывов за сутки) — обрыв физики: гнилой коннектор RJ-45, плохая обжимка, попадание воды в муфту, проблема PoE-инжектора, MAC-конфликт на порту коммутатора. Это не баг биллинга и не пароль (тот дал бы Access-Reject). Действие: выезд монтажника на точку.
  2. Десятки User-Request с короткими сессиями (~2 минуты) — клиентский роутер сам разрывает PPP. Возможно: двойной PPPoE-клиент в прошивке, жёсткий idle-timeout в настройках, скрипт автоматического переподключения. Действие: связаться с клиентом, проверить настройки роутера.
  3. Lost-Carrier раз в 30–60 минут — нестабильный канал, наводки, перегрев SFP/коммутатора. Менее острый сигнал, но повод заявить в техобслуживание.
  4. «Оплатил, но заблокирован» (50 pts) — смотрим в карточке последние FinanceOperations и AbonentsBlock. Обычно это сбой автоматики разблокировки после платежа. Жмём «Разблокировать» вручную, проверяем что в Celery-beat работает task recheck_blocks.

Что смотреть в карточке клиента:

Состав строки в блоке: цветной score-badge → имя клиента (ссылка на карточку) → список причин («N разрывов», «тикет», «оплатил, но заблокирован») → баланс (красный если долг) → стрелка перехода в карточку.

CRM сегодня — сводка из HelpDesk (mailbox=1) за календарный день:

Под цифрами — 3 последних тикета с цветной точкой статуса (active/pending/closed/spam), темой #N · subject (truncate 60 симв, кликабельно → адрес поддержки/conversation/<id>), клиент + исполнитель + возраст. Кеш 5 мин по ключу dashboard_crm_24h.

Heat-map + Цели + Что нового

. Три узких карточки в одной строке.

Heat-map платежей 7×24 + KPI цели + Что нового

Heat-map платежей 7×24 (фиолетовая палитра) — день недели × час, цветовая интенсивность rgba(#6f42c1, alpha) от количества платежей. SQL:

SELECT EXTRACT(ISODOW FROM "OP_DATE"), EXTRACT(HOUR FROM "OP_DATE"), COUNT(*)
FROM finance_operations WHERE "OP_DATE" >= now() - 7 days AND "OP_SUMMA" > 0
GROUP BY 1, 2;

Hover увеличивает ячейку 1.4× с tooltip «N пл.». Помогает увидеть паттерн — например, пик платежей в Пн ~17:00.

KPI с целями — читает SystemSettings:

Без таргетов карточка скрыта. Цветной progress-bar (зелёный ≥100% / синий ≥70–80% / оранжевый ниже). Меняются через /admin/settings/system/?tab=params (категория dashboard) без релиза.

Что нового — 2 секции из dev_reports/:

Каждая запись с нумерацией 1–4, кликабельна → /admin/reports/dev/?file=<path>. Подкаталог Документация исключён.

Итого за период + Финансовая динамика (старые блоки)

Сохранены: 3-row «Итого за период» (Поступления/Списания/Баланс с дельтами) и линейный график «Финансовая динамика» с переключателями типа (Область/Линия/Столбцы) и периода (7д/14д/30д/90д/180д/1г). Кнопки в чистом стиле ( — фикс «серой губой» заливки .btn-outline-secondary).

Итого за период + Финансовая динамика — линейный график

Auto-refresh

Переключатель в шапке: Выкл / 30с / 1м / 2м / 5м / 10м. Состояние сохраняется в localStorage.dashboard_refresh_sec. Дефолт — выкл. Кнопка «Обновить сейчас» и таймер «Просмотрено: N сек/мин назад» рядом.