80 lines
6.2 KiB
Markdown
80 lines
6.2 KiB
Markdown
# История изменений
|
||
|
||
## 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`).
|