velky refaktor - sladeni planovani LP aby pocital s realnym max sell/buy co pusti stridac
Some checks failed
CI and deploy / migration-check (push) Failing after 21s
CI and deploy / deploy (push) Has been skipped

This commit is contained in:
Dusan Vojacek
2026-05-23 21:54:23 +02:00
parent b44f74b249
commit e3e5fc138c
7 changed files with 201 additions and 46 deletions

View File

@@ -513,8 +513,11 @@ begin
from _ems_plan_slot_wk wk
where wk.pv_surplus_w > 0
and wk.sell_price >= wk.buy_price - v_degrad_czk_kwh
-- Držet PV na večerní peak: ne nabíjet z FVE když sell výrazně pod budoucím výkupním oknem.
and wk.sell_price >= wk.future_sell_lookahead - v_degrad_czk_kwh
-- Držet PV na večerní peak jen při kladném výkupu; při sell<0 (záporný výkup) vždy nabíjet z FVE.
and (
wk.sell_price < 0
or wk.sell_price >= wk.future_sell_lookahead - v_degrad_czk_kwh
)
order by wk.store_score desc nulls last, wk.slot_ord
loop
exit when v_cum >= v_pv_layer_cap_wh;
@@ -554,18 +557,26 @@ begin
where (
case
when v_purchase_pricing_mode = 'fixed' then
wk.sell_price > v_degrad_czk_kwh
wk.sell_price > wk.buy_price + v_degrad_czk_kwh
else
wk.sell_price > v_ref_buy_czk_kwh + v_degrad_czk_kwh
end
)
-- Na dni prvního sell<0 nepočítat noční „šrot“ (0004) do globálního rozpočtu —
-- jinak vyčerpá Wh před ranní špičkou (home-01: půlnoc 3,7 vs. 07:00 3,06).
-- Před prvním sell<0: do rozpočtu exportu jen sloty bez lepšího sell později tentýž den
-- (OTE), ne pevné hodiny 0004 (home-01: půlnoc 3,7 vs. 07:00 3,06).
and not (
v_first_neg_prague_date is not null
v_first_neg_sell_ord is not null
and wk.slot_ord < v_first_neg_sell_ord
and (wk.interval_start at time zone 'Europe/Prague')::date = v_first_neg_prague_date
and extract(hour from wk.interval_start at time zone 'Europe/Prague')
< v_morning_preneg_start_hour
and exists (
select 1
from _ems_plan_slot_wk w2
where w2.slot_ord > wk.slot_ord
and w2.slot_ord < v_first_neg_sell_ord
and (w2.interval_start at time zone 'Europe/Prague')::date
= (wk.interval_start at time zone 'Europe/Prague')::date
and w2.sell_price > wk.sell_price + v_degrad_czk_kwh
)
)
order by wk.sell_price desc, wk.slot_ord desc
loop
@@ -596,7 +607,7 @@ begin
and (
case
when v_purchase_pricing_mode = 'fixed' then
wk.sell_price > v_degrad_czk_kwh
wk.sell_price > wk.buy_price + v_degrad_czk_kwh
else
wk.sell_price > v_ref_buy_czk_kwh + v_degrad_czk_kwh
end