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>
21 lines
704 B
TypeScript
21 lines
704 B
TypeScript
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,
|
||
},
|
||
},
|
||
},
|
||
})
|