fleet-platform/db/migrations
kianiadee 419c030761
Some checks are pending
build / lint-test (push) Waiting to run
build / build-push (push) Blocked by required conditions
Trip detection backend: serve.fn_vehicle_trips + JSON/CSV endpoints
Migration 19: serve.fn_vehicle_trips(vehicle_id, date) — PL/pgSQL state
machine that walks state.position_history for one vehicle on one EAT day
and emits the trip breakdown. Rules:

  - reporting_time = first ACC_ON of the day
  - trip starts at ACC_ON (or first fix if already ACC_ON / moving)
  - trip ends:
      * ACC_OFF + stationary (<5 km/h) for >=5 min  → end_reason 'work_stop'
      * fix gap >30 min                              → end_reason 'long_gap'
      * end of day's data                            → end_reason 'day_end'
  - within a trip, ACC_ON + stationary >=5 min is logged as an idling
    segment (no trip split — engine still on)
  - distance only accumulates when speed >= 5 km/h (excludes GPS jitter)
  - falls back to movement-only segmentation when acc_state is null
    across the day (has_acc_data=false in the response)

Returns one jsonb document: vehicle, date, reporting_time, day totals
(distance, driving/idling/stopped/unknown minutes), data_quality flags,
trips[] with start/end/duration/distance/idling/end_reason/stops/path
where path is a GeoJSON LineString ready for the map.

New endpoints (read:fleet, rate-limited):
  GET /api/views/vehicle/{id}/trips?date=YYYY-MM-DD       JSON
  GET /api/views/vehicle/{id}/trips.csv?date=YYYY-MM-DD   one row per trip

Defaults date to today in EAT (UTC+3) regardless of host TZ.
2026-05-27 12:24:00 +03:00
..
20260601000001_init_schemas.sql Phase 1 — foundation, push gateway, parser, projector, live view, frontend 2026-05-23 00:53:42 +03:00
20260601000002_events.sql Phase 1 — foundation, push gateway, parser, projector, live view, frontend 2026-05-23 00:53:42 +03:00
20260601000003_domain.sql Phase 1 — foundation, push gateway, parser, projector, live view, frontend 2026-05-23 00:53:42 +03:00
20260601000004_state_live.sql Phase 1 — foundation, push gateway, parser, projector, live view, frontend 2026-05-23 00:53:42 +03:00
20260601000005_slo.sql Phase 1 — foundation, push gateway, parser, projector, live view, frontend 2026-05-23 00:53:42 +03:00
20260601000006_auth.sql Phase 1 — foundation, push gateway, parser, projector, live view, frontend 2026-05-23 00:53:42 +03:00
20260601000007_serve_fn_live_view.sql Phase 1 — foundation, push gateway, parser, projector, live view, frontend 2026-05-23 00:53:42 +03:00
20260601000008_live_positions_richer.sql UI: arrow + plate-short label + cost-centre marker palette + hover popup; richer state.live_positions + serve.fn_live_view v2; multi-target poll plumbing 2026-05-23 09:29:04 +03:00
20260601000009_serve_fn_live_view_v2.sql UI: arrow + plate-short label + cost-centre marker palette + hover popup; richer state.live_positions + serve.fn_live_view v2; multi-target poll plumbing 2026-05-23 09:29:04 +03:00
20260601000010_geocoded_positions.sql Geocoder: cron job + state.geocoded_positions; label uses device_name last 4 (fallback plate); popup address row 2026-05-23 23:06:25 +03:00
20260601000011_serve_fn_live_view_v3.sql Geocoder: cron job + state.geocoded_positions; label uses device_name last 4 (fallback plate); popup address row 2026-05-23 23:06:25 +03:00
20260601000012_label_short_from_plate.sql Migration: serve._label_short() extracts plate-tail (handles 'Driver - KDW 573B_cam' patterns) 2026-05-23 23:11:20 +03:00
20260601000013_driver_from_device_name.sql _driver_name: also exclude garage/workshop/service placeholders 2026-05-23 23:16:17 +03:00
20260601000014_real_plates_consolidate.sql Plate consolidation migration + projector links new devices to existing plates; SLO measurement worker (task #12) 2026-05-23 23:42:45 +03:00
20260601000017_rollback_csv_import.sql Rollback CSV roster import (mig 17): re-split vehicles, drop CSV columns 2026-05-25 00:41:32 +03:00
20260601000018_ops_contract_check_log.sql Contract checker (#13, PRD F1.10) + contract_drift_days SLO 2026-05-27 11:58:29 +03:00
20260601000019_fn_vehicle_trips.sql Trip detection backend: serve.fn_vehicle_trips + JSON/CSV endpoints 2026-05-27 12:24:00 +03:00