Files
omc-servicedesk-monitor/README.md

87 lines
4.2 KiB
Markdown
Raw 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`).
Дашборд инцидентов 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):
```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). Без 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/`).
## Логи и бэкапы
Логи API: `docker logs omc-sd-api`. Данные инцидентов — в PostgreSQL (общий бэкап кластера). Статика — файлы в каталоге проекта.
## История изменений
См. [HISTORY.md](HISTORY.md).