Cible du matin fixee par le bilan dans les deux sens ; urgence avant depart seulement s'il manque de l'energie
This commit is contained in:
18
HANDOFF.md
18
HANDOFF.md
@@ -1351,9 +1351,21 @@ ferme **06:00 -> 06:38** (2,15 kWh importes, HC). Mode sans_edf, budget publie 5
|
||||
`/api/template` : prochain depart JEEP « Fri 02 06:30 », ok. Golden **134/134** (+2 : jour
|
||||
de depart = comportement historique ; jeudi = EDF reste ouvert), mutation qui mord.
|
||||
Carte EVCS Master (trois lignes de jours). MANUEL §0.
|
||||
⚠️ **Reste ouvert** : un jour de depart, la marge declenche encore l'« urgence » a 06:00
|
||||
meme quand il ne manque RIEN a la batterie (0 kWh + 30 min >= 30 min). Correctif propose :
|
||||
exiger un manque > 0 ; decision du proprietaire.
|
||||
**Urgence avant depart (corrige 01/10, accord du proprietaire)** : `batteryRecoveryUrgent`
|
||||
exige desormais `batteryKwhMissingToTarget > 0` ; la marge de 30 min s'ajoute a un VRAI
|
||||
temps de recharge (manque / 2,5 kW), elle ne declenche plus rien seule.
|
||||
4. **La cible du matin vient du bilan, dans les deux sens** (proprietaire : « 35 % c'est idiot
|
||||
si le besoin est prevu 26,6 %, et c'est aussi idiot si la prevision est de 60 % pour une
|
||||
journee nuageuse »). `batteryMorningTargetPct` = min(90, max(plancher dur, required_soc))
|
||||
quand le bilan est frais et ok ; le palier de prevision (35/55/85 %) n'est plus qu'un
|
||||
REPLI. Fin du « sens unique » du 03/09 (§39). Effet : la reprise reseau de nuit
|
||||
(`gridTakeoverTriggerPct`) et l'urgence avant depart suivent le besoin reel.
|
||||
Golden **135/135** : `cible-bilan-ne-baisse-pas-la-cible` devient
|
||||
`cible-bilan-abaisse-la-cible` (inverse, voulu) ; `depart-matin-jour-de-depart-rien-ne-manque`
|
||||
(SOC 37 > 28,6 : rien) et `…-batterie-sous-la-cible` (SOC 25 : urgence, EDF) ; deux
|
||||
mutations qui mordent ; golden-acm 20/20, hysteresis 24/24. Deploye ~07:50.
|
||||
⚠️ A surveiller : le bilan p50 peut sous-estimer une nuit ; la batterie descend alors plus
|
||||
bas qu'avec le palier 35 %. Le filet reste l'hysteresis a 20 % et la session de nuit.
|
||||
|
||||
---
|
||||
*Document mis a jour le : 01/10/2026 (~07:35) — premiere nuit du budget : ecritures perdues et verrou P12 corriges, faux positif de depart a 06:00 ; commande vocale du mode de nuit validee, premiere nuit budget a suivre ; budget voiture de la nuit sans EDF (bilan + controleur) ; fiche de l'agent allegee (25 831 car.), concierge sans silence, calendrier JEEP mar/sam ; nuit du 28-29 verifiee, achat EDF annonce = maison en HC + manque batterie ; regle HC active, vehicule branche a midi (JEEP/VW/ZERO), prevision de nuit a trois verdicts, nuits superposees et bilan recale sur la soiree*
|
||||
|
||||
@@ -353,8 +353,15 @@ const balanceMorningTargetApplied =
|
||||
balanceTargetAgeMin !== null &&
|
||||
balanceTargetAgeMin <= BALANCE_TARGET_MAX_AGE_MIN;
|
||||
|
||||
// ⚠️ 01/10/2026 — DECISION DU PROPRIETAIRE : LE BILAN FIXE LA CIBLE, DANS LES
|
||||
// DEUX SENS. « La valeur de 35 % c'est idiot si le besoin est prevu 26,6 %, et
|
||||
// c'est aussi idiot si la prevision est de 60 % pour une journee nuageuse. »
|
||||
// Le sens unique ci-dessus (03/09) gardait le palier comme plancher : le
|
||||
// 01/10 a 06:00, cible 35 (palier « forte prevision ») pour un besoin du bilan
|
||||
// de 28,6 %. Le palier n'est plus qu'un REPLI quand le bilan est absent,
|
||||
// perime ou degrade. Bornes : le plancher dur en bas, 90 % en haut.
|
||||
const batteryMorningTargetPct = balanceMorningTargetApplied
|
||||
? Math.min(90, Math.max(batteryMorningTargetBasePct, params.balanceRequiredSocPct))
|
||||
? Math.min(90, Math.max(batteryHardFloorPct, params.balanceRequiredSocPct))
|
||||
: batteryMorningTargetBasePct;
|
||||
|
||||
const maxBatteryDischargePoints =
|
||||
@@ -387,8 +394,13 @@ const batteryRecoveryMinutesNeeded =
|
||||
? (batteryKwhMissingToTarget / params.evcsNightBatteryRecoveryPowerKw) * 60
|
||||
: 0;
|
||||
|
||||
// 01/10/2026 : l'urgence avant depart exige qu'il MANQUE de l'energie. Sans
|
||||
// cette garde, « 0 min de recharge + 30 min de marge >= 30 min » la declenchait
|
||||
// a 06:00 chaque jour de depart, batterie au-dessus de sa cible (01/10 : SOC 37,
|
||||
// cible 35, EDF ferme 06:00-06:38 pour rien ; idem 21, 22, 25 et 27/09).
|
||||
const batteryRecoveryUrgent =
|
||||
nightSessionActive &&
|
||||
batteryKwhMissingToTarget > 0 &&
|
||||
Number.isFinite(minutesUntilDeparture) &&
|
||||
minutesUntilDeparture >= 0 &&
|
||||
(
|
||||
|
||||
@@ -1341,9 +1341,11 @@ export const scenarios = [
|
||||
},
|
||||
|
||||
{
|
||||
// SENS UNIQUE : le bilan ne doit jamais ABAISSER la cible.
|
||||
id: 'cible-bilan-ne-baisse-pas-la-cible',
|
||||
label: "Nuit HC, SOC 30, le bilan ne demande que 25 % → le palier 35 % reste maître → le réseau est maintenu",
|
||||
// 01/10/2026, DECISION DU PROPRIETAIRE : le bilan fixe la cible DANS LES
|
||||
// DEUX SENS (« 35 % c'est idiot si le besoin est prevu 26,6 % »). Ce
|
||||
// scenario figeait l'ancien sens unique ; il fige desormais l'inverse.
|
||||
id: 'cible-bilan-abaisse-la-cible',
|
||||
label: "Nuit HC, SOC 30, le bilan ne demande que 25 % → la cible est 25 %, le palier 35 % n'est plus maître → le réseau est relâché",
|
||||
time: '2026-08-08T03:00:00+02:00',
|
||||
overrides: {
|
||||
...VEHICLE_NIGHT, allow_grid_hc_night: 'on',
|
||||
@@ -1357,9 +1359,8 @@ export const scenarios = [
|
||||
},
|
||||
expect: {
|
||||
profile: 'night_hc',
|
||||
state: 'night_session_done_idle',
|
||||
takeoverNeeded: true,
|
||||
takeoverHelperService: 'turn_on',
|
||||
takeoverNeeded: false,
|
||||
takeoverHelperService: 'turn_off',
|
||||
},
|
||||
},
|
||||
|
||||
@@ -3152,13 +3153,23 @@ export const scenarios = [
|
||||
// de 30 min declenchait la « recharge urgente avant depart » (0 kWh manquant)
|
||||
// et fermait EDF. Le jeudi, la JEEP ne part pas.
|
||||
{
|
||||
id: 'depart-matin-jour-de-depart-urgence-historique',
|
||||
label: 'Depart JEEP 06:30 un jour de depart : la marge de 30 min engage le reseau a 06:00 (comportement historique)',
|
||||
id: 'depart-matin-jour-de-depart-rien-ne-manque',
|
||||
label: 'Jour de depart, SOC 37 au-dessus de la cible du bilan (28,6) : il ne manque rien, aucune urgence a 06:00 (EDF ferme pour rien les 21, 22, 25, 27/09 et 01/10)',
|
||||
time: '2026-10-01T06:00:00+02:00',
|
||||
overrides: { ...BUDGET_NUIT, balance_last_run: '01/10 05:55', soc_percent: '37',
|
||||
balance_required_soc: '28.6', balance_required_soc_prudent: '29.7',
|
||||
evcs_vehicle: 'JEEP', departure_time_jeep: '06:30:00', departure_day_ok: 'on',
|
||||
night_charge_mode: 'sans_edf', night_budget_prev: '5.93|4010', evcs_total_energy_kwh: '4015' },
|
||||
expect: { edfOnAction: false, takeoverNeeded: false },
|
||||
},
|
||||
{
|
||||
id: 'depart-matin-jour-de-depart-batterie-sous-la-cible',
|
||||
label: 'Jour de depart, SOC 25 sous la cible du bilan (28,6) : il manque 1,1 kWh, l urgence engage le reseau avant 06:30',
|
||||
time: '2026-10-01T06:00:00+02:00',
|
||||
overrides: { ...BUDGET_NUIT, balance_last_run: '01/10 05:55', soc_percent: '25',
|
||||
balance_required_soc: '28.6', balance_required_soc_prudent: '29.7',
|
||||
evcs_vehicle: 'JEEP', departure_time_jeep: '06:30:00', departure_day_ok: 'on',
|
||||
night_charge_mode: 'sans_edf', night_budget_prev: '5.93|4010', evcs_total_energy_kwh: '4015' },
|
||||
expect: { sourceMode: 'grid_forced', edfOnAction: true },
|
||||
},
|
||||
{
|
||||
|
||||
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user