concierge : alertes piles, alertes de l'arbitre ; fiche : piles, surplus SDB
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
#!/usr/bin/env node
|
||||
// arbitrage.js — ARBITRE ENCADRÉ (08/10/2026, « GO arbitre », contrat d'EVCS, commit dea9c88).
|
||||
// EVCS publie sensor.evcs_arbitrage (état question | repondu | aucun ; en question : id, question, choix
|
||||
// EVCS publie sensor.evcs_arbitrage (état question | alerte | repondu | aucun ; en question : id, question, choix
|
||||
// [{cle, libelle}]). Le concierge (detect) envoie la question à Thierry UNE fois par id ; sa réponse
|
||||
// passe par CE script, seule écriture : input_text.evcs_arbitrage_reponse =
|
||||
// {"id","choix","source":"whatsapp","confirmed_at"}. EVCS vérifie et n'applique que l'ordre du choix.
|
||||
@@ -43,11 +43,14 @@ function texteQuestion(a) {
|
||||
|
||||
async function question() {
|
||||
const s = await lireArbitrage(); const a = s.attributes || {};
|
||||
if (s.state !== 'question' || !a.id || !a.question || choixDe(a).length < 2) return '';
|
||||
// 10/10 (EVCS) : état « alerte » (ex. recharge_bridee) = information seule, choix vide, rien à répondre.
|
||||
const alerte = s.state === 'alerte';
|
||||
if ((s.state !== 'question' && !alerte) || !a.id || !a.question) return '';
|
||||
if (!alerte && choixDe(a).length < 2) return '';
|
||||
const st = loadState();
|
||||
if (st.questionId === a.id) return ''; // déjà envoyée
|
||||
saveState({ ...st, questionId: a.id });
|
||||
return texteQuestion(a);
|
||||
return alerte ? `⚠️ ${String(a.question).trim()}` : texteQuestion(a);
|
||||
}
|
||||
|
||||
async function application() {
|
||||
@@ -63,6 +66,9 @@ async function repondre(cleArg) {
|
||||
const cle = String(cleArg ?? '').trim();
|
||||
if (!/^\d{1,2}$/.test(cle)) return `Rien n'est transmis : « ${cle} » n'est pas un numéro de choix. Redemande le numéro.`;
|
||||
const s = await lireArbitrage(); const a = s.attributes || {};
|
||||
if (s.state === 'alerte') return a.cas === 'recharge_bridee'
|
||||
? "C'était une information, rien à répondre : la recharge est bridée, la session EVCS est prévenue."
|
||||
: "C'était une information, rien à répondre : la session EVCS est prévenue.";
|
||||
if (s.state !== 'question' || !a.id) return "Rien n'est transmis : aucun arbitrage n'est ouvert.";
|
||||
const c = choixDe(a).find((x) => String(x.cle) === cle);
|
||||
if (!c) return `Rien n'est transmis : le choix ${cle} n'existe pas (${choixDe(a).map((x) => x.cle).join(' ou ')}). Redemande le numéro.`;
|
||||
|
||||
Reference in New Issue
Block a user