P10: mémoire 'véhicule plein' en journée (collant jusqu'au débranchement)

- WINDOWS: dayVehicleFullIdle (statut 3 ou VDF, héritages jour<->nuit),
  sourceMode blocked même face au solaire
- DECISION: branche collante day_vehicle_full_idle au-dessus des gardes
- échappatoires force_charge_now/force_grid_now (golden)
- golden 33->36, validé live 10:04:30 (latch en 16 s sur la VW pleine)
- HANDOFF §22 + MANUEL états collants
This commit is contained in:
Tallagrand Thierry
2026-08-09 10:06:25 +02:00
parent 970ff83f68
commit 819eafd4d4
7 changed files with 202 additions and 3 deletions

View File

@@ -363,6 +363,7 @@ const vehicleChargeCompleted =
prevSurplusState === 'vehicle_full_or_paused' ||
prevSurplusState === 'night_session_done_idle' ||
prevSurplusState === 'night_recovery_done_idle' ||
prevSurplusState === 'day_vehicle_full_idle' ||
evcsStatusCharged
);
@@ -420,6 +421,37 @@ const departureUrgentActive =
departureWindowActive &&
!departureChargeDone;
// =====================================================
// P10 (09/08/2026) : MÉMOIRE "VÉHICULE PLEIN" EN JOURNÉE.
// Observé le 09/08 09:49 : VW pleine branchée depuis 07:00, le surplus
// solaire retentait une charge (statut "Charged", 0 W) toutes les ~15 min
// toute la journée (usure relais, bruit). Les états collants P8/P9 étaient
// scopés nuit/fenêtre départ. Ici : une fois le véhicule vu plein (statut 3
// ou VDF), état collant 'day_vehicle_full_idle' jusqu'au DÉBRANCHEMENT.
// - hérite des états "done" de la nuit (07:24 → pas de re-tentative) ;
// - la nuit hérite en retour (vehicleChargeCompleted inclut day_*) ;
// - échappatoires : force_charge_now / force_grid_now / débrancher-rebrancher.
// =====================================================
const dayVehicleFullPrev =
prevSurplusState === 'day_vehicle_full_idle' ||
(
!inNightHcWindow &&
(
prevSurplusState === 'vehicle_full_or_paused' ||
prevSurplusState === 'night_recovery_done_idle' ||
prevSurplusState === 'night_session_done_idle' ||
prevSurplusState === 'departure_done_idle'
)
);
const dayVehicleFullIdle =
parsed.evcsVehicleConnected &&
!inNightHcWindow &&
!isStopMode &&
!forceGridRequested &&
!forceChargeRequested &&
(dayVehicleFullPrev || evcsStatusCharged);
// P8 : correction du fix 04/08 (logique inversée : "|| vehicleChargeCompleted"
// GARDAIT le latch après la charge au lieu de le libérer).
const nightTakeoverLatched =
@@ -693,6 +725,12 @@ if (departureChargeDone && profile !== 'night_hc' && !isStopMode && !forceGridRe
sourceMode = 'blocked';
}
// P10 : véhicule plein en journée (mémoire collante) → aucune source,
// y compris solaire (charger un véhicule plein ne sert à rien).
if (dayVehicleFullIdle && profile !== 'night_hc') {
sourceMode = 'blocked';
}
const operatingMode = profile;
// =====================================================
@@ -810,6 +848,9 @@ return [{
// P9
departureUrgentActive,
departureChargeDone,
// P10
dayVehicleFullIdle,
}
}
}];