namespace ZB.MOM.WW.ScadaBridge.HealthMonitoring;
public class HealthMonitoringOptions
{
/// Interval at which sites emit health reports to the central cluster.
public TimeSpan ReportInterval { get; set; } = TimeSpan.FromSeconds(30);
/// Duration of silence after which a site is classified as offline.
public TimeSpan OfflineTimeout { get; set; } = TimeSpan.FromMinutes(1);
///
/// Offline timeout applied to the synthetic "central" site only. Real sites
/// emit frequent heartbeats that keep LastHeartbeatAt fresh, so the
/// normal only fires on genuine total loss. The
/// "central" self-report has no heartbeat source — its only signal is the
/// 30s , so a single skipped/late
/// self-report (leader GC pause, brief stall, mid-failover before the new
/// leader's loop spins up) would flap it offline under the 60s site timeout.
/// A longer central grace gives the equivalent of "one missed report" that
/// the design doc grants real sites. Default: 3x the report interval.
///
public TimeSpan CentralOfflineTimeout { get; set; } = TimeSpan.FromMinutes(3);
}