diff --git a/electron/bridges/inspection/index.cjs b/electron/bridges/inspection/index.cjs index de755a2..c0a117b 100644 --- a/electron/bridges/inspection/index.cjs +++ b/electron/bridges/inspection/index.cjs @@ -2018,19 +2018,15 @@ function registerInspectionHandlers(ipcMain, options) { _scheduler._hostInfo = hostInfo; console.log("[Inspection] 更新 hostConfigs:", Object.keys(_hostConfigs || {}).length, "台设备"); } - // start() 幂等:已 running 时直接返回;这里调 scanAllNow 让新 hostConfigs 立即生效, - // 不用等下一个 30 秒 tick + // start() 幂等:已 running 时直接返回。 + // 不再每次 start 都 scanAllNow —— renderer 可能在多个页面 mount 时反复调 start + // (MonitoringPage、ReportPage、useReportAutoScheduler 各调一次),每次都 scanAllNow + // 会导致短时间内同一批设备被巡检 N 次。 + // InspectionScheduler 本身有 30s tick,到点自然会把到期设备加入队列。 const wasRunning = _scheduler.isRunning(); _scheduler.start(); - if (wasRunning && Object.keys(_hostConfigs || {}).length > 0) { - // 已在跑 → 立即触发一次 scanAllNow,把新 hostConfigs 对应的设备加入队列 - setImmediate(() => { - try { - _scheduler.scanAllNow(); - } catch (e) { - console.log("[Inspection] 触发立即巡检失败:", e.message); - } - }); + if (!wasRunning) { + console.log("[Inspection] scheduler 已启动,首次 hostConfigs=", Object.keys(_hostConfigs || {}).length); } return _scheduler.getStatus(); });