Bilan : une heure de nuit n'a aucune forme a minorer

Le drapeau « degrade » introduit la veille s'allumait de 20 h a 07 h toutes les
nuits. La qualite de forme d'une heure vient du taux de censure ; les heures
sans soleil portent un taux de 1 faute d'avoir quoi que ce soit a observer, pas
parce que la mesure serait douteuse. Comme les heures de deficit sont justement
les heures sans soleil, le drapeau se declenchait exactement quand le bilan
sert.

Une heure dont l'enveloppe demontree est nulle recoit desormais la qualite
'nuit'. Scenario epingle sur l'enveloppe et le taux de censure releves en
production, pas sur le fixture — dont la nuit valait 0 et qui ne reproduisait
donc pas le defaut. Preuve par mutation : avant 'minoree', apres 'nuit'.

Suite 37 -> 38. Documente la nuit du 25-26/08 : profil corrige verifie a
0,2 kWh/h pres, bilan qui predit le point bas a un point pres, et non-linearite
du SOC mesuree (huit points en dix-sept minutes pour 0,16 kWh).
This commit is contained in:
Tallagrand Thierry
2026-08-26 12:14:35 +02:00
parent 08c072d781
commit 8ad34f8c93
5 changed files with 189 additions and 2 deletions

View File

@@ -137,16 +137,27 @@ const dayKey = (ms) =>
const currentHourStart = Math.floor(nowMs / 3600000) * 3600000;
const today = dayKey(nowMs);
// Une heure ou l'enveloppe demontree est nulle est une heure de nuit : il n'y
// a jamais eu de soleil a y observer. Son taux de censure vaut 1 pour cette
// raison-la, pas parce que la mesure serait douteuse, et il n'existe aucune
// forme a minorer. La classer « minoree » faisait crier au loup TOUTES les
// nuits (les heures de deficit sont justement les heures sans soleil), donc
// exactement quand le bilan sert. Constate sur la nuit du 25-26/08 : statut
// « degrade » de 20 h a 07 h alors que le bilan a predit le point bas a un
// point pres.
const slots = [];
for (let i = 0; i < CFG.HORIZON_HOURS; i++) {
const start = currentHourStart + i * 3600000;
const hour = hourOfDay(start);
const nightHour = !!envelope && !(envelope[hour] > 0);
slots.push({
startMs: start,
hour,
day: dayKey(start),
weight: envelope ? envelope[hour] : 0,
quality: censorshipRate[hour] <= CFG.CENSORSHIP_QUALITY_LIMIT ? 'fiable' : 'minoree',
quality: nightHour
? 'nuit'
: censorshipRate[hour] <= CFG.CENSORSHIP_QUALITY_LIMIT ? 'fiable' : 'minoree',
});
}