2026-04-06 09:37:33 +00:00

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_key PK, data JSONB с полями как в экспорте).
  • 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.

Description
No description provided
Readme 165 KiB
Languages
HTML 69.2%
CSS 24.3%
JavaScript 6.3%
Dockerfile 0.2%