fix forecast korekce
Some checks failed
CI and deploy / migration-check (push) Failing after 10s
CI and deploy / deploy (push) Has been skipped

This commit is contained in:
Dusan Vojacek
2026-04-22 19:40:55 +02:00
parent 9ca4b4c577
commit e085068069
3 changed files with 10 additions and 10 deletions

View File

@@ -495,15 +495,15 @@ async def get_site_forecast_pv_slots_range(
to_ts: datetime = Query( to_ts: datetime = Query(
..., ...,
alias="to", alias="to",
description="Konec polouzavřeného intervalu (max. cca 120 h za from)", description="Konec polouzavřeného intervalu (max. 60 dní za from)",
), ),
) -> dict[str, list[dict[str, Any]]]: ) -> dict[str, list[dict[str, Any]]]:
if to_ts <= from_ts: if to_ts <= from_ts:
raise HTTPException(status_code=422, detail="'to' must be after 'from'") raise HTTPException(status_code=422, detail="'to' must be after 'from'")
if to_ts - from_ts > timedelta(hours=120): if to_ts - from_ts > timedelta(days=60):
raise HTTPException( raise HTTPException(
status_code=422, status_code=422,
detail="Span between 'from' and 'to' must be at most 120 hours", detail="Span between 'from' and 'to' must be at most 60 days",
) )
async with db.acquire() as conn: async with db.acquire() as conn:
site_ok = await conn.fetchval( site_ok = await conn.fetchval(
@@ -536,7 +536,7 @@ async def get_site_forecast_pv_slots_range_corrected(
to_ts: datetime = Query( to_ts: datetime = Query(
..., ...,
alias="to", alias="to",
description="Konec polouzavřeného intervalu (max. cca 120 h za from)", description="Konec polouzavřeného intervalu (max. 60 dní za from)",
), ),
delta_from_ts: datetime | None = Query( delta_from_ts: datetime | None = Query(
None, None,
@@ -563,10 +563,10 @@ async def get_site_forecast_pv_slots_range_corrected(
) -> dict[str, list[dict[str, Any]]]: ) -> dict[str, list[dict[str, Any]]]:
if to_ts <= from_ts: if to_ts <= from_ts:
raise HTTPException(status_code=422, detail="'to' must be after 'from'") raise HTTPException(status_code=422, detail="'to' must be after 'from'")
if to_ts - from_ts > timedelta(hours=120): if to_ts - from_ts > timedelta(days=60):
raise HTTPException( raise HTTPException(
status_code=422, status_code=422,
detail="Span between 'from' and 'to' must be at most 120 hours", detail="Span between 'from' and 'to' must be at most 60 days",
) )
now = datetime.now(tz=timezone.utc) now = datetime.now(tz=timezone.utc)
delta_to = delta_to_ts or now delta_to = delta_to_ts or now

View File

@@ -14,7 +14,7 @@ as $fn$
p_from as ts_from, p_from as ts_from,
case case
when p_to <= p_from then p_from + interval '15 minutes' when p_to <= p_from then p_from + interval '15 minutes'
when p_to > p_from + interval '120 hours' then p_from + interval '120 hours' when p_to > p_from + interval '60 days' then p_from + interval '60 days'
else p_to else p_to
end as ts_to end as ts_to
), ),
@@ -64,4 +64,4 @@ as $fn$
$fn$; $fn$;
comment on function ems.fn_forecast_pv_slots_range(int, timestamptz, timestamptz) is comment on function ems.fn_forecast_pv_slots_range(int, timestamptz, timestamptz) is
'JSON pole {interval_start, pv_forecast_total_w} po 15 min pro [p_from, p_to); doplnění grafu plánu za hranicí planning_interval.'; 'JSON pole {interval_start, pv_forecast_total_w} po 15 min pro [p_from, p_to); doplnění grafu plánu za hranicí planning_interval. Horizont je omezený na max. 60 dní.';

View File

@@ -26,7 +26,7 @@ as $fn$
p_from as ts_from, p_from as ts_from,
case case
when p_to <= p_from then p_from + interval '15 minutes' when p_to <= p_from then p_from + interval '15 minutes'
when p_to > p_from + interval '120 hours' then p_from + interval '120 hours' when p_to > p_from + interval '60 days' then p_from + interval '60 days'
else p_to else p_to
end as ts_to end as ts_to
), ),
@@ -120,4 +120,4 @@ as $fn$
$fn$; $fn$;
comment on function ems.fn_forecast_pv_slots_range_corrected(int, timestamptz, timestamptz, timestamptz, timestamptz, numeric, int) is comment on function ems.fn_forecast_pv_slots_range_corrected(int, timestamptz, timestamptz, timestamptz, timestamptz, numeric, int) is
'JSON pole {interval_start, pv_forecast_total_w, pv_forecast_corrected_w, slot_of_day} po 15 min pro [p_from, p_to). Korekce je aditivní delta profil z fn_pv_forecast_delta_profile.'; 'JSON pole {interval_start, pv_forecast_total_w, pv_forecast_corrected_w, slot_of_day} po 15 min pro [p_from, p_to). Korekce je aditivní delta profil z fn_pv_forecast_delta_profile. Horizont je omezený na max. 60 dní.';