HOTFIX: planovac oslepl k autu po prejmenovani wallboxu (hardcoded kody)
fn_planning_site_context (R__039) a fn_load_planning_slots_full (R__063) mely natvrdo 'ev-charger-1/2' a 'deye-main'. Uzivatel prejmenoval wallboxy na 'vt-ev-charger-1/2' -> ctx.vehicles=[], ev_sessions=[null,null], ev1/ev2_connected vzdy false -> planovac nevidel auto -> ZADNE nabijeni ani v zapornych cenach (Tesla 70%, potrebuje 90% do Po 7:00, okno -0.32 Kc ve 13:45 nevyuzite). Fix: vyber wallboxu DYNAMICKY podle site_id, ev1=nejnizsi ch.id, ev2=druhy (stabilni, odolne prejmenovani). Inverter pro gen_cutoff pres controllable=true misto code='deye-main'. Konzistentni R__039 (vehicles order by id, sessions dynamicke kody) + R__063 (ev1/ev2 connected). Pure SQL, 363 testu zelenych. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -126,7 +126,8 @@ begin
|
||||
select ai.deye_gen_microinverter_cutoff_enabled
|
||||
from ems.asset_inverter ai
|
||||
where ai.site_id = p_site_id
|
||||
and ai.code = 'deye-main'
|
||||
and ai.controllable = true
|
||||
order by ai.id
|
||||
limit 1
|
||||
),
|
||||
false
|
||||
@@ -169,22 +170,30 @@ begin
|
||||
'battery_capacity_kwh', v.battery_capacity_kwh,
|
||||
'default_target_soc_pct', v.default_target_soc_pct
|
||||
)
|
||||
order by ch.code
|
||||
order by ch.id
|
||||
),
|
||||
'[]'::jsonb
|
||||
)
|
||||
into v_veh
|
||||
from ems.asset_vehicle v
|
||||
join ems.asset_ev_charger ch on ch.id = v.default_charger_id
|
||||
where v.site_id = p_site_id
|
||||
and ch.code in ('ev-charger-1', 'ev-charger-2');
|
||||
where v.site_id = p_site_id;
|
||||
|
||||
-- EV session per wallbox — logika v ems.fn_ev_session_planning_json
|
||||
-- (R__038): session se NEvyřazuje při needed_wh=0 (auto nad targetem),
|
||||
-- zůstává v plánu kvůli oportunistickému headroomu i jako známá zátěž.
|
||||
-- Wallboxy se vybírají DYNAMICKY podle site (řazeno ch.id = stabilní pořadí
|
||||
-- ev1/ev2), NE podle natvrdo kódu — uživatel může wallbox přejmenovat
|
||||
-- (2026-06-14: rename 'ev-charger-1' → 'vt-ev-charger-1' oslepil plánovač).
|
||||
v_ev := jsonb_build_array(
|
||||
ems.fn_ev_session_planning_json(p_site_id, 'ev-charger-1'),
|
||||
ems.fn_ev_session_planning_json(p_site_id, 'ev-charger-2')
|
||||
ems.fn_ev_session_planning_json(
|
||||
p_site_id,
|
||||
(select code from ems.asset_ev_charger where site_id = p_site_id order by id limit 1)
|
||||
),
|
||||
ems.fn_ev_session_planning_json(
|
||||
p_site_id,
|
||||
(select code from ems.asset_ev_charger where site_id = p_site_id order by id offset 1 limit 1)
|
||||
)
|
||||
);
|
||||
|
||||
select ti.battery_soc_percent
|
||||
|
||||
@@ -209,7 +209,8 @@ begin
|
||||
select t.status
|
||||
from ems.telemetry_ev_charger t
|
||||
join ems.asset_ev_charger ch on ch.id = t.charger_id
|
||||
where t.site_id = p_site_id and ch.code = 'ev-charger-1'
|
||||
where t.site_id = p_site_id
|
||||
and ch.id = (select id from ems.asset_ev_charger where site_id = p_site_id order by id limit 1)
|
||||
order by t.measured_at desc
|
||||
limit 1
|
||||
) ev1 on true
|
||||
@@ -217,7 +218,8 @@ begin
|
||||
select t.status
|
||||
from ems.telemetry_ev_charger t
|
||||
join ems.asset_ev_charger ch on ch.id = t.charger_id
|
||||
where t.site_id = p_site_id and ch.code = 'ev-charger-2'
|
||||
where t.site_id = p_site_id
|
||||
and ch.id = (select id from ems.asset_ev_charger where site_id = p_site_id order by id offset 1 limit 1)
|
||||
order by t.measured_at desc
|
||||
limit 1
|
||||
) ev2 on true;
|
||||
|
||||
Reference in New Issue
Block a user