Files
ems/db/migration/V057__site_pv_forecast_calibration.sql
Dusan Vojacek 568b584748
Some checks failed
CI and deploy / migration-check (push) Failing after 9s
CI and deploy / deploy (push) Has been skipped
kalibrace per pole
2026-04-22 22:17:28 +02:00

42 lines
2.2 KiB
SQL

-- Kalibrace PV forecastu per site (cutoff učení, škrcení policy, volitelné přepsání parametrů delty).
-- forecast_accuracy: flagy pro učení (vyloučení škrcených slotů apod.).
CREATE TABLE ems.site_pv_forecast_calibration (
site_id int NOT NULL PRIMARY KEY REFERENCES ems.site (id) ON DELETE CASCADE,
-- Od tohoto okamžiku (UTC) brát řádky do učení delty / vážených statistik (>=).
delta_learn_min_ts timestamptz NOT NULL,
-- Od kdy platí agresivní export/škrcení policy (NULL = neaplikovat časový filtr u heuristiky škrcení).
pv_curtailment_policy_effective_from timestamptz NULL,
top_n_days int NULL,
non_top_day_factor numeric NULL,
day_weight_gamma numeric NULL,
half_life_days numeric NULL,
threshold_w int NULL,
updated_at timestamptz NOT NULL DEFAULT now()
);
COMMENT ON TABLE ems.site_pv_forecast_calibration IS
'Per-site kalibrace PV delta profilu a pravidla učení. NULL v numerických sloupích = použít default z ems.fn_pv_forecast_delta_profile.';
COMMENT ON COLUMN ems.site_pv_forecast_calibration.delta_learn_min_ts IS
'Dolní mez interval_start pro učení delty z forecast_accuracy (UTC).';
COMMENT ON COLUMN ems.site_pv_forecast_calibration.pv_curtailment_policy_effective_from IS
'Od tohoto času bereme heuristiku škrcení (planning_interval): sloty po tomto datu s curtailment/cut-off se mohou vyloučit z učení.';
ALTER TABLE ems.forecast_accuracy
ADD COLUMN IF NOT EXISTS learning_eligible boolean NOT NULL DEFAULT true,
ADD COLUMN IF NOT EXISTS learning_exclude_reason text NULL;
COMMENT ON COLUMN ems.forecast_accuracy.learning_eligible IS
'false = řádek se nepoužívá pro učení delty (škrcení, před cutoffem, …); actual_power_w může být NULL pro audit.';
COMMENT ON COLUMN ems.forecast_accuracy.learning_exclude_reason IS
'Důvod vyloučení z učení, např. curtailment_or_gen_cutoff, before_delta_learn_min.';
-- Seed: všechny existující lokality — stejný cutoff jako dosud v R__078 (začátek 2026-04-12 Europe/Prague).
INSERT INTO ems.site_pv_forecast_calibration (site_id, delta_learn_min_ts, top_n_days)
SELECT s.id, timestamptz '2026-04-11T22:00:00Z', 3
FROM ems.site s
ON CONFLICT (site_id) DO NOTHING;