Netpulse_SasS/web/vite.config.ts
zotac 3de5643b98 Етап 4: фронтенд — мапа мережі в браузері
React Flow поверх наявного API: вузли фарбуються статусом, ребра
кольором із порогів, точка на ребрі біжить зі швидкістю, оберненою до
завантаження каналу. WebSocket дає живі статуси й util, реконект
повертає підписку сам.

Робота з живим UI знайшла дві вади:

1. Ревізія мапи росла від самих кліків — React Flow віддає
   onNodeDragStop на будь-яке натискання, і кожен клік писав порожню
   ревізію, змушуючи інші відкриті полотна перечитуватись.
2. Після збереження хук оновлював лише номер ревізії, тож наступна
   подія device.status відкидала щойно перетягнутий вузол назад.

Перевірено в браузері проти повного стека зі справжнім snmpd: два
зелені вузли з живим RTT, ребро eth0 з util і capacity 10 Гбіт/с,
індикатор "наживо", кнопка автопобудови з topo.links.

Драг через автоматизацію відтворити не вдалося — синтетичні події не
запускають d3-drag; цей шлях покритий тестами сервера.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-14 16:28:37 +03:00

21 lines
704 B
TypeScript
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.

import { defineConfig } from 'vite'
import react from '@vitejs/plugin-react'
import tailwindcss from '@tailwindcss/vite'
export default defineConfig({
plugins: [react(), tailwindcss()],
server: {
// Стенд і браузер розробника — різні машини, тому не 127.0.0.1.
host: '0.0.0.0',
port: 5173,
// Проксі знімає питання CORS і робить адресу API однаковою
// в розробці й за зворотним проксі у проді.
proxy: {
'/api': {
target: process.env.NETPULSE_API ?? 'http://127.0.0.1:8080',
changeOrigin: true,
ws: true,
},
},
},
})