Prevision de nuit : bilan degrade relaye sous reserve, plus muet

18:03 le 29/09 : « prevision indisponible » avec 16 points de marge, parce
que le bilan etait `degrade` (forme minoree sur une heure de deficit, chaque
soir ~1 h). Statut `sous_reserve` avec la reserve dans le texte ;
`indisponible` seulement sans bilan, perime ou statut inconnu, avec la raison.
Diagnostics 90/90.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011uJ47NxgfpGnuuMr3f2n7Z
This commit is contained in:
Tallagrand Thierry
2026-09-29 18:10:00 +02:00
parent c2f9e83a39
commit 0975e62bda
3 changed files with 52 additions and 4 deletions

View File

@@ -422,6 +422,22 @@ for (const [nom, r, test] of imp) {
'input_boolean.victron_evcs_night_grid_session_committed': 'off', 'input_text.evcs_balance_next_deficit_window': 'déficit en cours',
})) m.set(k, { state: v }); return previsionNuit(m, t); })(),
(r) => r.etat === 'jour' && !/Repere provisoire/.test(r.attributs.texte_rapport)],
// Releve REEL du 29/09 18:05 : bilan `degrade` (forme minoree), SOC 83,
// requis 67,2, 13,56 kWh a couvrir. Le vocal a dit « indisponible ».
['29/09 18:05 : bilan degrade -> prevision publiee SOUS RESERVE, pas muette', (() => {
const m = base(); for (const [k, v] of Object.entries({
'input_text.evcs_balance_status': 'degrade', 'input_number.evcs_balance_energy_to_cover_kwh': '13.56',
'input_boolean.evcs_balance_grid_needed': 'off', 'input_number.evcs_balance_required_soc': '67.2',
'input_number.evcs_balance_required_soc_prudent': '76', 'sensor.victron_battery_soc': '83',
'input_boolean.victron_evcs_night_grid_session_committed': 'off', 'input_datetime.victron_evcs_hc_night_start': '01:24:00',
})) m.set(k, { state: v }); return previsionNuit(m, t); })(),
(r) => r.etat === 0 && r.attributs.statut === 'sous_reserve' && r.attributs.verdict === 'batterie_suffit'
&& /Sous reserve/.test(r.attributs.texte_rapport) && /reprise a 01:24/.test(r.attributs.texte_rapport)],
['statut inconnu -> indisponible, avec la raison', (() => {
const m = base(); m.set('input_text.evcs_balance_status', { state: 'erreur' }); return previsionNuit(m, t); })(),
(r) => r.etat === 'indisponible' && /etat « erreur »/.test(r.attributs.explication)],
['bilan perime -> indisponible, dit depuis combien de temps', previsionNuit(base(), new Date('2026-09-28T00:30:00Z')),
(r) => r.etat === 'indisponible' && /recalcule depuis 65 min/.test(r.attributs.explication)],
['plus jamais d attribut reseau_necessaire_kwh (lu comme un achat le 28/09)', previsionNuit(base(), t),
(r) => !('reseau_necessaire_kwh' in r.attributs) && 'import_prevu_kwh' in r.attributs],
['jamais d attribut qui ressemble a un SOC du matin (incident 21:16)', previsionNuit(base(), t),