second version
This commit is contained in:
30
db/migration/V020__ev_arrival_stats.sql
Normal file
30
db/migration/V020__ev_arrival_stats.sql
Normal 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;
|
||||
Reference in New Issue
Block a user