From b5ac62ba1eba8db6dfa488dd32b71a71ea90f6d2 Mon Sep 17 00:00:00 2001 From: Tallagrand Thierry Date: Mon, 14 Sep 2026 21:41:40 +0200 Subject: [PATCH] Le proprietaire est un canal de confirmation, pas seulement WhatsApp MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Il vient de me dire directement quel vehicule est branche. C est une confirmation humaine au meme titre qu une reponse WhatsApp, mais le code ne reconnaissait que ce canal-la et aurait marque sa parole « non confirmee ». Les canaux humains sont desormais enumeres explicitement — whatsapp et proprietaire — plutot que teste contre une seule valeur. Enumeres, et non inverses : un canal inconnu ne doit pas valoir confirmation par defaut. `regle-puissance` n y est pas et n y sera jamais, c est une deduction. Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_01GwpFpy2aQ2rJok6tNQSbVj --- tools/historise-evcs.mjs | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/tools/historise-evcs.mjs b/tools/historise-evcs.mjs index 56517f2..63bed2c 100644 --- a/tools/historise-evcs.mjs +++ b/tools/historise-evcs.mjs @@ -1054,6 +1054,10 @@ async function ingererCellules(client) { // Un label household venu de ce chemin est donc un bug par construction : on // REFUSE et on signale, on n'applique pas. const HOUSEHOLD = new Set(['VW', 'JEEP']); +// Les canaux par lesquels un HUMAIN peut confirmer. Enumeres explicitement : +// un canal inconnu ne doit pas valoir confirmation par defaut. `regle-puissance` +// n'y est pas et n'y sera jamais — c'est une deduction, pas une parole. +const CANAUX_HUMAINS = new Set(['whatsapp', 'proprietaire']); const LABELS = new Set(['VW', 'JEEP', 'MEGANE', 'INVITE', 'ZERO']); let dernierBlancVu = null; // anti-repetition du journal en essai a blanc @@ -1180,7 +1184,7 @@ async function appliquerEtiquetteConcierge(sql, client, st) { { sessions: [...cibles], deja: contradiction }); } - const sur = source === 'whatsapp'; + const sur = CANAUX_HUMAINS.has(source); const detail = { origine: 'airtria', source_airtria: source, label, confirmed_at: confirmedAt, sessions: [...cibles], vehicule_sur: sur, @@ -1250,7 +1254,7 @@ async function appliquerEtiquettesEnAttente(sql, client) { WHERE branchement > now() - interval '48 hours' ORDER BY branchement`); let n = 0; for (const e of rows) { - const sur = e.source_airtria === 'whatsapp'; + const sur = CANAUX_HUMAINS.has(e.source_airtria); const { rowCount } = await sql( `UPDATE session_charge s SET vehicule = $2, vehicule_sur = $3 WHERE s.debut >= $1::timestamptz - interval '2 seconds'