feat(planner): EV účtování v2 — headroom fix, deadline boundary, min. výkon WB, via-bat reporting
Hloubková diagnóza EV potvrdila: oportunitní ekonomika via-baterie je v LP
správně, ale okraje lhaly nebo byly nevykonatelné:
- V099 + R__039: ems.ev_session.opportunistic_value_czk_kwh (NULL = zdědit
z asset_vehicle, 0 = vypnout pro session); headroom_wh z max(target_soc,
soc_at_connect) — „nenabíjet" (nízký target) už paradoxně NEzvětšuje
oportunistickou vrstvu; vehicles JSON nese min_power_w wallboxu.
- R__015: patch klíč opportunistic_value_czk_kwh (validace >= 0).
- solver_v2: (a) deadline suma range(t_dl) — slot začínající v deadline už
nepatří „do deadline"; (b) Σ ev_direct <= gi + PV (fyzikální split);
(c) binárka ev_on → setpoint ∈ {0} ∪ [min_power_w, max] (konec 400–900 W
nevykonatelných setpointů); (d) bez session EV == 0 (stop-session i golden
fixtures — žádné pumpování při buy<0); dekompozice total == needed − unmet
+ opp i pro needed = 0; (e) battery_arbitrage_czk = via_bat kWh × oportunitní
cena (min sell exportního slotu téhož pražského dne, jinak terminal value)
místo konstantní 0. Oportunismus PO deadline zůstává POVOLENÝ (rozhodnutí:
auto často doma, odjezd řeší rolling replan).
- R__033: fn_plan_current_bundle.intervals + ev1/ev2_via_bat_w (UI nemá cenit
EV kWh z baterie slotovým buy).
Golden gate beze změny snapshotů (v1 nedotčen, fixtures bez EV sessions);
solver_v2_eval před/po identický (CELKEM −1283.5 Kč, Δ −221.9 vs v1);
tests/test_solver_v2.py +7 testů; plná sada 310 passed / 4 xfailed.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -85,6 +85,8 @@ begin
|
||||
'deye_gen_cutoff_enabled', pi.deye_gen_cutoff_enabled,
|
||||
'ev1_setpoint_w', pi.ev1_setpoint_w,
|
||||
'ev2_setpoint_w', pi.ev2_setpoint_w,
|
||||
'ev1_via_bat_w', pi.ev1_via_bat_w,
|
||||
'ev2_via_bat_w', pi.ev2_via_bat_w,
|
||||
'heat_pump_enabled', pi.heat_pump_enabled,
|
||||
'pv_a_curtailed_w', pi.pv_a_curtailed_w,
|
||||
'expected_cost_czk', pi.expected_cost_czk,
|
||||
@@ -123,6 +125,8 @@ begin
|
||||
'deye_gen_cutoff_enabled', null,
|
||||
'ev1_setpoint_w', null,
|
||||
'ev2_setpoint_w', null,
|
||||
'ev1_via_bat_w', null,
|
||||
'ev2_via_bat_w', null,
|
||||
'heat_pump_enabled', null,
|
||||
'pv_a_curtailed_w', null,
|
||||
'expected_cost_czk', null,
|
||||
@@ -248,5 +252,5 @@ begin
|
||||
end;
|
||||
$fn$;
|
||||
|
||||
comment on function ems.fn_plan_current_bundle(int) is
|
||||
'Aktivní planning_run + intervaly + souhrn (GET /plan/current). PV za horizont plánu z canonical forecast; delta profil z cache.';
|
||||
comment on function ems.fn_plan_current_bundle is
|
||||
'Aktivní planning_run + intervaly + souhrn (GET /plan/current). PV za horizont plánu z canonical forecast; delta profil z cache; intervals nesou ev1/ev2_via_bat_w (EV energie z baterie — UI nemá cenit slotovým buy).';
|
||||
|
||||
Reference in New Issue
Block a user