second version

This commit is contained in:
Dusan Vojacek
2026-04-03 14:23:16 +02:00
parent 897b95f728
commit 9f4126946d
105 changed files with 9738 additions and 1470 deletions

View File

@@ -0,0 +1,30 @@
-- 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;