-- Statistika příjezdů EV (den v týdnu × hodina); plní telemetry_collector při přechodu available → nabíjení.

CREATE TABLE ems.ev_arrival_stats (
    id              SERIAL PRIMARY KEY,
    site_id         INT NOT NULL REFERENCES ems.site(id),
    vehicle_id      INT REFERENCES ems.asset_vehicle(id),
    charger_id      INT NOT NULL REFERENCES ems.asset_ev_charger(id),
    day_of_week     INT NOT NULL,
    arrival_hour    INT NOT NULL,
    sample_count    INT NOT NULL DEFAULT 0,
    last_updated    TIMESTAMPTZ NOT NULL DEFAULT now(),
    CONSTRAINT chk_ev_arrival_stats_dow CHECK (day_of_week >= 0 AND day_of_week <= 6),
    CONSTRAINT chk_ev_arrival_stats_hour CHECK (arrival_hour >= 0 AND arrival_hour <= 23),
    UNIQUE (site_id, charger_id, day_of_week, arrival_hour)
);

CREATE INDEX idx_ev_arrival_stats_site_charger
    ON ems.ev_arrival_stats (site_id, charger_id);

COMMENT ON TABLE ems.ev_arrival_stats IS
'Statistika příjezdů EV dle dne v týdnu a hodiny (časová zóna Europe/Prague).
Plní se z ev_session / telemetrie při detekci připojení (available → preparing/charging).
Po ~4 týdnech dat lze odhadovat typickou hodinu příjezdu.';

-- Nejvýše jedna otevřená session na nabíječku (pro INSERT … ON CONFLICT při startu session).
CREATE UNIQUE INDEX uidx_ev_session_charger_open
    ON ems.ev_session (charger_id)
    WHERE session_end IS NULL;

GRANT SELECT ON ems.ev_arrival_stats TO ems_anon;
