Feature: дашборд инцидентов ServiceDesk (светлая тема, Chart.js, Docker)
Made-with: Cursor
This commit is contained in:
2
.env.example
Normal file
2
.env.example
Normal file
@@ -0,0 +1,2 @@
|
||||
# Порт HTTP для контейнера nginx (статическая раздача index.html)
|
||||
PORT=8080
|
||||
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
||||
.env
|
||||
11
HISTORY.md
Normal file
11
HISTORY.md
Normal file
@@ -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).
|
||||
61
README.md
Normal file
61
README.md
Normal file
@@ -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).
|
||||
7
docker-compose.yml
Normal file
7
docker-compose.yml
Normal file
@@ -0,0 +1,7 @@
|
||||
services:
|
||||
web:
|
||||
image: nginx:alpine
|
||||
ports:
|
||||
- "${PORT:-8080}:80"
|
||||
volumes:
|
||||
- ./:/usr/share/nginx/html:ro
|
||||
2103
index.html
Normal file
2103
index.html
Normal file
File diff suppressed because it is too large
Load Diff
6
sample-data.csv
Normal file
6
sample-data.csv
Normal file
@@ -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
|
||||
|
Reference in New Issue
Block a user