-- Fázované SoC a curtail v okně sell < 0 (plánovač v32). alter table ems.asset_battery add column if not exists planner_neg_sell_prep_soc_percent numeric(5, 2) not null default 80; alter table ems.asset_battery add column if not exists planner_neg_sell_full_soc_tail_slots int not null default 4; alter table ems.asset_battery add column if not exists planner_neg_sell_vent_min_sell_czk_kwh numeric; comment on column ems.asset_battery.planner_neg_sell_prep_soc_percent is 'Cíl SoC (%) v hlavní části denního okna sell<0 (ASAP nabít z FVE). 100 = legacy (tlak na soc_max až na konci). Realizace škrcení A přes plánovaný pv_a_curtailed_w → Deye reg 340.'; comment on column ems.asset_battery.planner_neg_sell_full_soc_tail_slots is 'Počet 15min slotů před koncem denního úseku sell<0 (Europe/Prague), kdy LP rampuje cíl SoC na soc_max. 0 = bez tail fáze (legacy).'; comment on column ems.asset_battery.planner_neg_sell_vent_min_sell_czk_kwh is 'V tail fázi: dobrovolný ventil pole B (ge_pv) jen pokud effective sell >= tato hodnota (Kč/kWh). NULL = vent jen při plné baterii (stávající w_pv_b_vent).'; update ems.asset_battery ab set planner_neg_sell_prep_soc_percent = 80, planner_neg_sell_full_soc_tail_slots = 4, planner_neg_sell_vent_min_sell_czk_kwh = -1.0 from ems.site s where ab.site_id = s.id and s.code = 'home-01'; update ems.asset_battery ab set planner_neg_sell_prep_soc_percent = 100 from ems.site s join ems.site_grid_connection sgc on sgc.site_id = s.id where ab.site_id = s.id and coalesce(sgc.block_export_on_negative_sell, false) = true;