diff --git a/backend/app/routers/plan.py b/backend/app/routers/plan.py index cd2c850..c9c6974 100644 --- a/backend/app/routers/plan.py +++ b/backend/app/routers/plan.py @@ -120,18 +120,23 @@ async def get_current_plan( run_id = run_row["id"] int_rows = await conn.fetch( """ - WITH latest_fc AS ( - SELECT id - FROM ems.forecast_pv_run - WHERE site_id = $2 AND status = 'ok' - ORDER BY created_at DESC - LIMIT 1 - ), - fc_slot AS ( - SELECT fpi.interval_start, COALESCE(SUM(fpi.power_w), 0)::BIGINT AS pv_forecast_total_w - FROM ems.forecast_pv_interval fpi - WHERE fpi.run_id = (SELECT id FROM latest_fc) - GROUP BY fpi.interval_start + WITH fc_slot AS ( + SELECT + interval_start, + COALESCE(SUM(power_w), 0)::BIGINT AS pv_forecast_total_w + FROM ( + SELECT DISTINCT ON (fpi.interval_start, fpr.pv_array_id) + fpi.interval_start, + fpi.power_w + FROM ems.forecast_pv_interval fpi + JOIN ems.forecast_pv_run fpr ON fpr.id = fpi.run_id + JOIN ems.asset_pv_array apa + ON apa.id = fpr.pv_array_id AND apa.site_id = fpr.site_id + WHERE fpr.site_id = $2 + AND fpr.status = 'ok' + ORDER BY fpi.interval_start, fpr.pv_array_id, fpr.created_at DESC + ) latest_per_array + GROUP BY interval_start ) SELECT pi.*,