prop/lib/microwaveprop_web/live
Graham McIntire 48833f15be
feat(import): async CSV import with progress-tracking schema
For large CSVs (e.g. the 34k-row ARRL dump), the synchronous commit
path blocked for minutes and a crash mid-commit left no audit trail.
Refactor to run inserts + enrichment enqueues via Oban.

- New import_runs table: stores preview rows + running counters (total,
  processed, imported, refined, error) + status + errors map + timing.
- New :contact_import Oban queue (limit 4) + ContactImportWorker.
  Args: {import_run_id, offset, limit}. Each chunk (100 rows) inserts
  its slice via CsvImport.commit_rows/1, atomically increments counters
  in one update_all, flips status, and broadcasts progress on
  'csv_import:<id>' PubSub topic.
- CsvImport.commit_rows/1 extracted from commit/1 (back-compat preserved).
  New CsvImport.enqueue/2 persists the run + dispatches N chunk jobs.

Also: submit page copy updated from '902 MHz and up' to '50 MHz and up'
matching the band allowlist expansion done earlier.

LiveView UI for /imports/:id is a separate commit.
2026-04-17 09:31:22 -05:00
..
admin Disable PDF export on live_table pages 2026-04-16 12:25:25 -05:00
beacon_live Disable PDF export on live_table pages 2026-04-16 12:25:25 -05:00
contact_live refactor: normalize pos1/pos2 JSONB key to 'lon' everywhere 2026-04-17 09:10:32 -05:00
user_management_live Disable PDF export on live_table pages 2026-04-16 12:25:25 -05:00
about_live.ex Rename ERA5 → NARR across the codebase 2026-04-16 09:22:23 -05:00
algo_live.ex Merge auth links into main nav and lower password min to 8 2026-04-08 10:39:51 -05:00
contact_map_live.ex Rename 9cm band 3456 → 3400 2026-04-16 12:40:38 -05:00
map_live.ex feat(map): show CONUS-only banner for visitors outside continental US 2026-04-17 08:39:51 -05:00
path_live.ex Add 50/144/222 MHz bands, rename 440→432 2026-04-16 12:36:10 -05:00
privacy_live.ex Trim footer and privacy copy 2026-04-09 12:30:10 -05:00
rover_live.ex Remove grid squares toggle from rover planner page 2026-04-10 17:31:23 -05:00
status_live.ex fix(status): align NARR done-count tolerance with fetcher snap 2026-04-16 15:14:51 -05:00
submit_live.ex feat(import): async CSV import with progress-tracking schema 2026-04-17 09:31:22 -05:00
user_profile_live.ex Cap "Contacts I'm in" at 100 most recent 2026-04-12 17:04:11 -05:00
weather_map_live.ex WeatherMap: legend in top-right, description back in sidebar, play/stop, fix reload loop 2026-04-15 14:11:53 -05:00