-- =============================================================
-- R__vw_energy_flows.sql
-- Denní agregace 6 základních Wh + 7 směrových toků z audit_interval
-- Repeatable migration (závisí na audit_interval + V042 sloupcech)
-- =============================================================

DROP VIEW IF EXISTS ems.vw_energy_flows_daily CASCADE;

CREATE VIEW ems.vw_energy_flows_daily AS
SELECT
    site_id,
    (date_trunc('day', interval_start AT TIME ZONE 'Europe/Prague'))::date AS day_local,
    ROUND(SUM(COALESCE(actual_pv_production_wh, 0)) / 1000, 3)       AS pv_production_kwh,
    ROUND(SUM(COALESCE(actual_grid_import_wh, 0)) / 1000, 3)         AS grid_import_kwh,
    ROUND(SUM(COALESCE(actual_grid_export_wh, 0)) / 1000, 3)        AS grid_export_kwh,
    ROUND(SUM(COALESCE(actual_batt_charge_wh, 0)) / 1000, 3)          AS batt_charge_kwh,
    ROUND(SUM(COALESCE(actual_batt_discharge_wh, 0)) / 1000, 3)     AS batt_discharge_kwh,
    ROUND(SUM(COALESCE(actual_load_consumption_wh, 0)) / 1000, 3)   AS load_kwh,
    ROUND(SUM(COALESCE(flow_pv_to_load_wh, 0)) / 1000, 3)           AS pv_to_load_kwh,
    ROUND(SUM(COALESCE(flow_pv_to_batt_wh, 0)) / 1000, 3)           AS pv_to_batt_kwh,
    ROUND(SUM(COALESCE(flow_pv_to_grid_wh, 0)) / 1000, 3)           AS pv_to_grid_kwh,
    ROUND(SUM(COALESCE(flow_batt_to_load_wh, 0)) / 1000, 3)         AS batt_to_load_kwh,
    ROUND(SUM(COALESCE(flow_batt_to_grid_wh, 0)) / 1000, 3)         AS batt_to_grid_kwh,
    ROUND(SUM(COALESCE(flow_grid_to_load_wh, 0)) / 1000, 3)        AS grid_to_load_kwh,
    ROUND(SUM(COALESCE(flow_grid_to_batt_wh, 0)) / 1000, 3)         AS grid_to_batt_kwh
FROM ems.audit_interval
GROUP BY
    site_id,
    (date_trunc('day', interval_start AT TIME ZONE 'Europe/Prague'))::date;

COMMENT ON VIEW ems.vw_energy_flows_daily IS
'Denní součty energie a modelovaných toků (prioritní alokace z fn_fill_audit_interval). kWh z Wh sloupců.';
