prepsani s opusem dle planu
Some checks failed
CI and deploy / migration-check (push) Failing after 13s
CI and deploy / deploy (push) Has been skipped

This commit is contained in:
Dusan Vojacek
2026-05-24 22:44:21 +02:00
parent 2d021b15c3
commit 8bef1c6da6
11 changed files with 720 additions and 16 deletions

View File

@@ -24,6 +24,7 @@ DECLARE
v_ev JSONB;
v_fc JSONB;
v_ov JSONB;
v_econ JSONB;
BEGIN
IF p_site_id IS NULL THEN
RETURN jsonb_build_object('error', 'site_id_required');
@@ -89,6 +90,49 @@ BEGIN
AND pi.interval_start < v_win_end
) t;
select jsonb_build_object(
'window_start_utc', v_slot,
'window_end_utc', v_win_end,
'total_import_kwh', coalesce(sum(
case when pi.grid_setpoint_w > 0
then pi.grid_setpoint_w * 0.25 / 1000.0 else 0 end
), 0),
'total_export_kwh', coalesce(sum(
case when pi.grid_setpoint_w < 0
then -pi.grid_setpoint_w * 0.25 / 1000.0 else 0 end
), 0),
'total_buy_cost_czk', coalesce(sum(
case when pi.grid_setpoint_w > 0
then pi.grid_setpoint_w * pi.effective_buy_price * 0.25 / 1000.0
else 0 end
), 0),
'total_sell_revenue_czk', coalesce(sum(
case when pi.grid_setpoint_w < 0
then -pi.grid_setpoint_w * pi.effective_sell_price * 0.25 / 1000.0
else 0 end
), 0),
'total_cashflow_czk', coalesce(sum(pi.cashflow_czk), 0),
'total_battery_arbitrage_czk', coalesce(sum(pi.battery_arbitrage_czk), 0),
'total_penalty_czk', coalesce(sum(pi.penalty_czk), 0),
'total_green_bonus_czk', coalesce(sum(pi.green_bonus_czk), 0),
'net_economic_czk',
coalesce(-sum(pi.cashflow_czk), 0)
+ coalesce(sum(pi.battery_arbitrage_czk), 0)
- coalesce(sum(pi.penalty_czk), 0)
+ coalesce(sum(pi.green_bonus_czk), 0),
'neg_sell_export_slots', count(*) filter (
where pi.effective_sell_price < 0 and pi.grid_setpoint_w < -500
),
'first_grid_charge_slot_utc', min(pi.interval_start) filter (
where pi.grid_setpoint_w > 500
)
)
into v_econ
from ems.planning_interval pi
where pi.run_id = v_run.id
and pi.interval_start >= v_slot
and pi.interval_start < v_win_end;
SELECT to_jsonb(m.*) || jsonb_build_object('mode_name', d.name)
INTO v_mode
FROM ems.site_operating_mode m
@@ -170,6 +214,7 @@ BEGIN
'ev_sessions_open', v_ev,
'forecast_correction_log_recent', v_fc,
'site_overrides_active_in_window', v_ov,
'economics_summary', v_econ,
'ai_readme', jsonb_build_object(
'purpose',
'Data stačí k vysvětlení „proč plán v dalších hodinách vypadá takto“: ceny v řádcích intervalů, vstupy (baseline, PV), výstupy (bat/grid/EV/TČ), režim a síťové limity.',