From e5e624d72e090daed948eb973ad75de08afbe380 Mon Sep 17 00:00:00 2001 From: Your Name Date: Sun, 26 Apr 2026 00:33:42 +0800 Subject: [PATCH] =?UTF-8?q?Fix:=20=E6=B7=BB=E5=8A=A0=E8=AF=A6=E7=BB=86?= =?UTF-8?q?=E8=B0=83=E8=AF=95=E6=97=A5=E5=BF=97=E8=AF=8A=E6=96=AD=E6=8B=93?= =?UTF-8?q?=E6=89=91=E8=BF=9E=E7=BA=BF=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在拓扑构建时输出每个设备的邻居详情 - 显示邻居的RemoteIP、RemoteDevice、接口信息 - 从数据库加载设备后重建拓扑确保连线正确 - 帮助诊断为什么邻居无法自动连线 --- cmd/main.go | 7 +++++++ internal/topology/builder.go | 9 +++++++++ 2 files changed, 16 insertions(+) diff --git a/cmd/main.go b/cmd/main.go index 09ba1b5..37531e4 100644 --- a/cmd/main.go +++ b/cmd/main.go @@ -265,6 +265,13 @@ func (app *App) handleGetDevices(w http.ResponseWriter, r *http.Request) { log.Printf("Error: failed to get devices from database: %v", err) // 降级到 builder获取 devices = app.builder.GetDevices() + } else { + // 重新构建设备到builder中,确保拓扑正确 + app.builder = topology.NewBuilder() + for _, dev := range devices { + app.builder.AddDevice(dev) + } + log.Printf("Rebuilt topology with %d devices from database", len(devices)) } log.Printf("Returning %d devices from storage", len(devices)) } else { diff --git a/internal/topology/builder.go b/internal/topology/builder.go index 7b0114b..8cff1da 100644 --- a/internal/topology/builder.go +++ b/internal/topology/builder.go @@ -50,6 +50,15 @@ func (b *Builder) Build() models.TopologyGraph { } nodeMap[device.IP] = node graph.Nodes = append(graph.Nodes, node) + + // 调试信息 + fmt.Printf("Node added: %s (%s) with %d neighbors\n", + device.IP, device.Type, len(device.Neighbors)) + for i, neighbor := range device.Neighbors { + fmt.Printf(" Neighbor %d: RemoteIP=%s, RemoteDevice=%s, LocalIf=%s, RemoteIf=%s\n", + i+1, neighbor.RemoteIP, neighbor.RemoteDevice, + neighbor.LocalInterface, neighbor.RemoteInterface) + } } // 构建边(基于邻居信息)