53 lines
2.9 KiB
SQL
53 lines
2.9 KiB
SQL
-- EMS: two-tier SoC semantics (DB comments), restore arbitrage floor after V026 tuning,
|
||
-- planning_interval solver inputs, baseline load forecast accuracy tracking.
|
||
|
||
-- Semantics: min_soc = absolute LP floor; reserve_soc = economic / export discharge floor
|
||
COMMENT ON COLUMN ems.asset_battery.min_soc_percent IS
|
||
'Minimální SoC v % – tvrdá spodní mez v LP (ochrana packu / BMS).';
|
||
COMMENT ON COLUMN ems.asset_battery.reserve_soc_percent IS
|
||
'Ekonomická podlaha v %: pod ní solver neplánuje „nadbytečné“ vybíjení související s exportem (MILP); nadřazuje se min_soc_percent.';
|
||
|
||
-- Obnovit rezervu 20 % tam, kde V026 sladila ekonomiku na reserve=10 společně s degradací 0.15
|
||
UPDATE ems.asset_battery
|
||
SET reserve_soc_percent = 20.00
|
||
WHERE reserve_soc_percent = 10.00
|
||
AND degradation_cost_czk_kwh = 0.1500;
|
||
|
||
ALTER TABLE ems.planning_interval
|
||
ADD COLUMN IF NOT EXISTS load_baseline_w INT,
|
||
ADD COLUMN IF NOT EXISTS pv_a_forecast_raw_w INT,
|
||
ADD COLUMN IF NOT EXISTS pv_b_forecast_raw_w INT,
|
||
ADD COLUMN IF NOT EXISTS pv_a_forecast_solver_w INT,
|
||
ADD COLUMN IF NOT EXISTS pv_b_forecast_solver_w INT;
|
||
|
||
COMMENT ON COLUMN ems.planning_interval.load_baseline_w IS
|
||
'Bazální spotřeba (W) vstupující do LP pro tento slot (stats DOW+hodina / fallback).';
|
||
COMMENT ON COLUMN ems.planning_interval.pv_a_forecast_raw_w IS
|
||
'FVE pole A – výkon z DB před rolling korekcí forecastu.';
|
||
COMMENT ON COLUMN ems.planning_interval.pv_b_forecast_raw_w IS
|
||
'FVE pole B – výkon z DB před rolling korekcí forecastu.';
|
||
COMMENT ON COLUMN ems.planning_interval.pv_a_forecast_solver_w IS
|
||
'FVE pole A – výkon po korekci (vstup do solve_dispatch).';
|
||
COMMENT ON COLUMN ems.planning_interval.pv_b_forecast_solver_w IS
|
||
'FVE pole B – výkon po korekci (vstup do solve_dispatch).';
|
||
|
||
CREATE TABLE IF NOT EXISTS ems.baseline_load_forecast_accuracy (
|
||
site_id INT NOT NULL REFERENCES ems.site(id),
|
||
interval_start TIMESTAMPTZ NOT NULL,
|
||
planning_run_id INT NOT NULL REFERENCES ems.planning_run(id),
|
||
forecast_baseline_w INT,
|
||
actual_baseline_w INT,
|
||
error_w INT,
|
||
error_pct NUMERIC(8,4),
|
||
lead_time_hours NUMERIC(6,2),
|
||
filled_at TIMESTAMPTZ NOT NULL DEFAULT now(),
|
||
PRIMARY KEY (site_id, interval_start)
|
||
);
|
||
|
||
COMMENT ON TABLE ems.baseline_load_forecast_accuracy IS
|
||
'Zpětná kontrola: plánovaný bazální výkon vs. skutečnost (load - EV - TČ za 15min z auditu).';
|
||
COMMENT ON COLUMN ems.baseline_load_forecast_accuracy.forecast_baseline_w IS 'Vstup z planning_interval při uložení plánu.';
|
||
COMMENT ON COLUMN ems.baseline_load_forecast_accuracy.actual_baseline_w IS 'Skutečný bazál W (shodná definice jako fn_update_baseline_stats).';
|
||
COMMENT ON COLUMN ems.baseline_load_forecast_accuracy.lead_time_hours IS 'Hodiny mezi created_at plánu a začátkem intervalu.';
|
||
|