6.2 KiB
История изменений
2026-04-06 09:37 UTC – Загрузка из БД при пустой таблице
Проблема: При открытии главной страницы данные из PostgreSQL подставлялись только если GET /api/incidents возвращал непустой rows; при пустой базе processData не вызывался, дашборд оставался скрытым до первой загрузки файла.
Решение: После успешного ответа API всегда вызывается processData(rows) (в том числе для пустого массива); показ индикатора «Загрузка данных из базы…», отдельные сообщения для непустой и пустой выборки, вывод ошибки при недоступности API.
Изменения: index.html (tryLoadFromDb).
Проверка: Открытие главной при пустой БД — видны KPI/диаграммы в нулевом состоянии и сообщение о пустой базе; при наличии записей — прежнее поведение.
2026-04-06 18:00 UTC – Многостраничный UI: загрузка на data.html
Проблема: Источник данных и кнопка загрузки должны быть на отдельной странице; на ней же — сводка по числу объектов в БД и по последней загрузке.
Решение: Вынесены стили в css/dashboard.css; добавлены data.html (загрузка, блоки статистики, upload-core.js) и навигация в шапке между index.html и data.html. С главной убраны PapaParse/XLSX и логика выбора файла.
Проверка: Открытие /data.html, загрузка sample-data.csv, проверка счётчиков и переход на мониторинг.
2026-04-06 17:00 UTC – Проверка docker compose api и Nginx для /api/
Проблема: Запросы к https://sd.gen7x.ru/api/health отдавали 404: регекс статики ~* \.(json|…)$ перехватывал URI раньше префикса /api/.
Решение: В sd.gen7x.ru.conf для API использован location ^~ /api/. Проверены docker compose up -d api, curl на :3910 и через HTTPS.
Изменения: Nginx; README — блок «Проверка после развёртывания»; /root/docs/docs/history.md.
2026-04-06 16:00 UTC – Сохранение загрузки в PostgreSQL (ключ «Название»)
Проблема: Нужно хранить выгрузки в БД: по ключу «Название» обновлять запись или вставлять новую.
Решение: Добавлен API на Node.js (Express + pg), таблица incidents (number_key PK, data JSONB). После разбора файла фронт вызывает POST /api/incidents/sync; при открытии — GET /api/incidents. Nginx на sd.gen7x.ru проксирует /api/ на 127.0.0.1:3910. Контейнер omc-sd-api в сети docker_gen7x_network, БД omc_sd_monitor в существующем Postgres.
Изменения: каталог server/, docker-compose.yml (сервис api), .env.example, index.html, README.md.
Проверка: docker compose up -d api, GET /api/health, загрузка sample-data.csv на https://sd.gen7x.ru/.
2026-04-06 14:00 UTC – Загрузка из Excel
Проблема: Нужна загрузка выгрузки в формате Excel при той же структуре колонок, что у CSV/JSON.
Решение: Подключён SheetJS (xlsx с CDN), разбор первого листа через sheet_to_json; расширены accept у поля файла и подсказки в шапке.
Изменения: index.html (скрипт, parseExcelToRows, ветка handleFile для .xlsx/.xls); README.
Проверка: Загрузка таблицы, сохранённой из Excel с заголовками как в CSV.
2026-04-06 08:00 UTC – Публикация на sd.gen7x.ru
Проблема: Нужен доступ к дашборду по постоянному URL извне.
Решение: Включён виртуальный хост Nginx на хосте: sd.gen7x.ru → каталог проекта /opt/omc-servicedesk-monitor, HTTPS, те же Origin SSL, что у остальных поддоменов gen7x.ru.
Изменения: Файл /opt/gen7x/nginx/conf.d/sd.gen7x.ru.conf; обновлён README.
Проверка: nginx -t, systemctl reload nginx; локально curl с --resolve к 127.0.0.1 — ответ 200. В DNS Cloudflare для sd.gen7x.ru должна быть запись на сервер.
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). Репозиторий создан в Gitea, ветка main запушена (git@git.gen7x.ru:cursor-agent/omc-servicedesk-monitor.git).