Files
omc-servicedesk-monitor/README.md

108 lines
5.2 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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).