Bilan : plus de faux statut degrade le soir (heure lue dans la courbe horaire)
Chaque soir ~1 h, une heure de deficit encore ensoleillee etait classee « minoree » d'apres le taux de censure de l'enveloppe, alors que sa production venait de la courbe horaire VRM / Forecast.Solar. Le bilan passait `degrade` et le controleur l'ignorait (plancher du soir a 85 % fixe). Les heures lues dans la courbe sont desormais `courbe`. Verifie : 18:20 ok, chiffres identiques a 18:15 degrade. Bilan 72/72. 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:
@@ -216,10 +216,14 @@ const tomorrowSlots = slots.filter(s => s.day !== today);
|
||||
|
||||
if (hourlyAvailable) {
|
||||
// Lecture directe : chaque heure porte déjà son énergie prévue.
|
||||
for (const slot of todaySlots) slot.expectedKwh = Math.max(0, hourlyForToday[slot.hour] ?? 0);
|
||||
for (const slot of todaySlots) {
|
||||
slot.expectedKwh = Math.max(0, hourlyForToday[slot.hour] ?? 0);
|
||||
slot.fromCurve = true;
|
||||
}
|
||||
if (hourlyForTomorrow) {
|
||||
for (const slot of tomorrowSlots) {
|
||||
slot.expectedKwh = Math.max(0, hourlyForTomorrow[slot.hour] ?? 0);
|
||||
slot.fromCurve = true;
|
||||
}
|
||||
} else {
|
||||
// Courbe decalee : on connait aujourd'hui, pas demain. L'enveloppe mesuree
|
||||
@@ -232,6 +236,19 @@ if (hourlyAvailable) {
|
||||
distribute(tomorrowSlots, tomorrowKwh);
|
||||
}
|
||||
|
||||
// Une heure lue dans la COURBE HORAIRE ne doit rien a l'enveloppe (29/09/2026).
|
||||
// La classer « minoree » d'apres le taux de censure de l'enveloppe faisait
|
||||
// passer le bilan `degrade` chaque soir pendant une heure (19 h du 23 au 28/09,
|
||||
// 18 h le 29/09) : l'heure du soir encore ensoleillee est une heure de deficit,
|
||||
// et son historique est censure parce que la batterie est souvent pleine a
|
||||
// cette heure. Or sa production venait de VRM / Forecast.Solar, pas de cet
|
||||
// historique. Pendant cette heure le controleur ignorait le bilan (plancher du
|
||||
// soir retombe a 85 % fixe). « minoree » ne qualifie plus que les heures dont
|
||||
// l'energie a ete repartie sur l'enveloppe (repli).
|
||||
for (const slot of slots) {
|
||||
if (slot.fromCurve && slot.quality !== 'nuit') slot.quality = 'courbe';
|
||||
}
|
||||
|
||||
// Repère de vraisemblance, sans écrêtage : l'enveloppe est minorée l'après-midi.
|
||||
for (const slot of slots) {
|
||||
slot.aboveEnvelope = !!envelope && envelope[slot.hour] > 0
|
||||
|
||||
Reference in New Issue
Block a user