feat(ev): geofence arrival trigger (default-off)

ev_vehicle_obs.trigger += 'geofence_arrival' (V109); presence cesta zapíše příjezd
i bez píchnutí (za flagem EV_GEOFENCE_ARRIVAL_OBS_ENABLED, default OFF); fn_ev_build_trips
páruje. Constraint name ověřen živě. Worktree agent.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Dusan Vojacek
2026-06-14 22:55:17 +02:00
parent a32839bf67
commit fc6d9833a7
3 changed files with 115 additions and 1 deletions

View File

@@ -0,0 +1,26 @@
-- Geofence arrival trigger pro EV pozorování.
--
-- Dosud arrival obs (ems.ev_vehicle_obs) vznikalo JEN z wallboxu (plug-in přes
-- fn_ev_session_transition). Když uživatel nepíchne, jízda se nezaznamenala a
-- spotřební forecast (ev_trip → ev_usage_stats) o ní nevěděl.
--
-- Telemetry_collector už dnes z Tesla polohy (geofence, scope location, BEZ
-- buzení auta) detekuje přechod pryč→domů do ems.ev_presence_obs. Tato migrace
-- rozšiřuje povolené hodnoty ev_vehicle_obs.trigger o 'geofence_arrival', aby
-- presence cesta mohla zapsat příjezd i bez píchnutí do wallboxu.
--
-- Zpětná kompatibilita: stávající hodnoty 'arrival' / 'departure' / 'manual'
-- zůstávají platné; přidává se jen nová hodnota. Žádná data se nemění.
-- Párování jízd (fn_ev_build_trips) bere 'geofence_arrival' jako platný arrival
-- (R__096); wallbox 'arrival' zůstává autoritativní, geofence je doplněk pro
-- případy, kdy auto stojí doma nepíchnuté.
alter table ems.ev_vehicle_obs
drop constraint if exists ev_vehicle_obs_trigger_check;
alter table ems.ev_vehicle_obs
add constraint ev_vehicle_obs_trigger_check
check (trigger in ('arrival', 'departure', 'manual', 'geofence_arrival'));
comment on column ems.ev_vehicle_obs.trigger is
'Zdroj pozorování: arrival/departure z wallboxu (plug-in/out, autoritativní), manual ruční, geofence_arrival z Tesla polohy (přijel domů, nepíchnutý — auto vzhůru, čtení nebudí). geofence_arrival se páruje jako příjezd v fn_ev_build_trips.';