// Transitions d'etat retrouvees dans l'historique HA (06/10/2026). // Voir ALLERS_RETOURS_SUIVIS dans historise-evcs.mjs : un aller-retour plus // bref qu'un cycle du service ne se voit que par le `last_changed` de HA. const txt = (s) => (s ?? '').toString().trim(); export const ETATS_ABSENTS = new Set(['', 'unavailable', 'unknown']); // Transitions reelles entre `depuisIso` (exclu) et `jusquaIso` (inclus), en // partant de l'etat `depart`. Les lectures indisponibles ne comptent pas. // Pure (testee) : `serie` = reponse de /api/history/period pour une entite. export function transitionsDansSerie(serie, depart, depuisIso, jusquaIso) { const depuis = Date.parse(depuisIso), jusqua = Date.parse(jusquaIso); const res = []; let courant = depart; for (const e of serie || []) { const t = Date.parse(e.last_changed); if (!(t > depuis && t <= jusqua)) continue; const etat = txt(e.state); if (ETATS_ABSENTS.has(etat) || etat === courant) continue; res.push({ avant: courant, apres: etat, a: e.last_changed }); courant = etat; } return res; }