prop/lib/microwaveprop/radio
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
..
adif_import.ex CSV/ADIF import: upsert existing contacts on grid/mode refinement 2026-04-16 10:57:37 -05:00
band_resolver.ex Rename 9cm band 3456 → 3400 2026-04-16 12:40:38 -05:00
callsign_client.ex Drop gridmap.org dependency, resolve callsigns locally 2026-04-12 17:43:29 -05:00
contact.ex Rename 9cm band 3456 → 3400 2026-04-16 12:40:38 -05:00
contact_edit.ex Rename 9cm band 3456 → 3400 2026-04-16 12:40:38 -05:00
csv_import.ex feat(import): async CSV import with progress-tracking schema 2026-04-17 09:31:22 -05:00
edit_notifier.ex Send mail as prop@w5isp.com with reply-to graham@mcintire.me 2026-04-12 14:00:38 -05:00
enrichment_status.ex Add dialyzer specs and types across the codebase 2026-04-12 08:55:04 -05:00
import_matcher.ex CSV/ADIF import: upsert existing contacts on grid/mode refinement 2026-04-16 10:57:37 -05:00
import_run.ex feat(import): async CSV import with progress-tracking schema 2026-04-17 09:31:22 -05:00
maidenhead.ex Add /beacons CRUD and /users admin page 2026-04-08 12:01:45 -05:00