fleettickets/migrations
david kiania bb38d354e5 fix(geocode): precise location geoms survive delta re-upserts (FT-BUG-01)
The tg_ticket_geom trigger resolved feed coords -> cluster centroid -> none,
never consulting tickets.geo_locations, so every 20-min delta ingest re-upserted
changed rows and downgraded previously-resolved 'location' geoms back to the
cluster centroid. Live effect: only 51 of 114k INC (and 0 of 42k CRQ) rows kept
the precise geocode the LocationIQ budget paid for.

- migration 18: trigger now resolves feed -> geo_locations (precise) -> cluster
  -> none, mirroring resolve_ticket_geoms() precedence; ends with one resolve
  pass to repair the backlog. Dry-run against the live DB (rolled back) repaired
  7,481 rows: INC location 51 -> 5,339, CRQ 0 -> 2,193.
- pipeline.ingest(): re-resolve after every applied run that ingested files, so
  geoms self-heal even before migration 18 lands.
- run_ingest.sh: chain an incremental --geocode-clusters pass (0 API calls when
  no new clusters) so new clusters map without a manual command (FT-BUG-02).
- Dockerfile/.dockerignore: pinned installs from uv.lock, non-root user (FT-SEC-02).
- 20260618_bug.txt removed (stale review of a since-rewritten file).

Numbered 18 to coexist with 17_drop_unused_geo_indexes.sql (parallel 260702
change). Audit + plan + work log in docs/260702_*. Local only; not applied to prod.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-02 09:47:15 +03:00
..
01_tickets_schema.sql feat: fleettickets — INC/CRQ ticket ingestion, geocoding + read-schema 2026-06-11 20:13:50 +03:00
02_import_meta.sql feat: INC hourly-CSV ingestion (newest-file, ETag dedup, clean + archive) 2026-06-15 19:33:16 +03:00
03_inc_columns.sql fix: address valid findings from 20260618 bug report 2026-06-18 13:41:38 +03:00
04_inc_latlng.sql feat: populate inc latitude/longitude from geocoded geom (migration 04) 2026-06-15 23:26:39 +03:00
05_inc_geography.sql feat: add geography column + GiST index for routing (migration 05) 2026-06-15 23:33:45 +03:00
06_inc_mttr_minutes.sql feat: mttr -> minutes; drop constant alarm/auto flags (migration 06) 2026-06-15 23:51:28 +03:00
07_inc_drop_service_type.sql feat: drop constant service_type column (migration 07) 2026-06-15 23:54:43 +03:00
08_inc_open_sla_view.sql feat: tickets.inc_open_sla view + lowercase legacy region 2026-06-16 00:03:55 +03:00
09_inc_dashboard_fn.sql feat: reporting.fn_inc_dashboard — INC operations dashboard read-API (migration 09) 2026-06-16 01:10:18 +03:00
10_inc_history_capture.sql feat: history capture — closure_events + daily backlog snapshot (migration 10) 2026-06-16 01:19:23 +03:00
12_inc_dashboard_by_owner.sql feat(reporting): add closure-by-engineer analytics to fn_inc_dashboard (migration 12) 2026-06-18 17:53:32 +03:00
13_inc_search_fn.sql feat(crq): dashboard parity functions (migration 16) + recover inc 13/14 2026-06-26 00:19:54 +03:00
14_inc_filter_options.sql feat(crq): dashboard parity functions (migration 16) + recover inc 13/14 2026-06-26 00:19:54 +03:00
15_crq_table.sql fix(crq): migration 15 creates tickets.crq (live DB never materialized it) 2026-06-25 23:55:17 +03:00
16_crq_dashboard.sql feat(crq): dashboard parity functions (migration 16) + recover inc 13/14 2026-06-26 00:19:54 +03:00
18_trigger_location_geom.sql fix(geocode): precise location geoms survive delta re-upserts (FT-BUG-01) 2026-07-02 09:47:15 +03:00