From 219ca7450c9f42afc643885c8df08129dfac28be Mon Sep 17 00:00:00 2001 From: shats Date: Thu, 12 Feb 2026 12:09:58 +0700 Subject: [PATCH] feat(FilterManager): enhance server metadata retrieval to support short names for improved matching --- frontend/src/FilterManager.jsx | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/frontend/src/FilterManager.jsx b/frontend/src/FilterManager.jsx index af981b0..1a05db0 100644 --- a/frontend/src/FilterManager.jsx +++ b/frontend/src/FilterManager.jsx @@ -786,20 +786,26 @@ function FilterManager() { // Единая точка входа для пингов (кеш общий с Easy Switch) const { pingMap, requestPings } = usePing(); - // Получить metadata сервера из inventory по имени (dns/hostName/ip) + // Получить metadata сервера из inventory по имени (dns/hostName/ip или короткое имя типа "ihor") const getInventoryMetaForServer = (serverName) => { if (!serverName) return null; - return inventoryServers.find((srv) => - String(srv.dns || '').trim() === serverName || - String(srv.hostName || '').trim() === serverName || - String(srv.ip || '').trim() === serverName - ); + const name = String(serverName).trim(); + return inventoryServers.find((srv) => { + const dns = String(srv.dns || '').trim(); + const hostName = String(srv.hostName || '').trim(); + const ip = String(srv.ip || '').trim(); + if (dns === name || hostName === name || ip === name) return true; + // На странице Фильтров selectedServer.name — короткое имя (первая часть dns), например "ihor" + if (dns && dns.split('.')[0] === name) return true; + return false; + }); }; // Получить routerId для MikroTik (id/dns/ip), как на странице Easy Switch const getRouterIdForServer = (server) => { if (!server) return null; - const meta = getInventoryMetaForServer(server.name); + // Сначала ищем по полному имени (fullName/dns), затем по короткому (name) + const meta = getInventoryMetaForServer(server.fullName || server.dns || server.name) || getInventoryMetaForServer(server.name); if (!meta) return null; return meta.id || meta.dns || meta.ip || null; }; @@ -808,8 +814,8 @@ function FilterManager() { const selectedServerGateways = (() => { if (!selectedServer) return []; - // Ищем соответствующий сервер в inventoryServers по имени - const matchedServer = getInventoryMetaForServer(selectedServer.name); + // Ищем соответствующий сервер в inventory (по полному или короткому имени) + const matchedServer = getInventoryMetaForServer(selectedServer.fullName || selectedServer.dns || selectedServer.name) || getInventoryMetaForServer(selectedServer.name); const serverDns = matchedServer?.dns || matchedServer?.hostName || selectedServer.name || ''; const serverId = matchedServer?.id || matchedServer?.ip || selectedServer.id || selectedServer.name || '';