-- 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;