From 4a0b84c2ed9cac2a57a252e94b01d53286679243 Mon Sep 17 00:00:00 2001 From: cursor-agent Date: Mon, 6 Apr 2026 07:49:20 +0000 Subject: [PATCH] =?UTF-8?q?Feature:=20=D0=B4=D0=B0=D1=88=D0=B1=D0=BE=D1=80?= =?UTF-8?q?=D0=B4=20=D0=B8=D0=BD=D1=86=D0=B8=D0=B4=D0=B5=D0=BD=D1=82=D0=BE?= =?UTF-8?q?=D0=B2=20ServiceDesk=20(=D1=81=D0=B2=D0=B5=D1=82=D0=BB=D0=B0?= =?UTF-8?q?=D1=8F=20=D1=82=D0=B5=D0=BC=D0=B0,=20Chart.js,=20Docker)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Made-with: Cursor --- .env.example | 2 + .gitignore | 1 + HISTORY.md | 11 + README.md | 61 ++ docker-compose.yml | 7 + index.html | 2103 ++++++++++++++++++++++++++++++++++++++++++++ sample-data.csv | 6 + 7 files changed, 2191 insertions(+) create mode 100644 .env.example create mode 100644 .gitignore create mode 100644 HISTORY.md create mode 100644 README.md create mode 100644 docker-compose.yml create mode 100644 index.html create mode 100644 sample-data.csv diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..62d961e --- /dev/null +++ b/.env.example @@ -0,0 +1,2 @@ +# Порт HTTP для контейнера nginx (статическая раздача index.html) +PORT=8080 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..4c49bd7 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.env diff --git a/HISTORY.md b/HISTORY.md new file mode 100644 index 0000000..c6c75dd --- /dev/null +++ b/HISTORY.md @@ -0,0 +1,11 @@ +# История изменений + +## 2026-04-06 12:00 UTC – Начальная версия дашборда + +**Проблема:** Нужен локальный мониторинг инцидентов ServiceDesk без сервера, в едином стиле «ситуационный центр». + +**Решение:** Добавлен self-contained `index.html` (Chart.js, PapaParse, светлая тема), загрузка CSV/JSON, KPI, фильтры, вкладки, Docker с nginx для раздачи статики. + +**Изменения:** Создан проект `/opt/omc-servicedesk-monitor`: `index.html`, `docker-compose.yml`, `.env.example`, `README.md`. + +**Проверка:** Локальное открытие `index.html`; загрузка `sample-data.csv`; `docker compose up` — статика через nginx на порту из `.env` (по умолчанию 8080). diff --git a/README.md b/README.md new file mode 100644 index 0000000..2af7431 --- /dev/null +++ b/README.md @@ -0,0 +1,61 @@ +# OMC ServiceDesk Monitor + +Одностраничный дашборд для мониторинга инцидентов ServiceDesk: KPI, диаграммы, таблица и разбивка по сотрудникам. Работает в браузере без бэкенда — данные загружаются из CSV или JSON. + +## Запуск + +### Локально + +Откройте в браузере файл [`index.html`](index.html) (двойной клик или `file://`). Для быстрой проверки можно загрузить [`sample-data.csv`](sample-data.csv). + +### Docker + +```bash +cd /opt/omc-servicedesk-monitor +cp .env.example .env # при необходимости измените PORT +docker compose up -d +``` + +Страница: `http://localhost:${PORT}` (по умолчанию 8080). + +## Формат данных + +### CSV + +Разделитель — как в экспорте (PapaParse с `header: true`). Кодировка UTF-8. Заголовки колонок: + +| Колонка | Описание | +|---------|----------| +| Название | Номер заявки (число) | +| Статус | Код статуса (см. бейджи в интерфейсе) | +| Ответственный (команда) | Команда | +| Ответственный (сотрудник) | Исполнитель | +| Инициатор заявки | Поиск | +| Услуга | Поиск | +| Дата создания | `DD.MM.YYYY HH:MM` | +| Регламентное время решения запроса | SLA, `DD.MM.YYYY HH:MM` | +| Дата решения | Когда решено | +| Кем решен (сотрудник) | Непустое значение трактуется как закрытый инцидент | +| Уникальный идентификатор | UUID для ссылки в ServiceDesk | + +### JSON + +Массив объектов с теми же ключами полей, что и в CSV. + +## Недельная динамика + +График «хронология по неделям» и таблица под ним заполняются константой `WEEK_STATS` внутри `index.html` и **не** зависят от загружаемого файла. Обновляйте массив вручную при необходимости. + +## Стек + +- Chart.js (CDN) +- PapaParse 5.4.1 (CDN) +- Шрифты: Barlow Condensed, IBM Plex Sans, IBM Plex Mono (Google Fonts) + +## Логи и бэкапы + +Статический файл; логи приложения отсутствуют. Резервное копирование — копия каталога проекта или репозитория Git. + +## История изменений + +См. [HISTORY.md](HISTORY.md). diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..c992ddc --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,7 @@ +services: + web: + image: nginx:alpine + ports: + - "${PORT:-8080}:80" + volumes: + - ./:/usr/share/nginx/html:ro diff --git a/index.html b/index.html new file mode 100644 index 0000000..a05e905 --- /dev/null +++ b/index.html @@ -0,0 +1,2103 @@ + + + + + + ServiceDesk Monitor — OMC + + + + + + + + +
+
+
+ +
+
ServiceDesk Monitor
+
OMC · Ситуационный центр
+
+
+
+ Статус + АКТИВЕН +
+
+ Записей + +
+
+ Контрольная дата + + + + +
+
+ Дата системы + +
+
+ +
+ Подсистема + Мониторинг инцидентов + + Формат загрузки: CSV · JSON +
+ +
+
+ Источник данных + + Файл не выбран — CSV или JSON с колонками экспорта ServiceDesk + +
+ +
+
+
+ +
+
+
+
+
+
+
+
+
Всего в выборке
+
+
+
+
+
+
+
+
+
+
+
+
Закрыто
+
+
+
+
+
+
+
+
+
+
+
+
В работе
+
+
+
+
+
+
+
+
+
+
+
+
Просрочено
+
+
+
!
+
+
+
+
+ +
+ Фильтры +
+ +
+
+ +
+
+
+
+ +
+
+
+
+ +
+
+
+
+ +
+ + + +
+ +
+
+
+
+ + Статусы открытых +
+
+
+
+
+
+
+
+ + Команды (топ-8) +
+
+
+
+
+
+
+
+
+ + Недельная динамика +
+
+
+ Всего + Закрыто + В работе + Просрочено +
+
+
Детализация по неделям
+ + + + + + + + + + + + + + +
НеделяДата отчётаВсегоЗакрытоВ работеПросрочено% Закрыто% Просрочено
+
+
+
+ +
+
+
+ + + + + + + + + + + + + + +
Статус Команда Исполнитель Дата создания Регл. срок Дата решения Кем решён
+
+
+
+ +
+
+
+
+
+
+ + + + diff --git a/sample-data.csv b/sample-data.csv new file mode 100644 index 0000000..1c75b1d --- /dev/null +++ b/sample-data.csv @@ -0,0 +1,6 @@ +Название,Статус,Ответственный (команда),Ответственный (сотрудник),Инициатор заявки,Услуга,Дата создания,Регламентное время решения запроса,Дата решения,Кем решен (сотрудник),Уникальный идентификатор +1001,inprogress,Команда А,Иванов И.И.,user1@corp.ru,Сеть,01.04.2026 09:00,05.04.2026 18:00,,,a1111111-1111-1111-1111-111111111111 +1002,waiting,Команда Б,Петров П.П.,user2@corp.ru,Почта,28.03.2026 14:00,02.04.2026 12:00,,,b2222222-2222-2222-2222-222222222222 +1003,resolved,Команда А,Иванов И.И.,user3@corp.ru,Сеть,10.03.2026 11:00,15.03.2026 18:00,16.03.2026 10:00,Иванов И.И.,c3333333-3333-3333-3333-333333333333 +1004,registered,Команда В,Сидоров С.С.,user4@corp.ru,Доступ,30.03.2026 08:00,04.04.2026 09:00,,,d4444444-4444-4444-4444-444444444444 +1005,inprogress,Команда Б,Петров П.П.,user5@corp.ru,Почта,25.03.2026 16:00,01.04.2026 10:00,,,e5555555-5555-5555-5555-555555555555