Files
omc-servicedesk-monitor/README.md

4.2 KiB
Raw Blame History

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).

Дашборд инцидентов ServiceDesk: KPI, диаграммы, таблица, разбивка по сотрудникам. Загрузка файла (CSV, JSON, Excel) сохраняется в 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. Без 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/).

Логи и бэкапы

Логи API: docker logs omc-sd-api. Данные инцидентов — в PostgreSQL (общий бэкап кластера). Статика — файлы в каталоге проекта.

История изменений

См. HISTORY.md.