Le proprietaire est un canal de confirmation, pas seulement WhatsApp

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 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GwpFpy2aQ2rJok6tNQSbVj
This commit is contained in:
Tallagrand Thierry
2026-09-14 21:41:40 +02:00
parent d2163ffc88
commit b5ac62ba1e

View File

@@ -1054,6 +1054,10 @@ async function ingererCellules(client) {
// Un label household venu de ce chemin est donc un bug par construction : on // Un label household venu de ce chemin est donc un bug par construction : on
// REFUSE et on signale, on n'applique pas. // REFUSE et on signale, on n'applique pas.
const HOUSEHOLD = new Set(['VW', 'JEEP']); 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']); const LABELS = new Set(['VW', 'JEEP', 'MEGANE', 'INVITE', 'ZERO']);
let dernierBlancVu = null; // anti-repetition du journal en essai a blanc 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 }); { sessions: [...cibles], deja: contradiction });
} }
const sur = source === 'whatsapp'; const sur = CANAUX_HUMAINS.has(source);
const detail = { const detail = {
origine: 'airtria', source_airtria: source, label, confirmed_at: confirmedAt, origine: 'airtria', source_airtria: source, label, confirmed_at: confirmedAt,
sessions: [...cibles], vehicule_sur: sur, sessions: [...cibles], vehicule_sur: sur,
@@ -1250,7 +1254,7 @@ async function appliquerEtiquettesEnAttente(sql, client) {
WHERE branchement > now() - interval '48 hours' ORDER BY branchement`); WHERE branchement > now() - interval '48 hours' ORDER BY branchement`);
let n = 0; let n = 0;
for (const e of rows) { for (const e of rows) {
const sur = e.source_airtria === 'whatsapp'; const sur = CANAUX_HUMAINS.has(e.source_airtria);
const { rowCount } = await sql( const { rowCount } = await sql(
`UPDATE session_charge s SET vehicule = $2, vehicule_sur = $3 `UPDATE session_charge s SET vehicule = $2, vehicule_sur = $3
WHERE s.debut >= $1::timestamptz - interval '2 seconds' WHERE s.debut >= $1::timestamptz - interval '2 seconds'