Разработка дашборда мониторинга автонаполнения 1С-Битрикс
Парсер работает, товары наполняются, но ответить на простые вопросы — «сколько товаров обновилось за сутки?», «какой процент ошибок?», «какой источник самый проблемный?» — невозможно без дашборда. Штатный журнал событий Битрикс для этого не подходит: он показывает сырые записи, а не агрегаты. Нужен отдельный экран с метриками, графиками и индикаторами здоровья.
Что выводим на дашборд
Дашборд отвечает на вопрос «всё ли в порядке?» за 5 секунд. Ключевые метрики:
Индикаторы состояния (верхняя полоса):
- Всего источников / из них активных / с ошибками.
- Товаров обработано за сутки: создано / обновлено / пропущено / ошибки.
- Время последнего успешного запуска по каждому источнику.
Графики (центральная область):
- Количество обработанных элементов по дням (stacked bar — created/updated/skipped/error).
- Время выполнения парсинга по источникам (line chart).
- Процент ошибок по источникам (bar chart).
Таблица источников (нижняя часть):
| Источник | Статус | Последний запуск | Элементов | Ошибок | Время | Следующий запуск |
|---|---|---|---|---|---|---|
| Поставщик А | OK | 14:30 | 12 450 | 3 (0.02%) | 8m 12s | 20:30 |
| Поставщик Б | ERROR | 12:00 | 0 | — | — | (остановлен) |
Цветовая схема: зелёный — последний запуск успешен и был менее 2 интервалов назад, жёлтый — ошибки >1%, красный — последний запуск failed или просрочен.
Источник данных
Дашборд строится на данных из таблицы задач парсера. Минимальная схема:
CREATE TABLE parser_task (
id SERIAL PRIMARY KEY,
source_id INT NOT NULL,
status VARCHAR(20),
started_at TIMESTAMP,
finished_at TIMESTAMP,
total_items INT DEFAULT 0,
created_items INT DEFAULT 0,
updated_items INT DEFAULT 0,
error_items INT DEFAULT 0
);
Агрегация выполняется SQL-запросами при загрузке дашборда. Для графика по дням:
SELECT DATE(started_at) AS day,
SUM(created_items) AS created,
SUM(updated_items) AS updated,
SUM(error_items) AS errors
FROM parser_task
WHERE started_at >= NOW() - INTERVAL '30 days'
GROUP BY DATE(started_at)
ORDER BY day;
На каталоге до 100 000 товаров и 10 источниках эти запросы выполняются мгновенно. Для крупных проектов добавьте материализованную таблицу parser_stats_daily, обновляемую агентом раз в час.
Реализация в административной панели
Дашборд реализуется как административная страница (/local/admin/parser_dashboard.php), подключённая через меню модуля. Для графиков используйте встроенную в Битрикс библиотеку amCharts (доступна в CAdminPage) или подключите Chart.js через $APPLICATION->AddHeadScript().
Структура страницы:
-
Виджеты-карточки вверху —
<div>с числовыми показателями, стилизованные черезadm-detail-content. Битрикс CSS предоставляет классыadm-info-message,adm-warning-message,adm-error-messageдля цветовой индикации. - Canvas-графики в центре — данные подгружаются AJAX-запросом к обработчику, который возвращает JSON с агрегатами.
- CAdminList внизу — стандартный список источников с кастомными колонками.
Автообновление
Дашборд должен обновляться без перезагрузки страницы. Добавьте setInterval с периодом 60 секунд, запрашивающий /local/admin/ajax/parser_stats.php. Обработчик возвращает JSON с текущим состоянием. На клиенте обновляем числа в карточках и перерисовываем графики.
Для индикации «парсер сейчас работает» используйте polling статуса из parser_task с status = 'running'. Показывайте анимированный спиннер рядом с названием источника.
Алерты прямо из дашборда
Добавьте кнопку «Настроить алерты» рядом с каждым источником. По клику — модальное окно с порогами: максимальный процент ошибок, максимальное время выполнения, максимальная задержка между запусками. Пороги хранятся в b_option модуля. Агент проверяет пороги и отправляет уведомление при превышении.
Сроки реализации
| Компонент | Время |
|---|---|
| SQL-агрегация + AJAX-обработчик | 1-2 дня |
| Карточки + таблица источников | 1-2 дня |
| Графики (Chart.js) | 2-3 дня |
| Автообновление + индикация running | 1 день |
| Настройка порогов алертов | 1-2 дня |
| Итого | 1-2 недели |







