/** * Row health: operational | degraded | down * @module classify */ /** * @param {{ * min?: number, * available?: number, * running?: number, * paused?: number, * managed?: boolean, * instances?: Array<{ pid?: number|null, paused?: boolean, healthy?: boolean }> * }} sv * @returns {'operational'|'degraded'|'down'} */ export function classifyService(sv) { const min = sv.min ?? 0; const available = sv.available ?? 0; const running = sv.running ?? 0; const paused = sv.paused ?? 0; const inst = sv.instances || []; const unhealthy = inst.filter((i) => i.pid && i.healthy === false && !i.paused).length; if (min === 0 && running === 0) return 'operational'; if (available === 0 && min > 0) return 'down'; if (available >= min && paused === 0 && unhealthy === 0) return 'operational'; return 'degraded'; }