108 lines
5.2 KiB
Markdown
108 lines
5.2 KiB
Markdown
# 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`](index.html) | Мониторинг: KPI, фильтры, вкладки (графики, таблица, сотрудники). Данные из БД при открытии. |
|
||
| [`data.html`](data.html) | Источник данных: загрузка CSV/JSON/Excel, счётчики «объектов в базе», последней загрузки, пропущенных строк. |
|
||
|
||
Общие стили: [`css/dashboard.css`](css/dashboard.css). Разбор файла и API: [`js/upload-core.js`](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):
|
||
|
||
```sql
|
||
CREATE DATABASE omc_sd_monitor;
|
||
```
|
||
|
||
В `.env` задайте `DATABASE_URL` (см. `.env.example`). Спецсимволы в пароле — в URL-кодировании (например `/` → `%2F`).
|
||
|
||
Запуск только API на сервере:
|
||
|
||
```bash
|
||
cd /opt/omc-servicedesk-monitor
|
||
# .env с DATABASE_URL
|
||
docker compose up -d api
|
||
```
|
||
|
||
## Запуск
|
||
|
||
### Локально (только UI)
|
||
|
||
Откройте [`index.html`](index.html) (мониторинг) или [`data.html`](data.html) (загрузка). Без API сохранение в БД на странице данных недоступно. Пример файла: [`sample-data.csv`](sample-data.csv).
|
||
|
||
### Docker (статика + опционально API)
|
||
|
||
```bash
|
||
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/`).
|
||
|
||
## Проверка после развёртывания
|
||
|
||
```bash
|
||
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](HISTORY.md).
|