OMC ServiceDesk Monitor
Репозиторий: https://git.gen7x.ru/cursor-agent/omc-servicedesk-monitor
Публичный URL (прод): https://sd.gen7x.ru/ — статика и API через Nginx (/opt/gen7x/nginx/conf.d/sd.gen7x.ru.conf).
Многостраничный интерфейс:
| Страница | Назначение |
|---|---|
index.html |
Мониторинг: KPI, фильтры, вкладки (графики, таблица, сотрудники). Данные из БД при открытии. |
data.html |
Источник данных: загрузка CSV/JSON/Excel, счётчики «объектов в базе», последней загрузки, пропущенных строк. |
Общие стили: css/dashboard.css. Разбор файла и API: js/upload-core.js.
Загрузка файла сохраняется в PostgreSQL по ключу «Название» (обновление / вставка). На главной данные подгружаются из базы при открытии (если API доступен).
База данных и API
- БД: PostgreSQL, база
omc_sd_monitor, таблицаincidents(number_keyPK,dataJSONB с полями как в экспорте). - API (Node.js, Express):
GET /api/incidents,POST /api/incidents/sync,GET /api/health. - Контейнер
omc-sd-apiв Docker-сетиdocker_gen7x_network, порт на хосте127.0.0.1:3910; Nginx проксируетhttps://sd.gen7x.ru/api/→ этот порт.
Создание базы (один раз, от суперпользователя Postgres):
CREATE DATABASE omc_sd_monitor;
В .env задайте DATABASE_URL (см. .env.example). Спецсимволы в пароле — в URL-кодировании (например / → %2F).
Запуск только API на сервере:
cd /opt/omc-servicedesk-monitor
# .env с DATABASE_URL
docker compose up -d api
Запуск
Локально (только UI)
Откройте index.html (мониторинг) или data.html (загрузка). Без API сохранение в БД на странице данных недоступно. Пример файла: sample-data.csv.
Docker (статика + опционально API)
cd /opt/omc-servicedesk-monitor
cp .env.example .env # задать DATABASE_URL для API
docker compose up -d # web на PORT, api на 3910
Страница статики: http://localhost:${PORT} (по умолчанию 8080).
Формат данных
CSV
Разделитель — как в экспорте (PapaParse с header: true). Кодировка UTF-8. Заголовки колонок:
| Колонка | Описание |
|---|---|
| Название | Номер заявки (число), ключ в БД |
| Статус | Код статуса (см. бейджи в интерфейсе) |
| Ответственный (команда) | Команда |
| Ответственный (сотрудник) | Исполнитель |
| Инициатор заявки | Поиск |
| Услуга | Поиск |
| Дата создания | DD.MM.YYYY HH:MM |
| Регламентное время решения запроса | SLA, DD.MM.YYYY HH:MM |
| Дата решения | Когда решено |
| Кем решен (сотрудник) | Непустое значение трактуется как закрытый инцидент |
| Уникальный идентификатор | UUID для ссылки в ServiceDesk |
JSON / Excel
Те же поля (русские названия колонок). Excel: первый лист, первая строка — заголовки.
Недельная динамика
График по неделям и таблица под ним задаются константой WEEK_STATS в index.html, не из БД.
Стек
- Фронт: Chart.js, PapaParse, SheetJS xlsx, шрифты Google Fonts.
- Бэк: Node 20,
express,pg(каталогserver/).
Проверка после развёртывания
cd /opt/omc-servicedesk-monitor
cp .env.example .env # заполнить DATABASE_URL
docker compose up -d api
curl -sS http://127.0.0.1:3910/api/health
curl -skS --resolve 'sd.gen7x.ru:443:127.0.0.1' 'https://sd.gen7x.ru/api/health'
Ожидается JSON {"ok":true,...}. На проде Nginx для sd.gen7x.ru должен быть location ^~ /api/ (с модификатором ^~), иначе запросы к /api/… могут перехватываться регексом статических расширений.
Логи и бэкапы
Логи API: docker logs omc-sd-api. Данные инцидентов — в PostgreSQL (общий бэкап кластера). Статика — файлы в каталоге проекта.
История изменений
См. HISTORY.md.