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) + } } // 构建边(基于邻居信息)