UNPKG

@sailboat-computer/health-monitoring

Version:

Comprehensive health monitoring system for sailboat computer v3 with marine-specific health checks

124 lines 4.92 kB
"use strict"; /** * GPS Recovery Policy * Defines recovery policies for GPS health issues */ Object.defineProperty(exports, "__esModule", { value: true }); exports.registerGPSRecoveryPolicies = exports.createGPSCriticalRecoveryPolicy = exports.createGPSPositionJumpRecoveryPolicy = exports.createGPSSatelliteRecoveryPolicy = void 0; const types_1 = require("../../types"); /** * Create a GPS recovery policy for poor satellite reception */ function createGPSSatelliteRecoveryPolicy() { return { policyId: 'gps-satellite-recovery', name: 'GPS Satellite Reception Recovery', checkId: 'gps-health', marineSystemType: types_1.MarineSystemType.NAVIGATION, triggerStatus: types_1.HealthStatus.UNHEALTHY, triggerScore: 0.4, // Trigger when health score drops below 0.4 consecutiveFailures: 2, // Require 2 consecutive failures before triggering actions: [ 'gps-recalibration', // First try recalibration 'gps-failover' // Then try failover to backup GPS ], stopOnSuccess: true, // Stop after first successful action enabled: true, cooldownPeriod: 300000, // 5 minutes between recovery attempts maxAttempts: 3, attemptWindow: 3600000, // 1 hour marineSettings: { activeContexts: [ types_1.OperationalContext.SAILING, types_1.OperationalContext.MOTORING, types_1.OperationalContext.ANCHORED, types_1.OperationalContext.DOCKED ], activeInRoughSeas: true, powerAware: true, safetyImpact: true } }; } exports.createGPSSatelliteRecoveryPolicy = createGPSSatelliteRecoveryPolicy; /** * Create a GPS recovery policy for position jumps */ function createGPSPositionJumpRecoveryPolicy() { return { policyId: 'gps-position-jump-recovery', name: 'GPS Position Jump Recovery', checkId: 'gps-health', marineSystemType: types_1.MarineSystemType.NAVIGATION, triggerStatus: types_1.HealthStatus.DEGRADED, triggerScore: 0.6, // Trigger when health score drops below 0.6 consecutiveFailures: 1, // Immediate action on position jumps actions: [ 'gps-recalibration', 'gps-failover' ], stopOnSuccess: true, enabled: true, cooldownPeriod: 60000, // 1 minute between recovery attempts maxAttempts: 5, attemptWindow: 1800000, // 30 minutes marineSettings: { activeContexts: [ types_1.OperationalContext.SAILING, types_1.OperationalContext.MOTORING, types_1.OperationalContext.ANCHORED ], activeInRoughSeas: true, powerAware: false, // Position jumps are critical enough to ignore power status safetyImpact: true } }; } exports.createGPSPositionJumpRecoveryPolicy = createGPSPositionJumpRecoveryPolicy; /** * Create a GPS recovery policy for critical failures */ function createGPSCriticalRecoveryPolicy() { return { policyId: 'gps-critical-recovery', name: 'GPS Critical Failure Recovery', checkId: 'gps-health', marineSystemType: types_1.MarineSystemType.NAVIGATION, triggerStatus: types_1.HealthStatus.CRITICAL, triggerScore: 0.2, // Very low health score consecutiveFailures: 1, // Immediate action on critical failures actions: [ 'gps-failover', // Try failover first for critical issues 'gps-recalibration', // Then try recalibration 'gps-reset' // Last resort: full reset ], stopOnSuccess: true, enabled: true, cooldownPeriod: 30000, // 30 seconds between recovery attempts maxAttempts: 10, attemptWindow: 600000, // 10 minutes marineSettings: { activeContexts: [ types_1.OperationalContext.SAILING, types_1.OperationalContext.MOTORING, types_1.OperationalContext.ANCHORED, types_1.OperationalContext.DOCKED, types_1.OperationalContext.EMERGENCY ], activeInRoughSeas: true, powerAware: false, // Critical GPS failures must be addressed regardless of power safetyImpact: true } }; } exports.createGPSCriticalRecoveryPolicy = createGPSCriticalRecoveryPolicy; /** * Register all GPS recovery policies with the recovery orchestrator */ function registerGPSRecoveryPolicies(registerPolicy) { registerPolicy(createGPSSatelliteRecoveryPolicy()); registerPolicy(createGPSPositionJumpRecoveryPolicy()); registerPolicy(createGPSCriticalRecoveryPolicy()); } exports.registerGPSRecoveryPolicies = registerGPSRecoveryPolicies; //# sourceMappingURL=GPSRecoveryPolicy.js.map