From 87088a26f393645ef3fbabc39aea4f62cf8268e9 Mon Sep 17 00:00:00 2001 From: tian <11429339@qq.com> Date: Wed, 6 May 2026 14:42:18 +0800 Subject: [PATCH] feat: load persisted devices from DB on startup; offline devices still shown --- cmd/managerd/main.go | 6 +++--- internal/service/registry.go | 12 ++++++++++++ 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/cmd/managerd/main.go b/cmd/managerd/main.go index 032b220..4fe4833 100644 --- a/cmd/managerd/main.go +++ b/cmd/managerd/main.go @@ -31,13 +31,13 @@ func main() { // Initialize Services agentClient := service.NewAgentClient(cfg) - regSvc := service.NewRegistryService(cfg, agentClient) - discoSvc := service.NewDiscoveryService(cfg, regSvc) - regSvc.SetDiscovery(discoSvc) store, err := storage.OpenSQLite(cfg.DBPathOrDefault()) if err != nil { log.Fatalf("failed to open storage: %v", err) } + regSvc := service.NewRegistryService(cfg, agentClient, storage.NewDevicesRepo(store.DB())) + discoSvc := service.NewDiscoveryService(cfg, regSvc) + regSvc.SetDiscovery(discoSvc) defer store.Close() taskRepo := storage.NewTasksRepo(store.DB()) assetsRepo := storage.NewAssetsRepo(store.DB()) diff --git a/internal/service/registry.go b/internal/service/registry.go index da6d00c..419db61 100644 --- a/internal/service/registry.go +++ b/internal/service/registry.go @@ -35,6 +35,18 @@ func NewRegistryService(cfg *config.Config, agent *AgentClient, repo ...DeviceRe repo: deviceRepo, devices: make(map[string]*models.Device), } + // Load persisted devices from DB so offline devices still appear in the list + if deviceRepo != nil { + if saved, err := deviceRepo.List(); err == nil { + for _, dev := range saved { + if dev == nil || dev.DeviceID == "" { + continue + } + dev.Online = false // mark offline until discovery confirms + s.devices[dev.DeviceID] = dev + } + } + } go s.startPruning() if agent != nil { go s.startGraphPolling()