Розробка дашборда мониторингу автозаповнення 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 тижні |







