Files
telemt-api/web
Denozordec ea2ecb44d2
Publish telemt-api gateway Docker image / test (push) Successful in 9s
Publish telemt-api gateway Docker image / build-and-push (push) Successful in 1m53s
Implement radar-telemt-dcs aggregation endpoint and UI integration
- Added new API route `/api/agg/radar-telemt-dcs` to aggregate DC status data from multiple upstreams, including metrics like coverage percentage and RTT.
- Implemented handler logic in `handlers.go` and corresponding tests in `handlers_test.go` to ensure correct data retrieval and response formatting.
- Updated the frontend to fetch and display radar DC data, enhancing the user interface with a new section for Telemt ME snapshots.
- Enhanced documentation in `AGGREGATE.md` and `README.md` to reflect the new functionality and usage details.
2026-04-12 13:07:14 +07:00
..

Telemt Panel (Web UI)

SvelteKit + shadcn-svelte. В production статика собирается и встраивается в образ шлюза (Dockerfile в корне репозитория): панель и API на одном порту (например http://127.0.0.1:8080/ — UI, /api/… — шлюз).

Основные разделы панели

  • / — обзор флота (KPI, активные IP, сводка по нодам)
  • /users, /users/[username] — пользователи и детали
  • /ips — unique IP + GeoIP карта
  • /incidents — triage-интерфейс инцидентов (ack/resolved/owner/note в localStorage)
  • /live — live snapshot (SSE, авто-reconnect)

Переменная PUBLIC_TELEMT_GATEWAY_URL

Значение Когда
(пусто) Тот же хост и порт, что у страницы (Docker-образ шлюза, npm run build в Dockerfile с ENV PUBLIC_TELEMT_GATEWAY_URL=)
http://127.0.0.1:8080 Локальная разработка: Vite на :5173, шлюз на :8080

Скопируйте .env.example в .env и при необходимости задайте URL.

Разработка (Vite отдельно от Go)

cd web
npm install
npm run dev

Откройте http://localhost:5173. В конфиге шлюза включите CORS для этого origin:

cors_allowed_origins:
  - "http://localhost:5173"

Сборка только фронта

npm run build

Артефакт — каталог build/, при сборке Docker-образа шлюза он копируется в internal/webui/static/ и попадает в бинарник через embed.

Типы из OpenAPI агрегатов

npm run gen:api

Источник: ../docs/AGGREGATE_OPENAPI.yaml.

URL-driven controls (операторский режим)

На ключевых страницах используются query-параметры:

  • aliases=node-a,node-b — фильтр по нодам
  • refresh=0|10..300 — auto-refresh (0 выключает polling)
  • include_links=0|1 — для /users
  • geo=0|1 — для /ips

Live-страница /live работает через SSE endpoint шлюза: /api/live/events.

Ограничения

  • Секреты upstream к Telemt задаются на шлюзе (authorization_env), не в браузере.
  • Для мутаций из другого origin шлюз отдаёт нужные заголовки CORS (в т.ч. методы POST, PATCH, DELETE).