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:
@@ -632,10 +632,26 @@ export function previsionNuit(st, maintenant = new Date()) {
|
||||
? 'la production du matin vient de la prevision VRM, en essai depuis le 28/09 : l heure de retour du solaire reste une estimation'
|
||||
: 'la production du matin vient de Forecast.Solar, qui sous-estime ces jours-ci : l heure de retour du solaire peut etre plus precoce',
|
||||
};
|
||||
if (statut !== 'ok' || age === null || age > BILAN_FRAIS_MIN || aCouvrir === null || retour === null) {
|
||||
// `degrade` n'est PAS une panne (29/09, 18:03 : « prevision indisponible »
|
||||
// en vocal avec 16 points de marge). Le bilan passe `degrade` chaque soir
|
||||
// pendant une heure environ (19 h depuis le 23/09, 18 h le 29/09) : une
|
||||
// heure de deficit dont l'historique de production est censure (batterie
|
||||
// souvent pleine a cette heure) est marquee « forme minoree ». Le calcul est
|
||||
// fait et publie ; on le relaie AVEC la reserve. Muet seulement sans bilan,
|
||||
// bilan perime, ou statut inconnu.
|
||||
const degrade = statut === 'degrade';
|
||||
const pourquoi = age === null || age > BILAN_FRAIS_MIN
|
||||
? `le bilan energetique n a pas ete recalcule depuis ${age === null ? 'un moment' : `${age} min`}`
|
||||
: statut !== 'ok' && !degrade ? `le bilan energetique est en etat « ${statut ?? 'inconnu'} »`
|
||||
: 'le bilan ne donne pas l energie a couvrir ou l heure de retour du solaire';
|
||||
if ((statut !== 'ok' && !degrade) || age === null || age > BILAN_FRAIS_MIN || aCouvrir === null || retour === null) {
|
||||
return { etat: 'indisponible', attributs: { ...attributs, statut: 'indisponible',
|
||||
explication: 'Le bilan energetique n est pas a jour : prevision de la nuit indisponible.' } };
|
||||
explication: `Prevision de la nuit indisponible pour l instant : ${pourquoi}. Elle revient au prochain calcul du bilan (toutes les 5 min).` } };
|
||||
}
|
||||
const reserveBilan = degrade
|
||||
? ' Sous reserve : l historique de production de ces heures de fin de journee est incomplet (batterie souvent pleine a cette heure) ; la decision reelle est reprise ' + (hcDebut ? `a ${hcDebut}` : 'a l ouverture des heures creuses') + '.'
|
||||
: '';
|
||||
attributs.reserve_bilan = degrade ? 'forme de production minoree sur les heures de deficit' : null;
|
||||
const voiture = attributs.voiture === 'aucune'
|
||||
? 'Aucun vehicule branche.'
|
||||
: attributs.voiture === 'branchee'
|
||||
@@ -684,9 +700,9 @@ export function previsionNuit(st, maintenant = new Date()) {
|
||||
explication: texteJour, texte_rapport: texteJour } };
|
||||
}
|
||||
const texte = `La maison doit couvrir environ ${aCouvrir} kWh jusqu au retour du solaire vers ${retour}. ` +
|
||||
`${edf} Batterie a ${soc !== null ? Math.round(soc) : '?'} %. ${voiture}`;
|
||||
`${edf} Batterie a ${soc !== null ? Math.round(soc) : '?'} %. ${voiture}${reserveBilan}`;
|
||||
const etat = verdict === 'edf_engage' || verdict === 'reseau_necessaire' ? (importPrevu ?? manqueKwh) : 0;
|
||||
return { etat, attributs: { ...attributs, statut: 'frais', explication: texte, texte_rapport: texte } };
|
||||
return { etat, attributs: { ...attributs, statut: degrade ? 'sous_reserve' : 'frais', explication: texte, texte_rapport: texte } };
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------
|
||||
|
||||
Reference in New Issue
Block a user