prop/test/microwaveprop/radio
Graham McIntire 44b169b234 CSV upload preview with duplicate detection before commit
Uploads now show a review page with three summary cards (valid,
duplicates, invalid), tables for invalid and duplicate rows, and a
sample of the first 20 valid rows. Nothing is written to the database
until the user clicks "Looks good — submit N contacts".

Duplicate detection treats two rows as the same contact if they share
the same pair of (callsign, grid) tuples (direction-agnostic), the
same band, and timestamps within 60 minutes. Dedup runs against both
existing DB contacts (single band/time-scoped query) and earlier rows
in the same upload, and the preview labels which side matched.

CsvImport grows preview/2 + commit/1; the old import/2 is kept as a
thin backward-compat wrapper that skips dedup. Added 11 new CsvImport
tests and reworked the SubmitLive CSV tests for the two-step flow.
2026-04-09 12:30:10 -05:00
..
contact_submission_test.exs Rename qsos to contacts throughout codebase, keep DB table name 2026-04-01 11:25:04 -05:00
contact_test.exs Rename qsos to contacts throughout codebase, keep DB table name 2026-04-01 11:25:04 -05:00
csv_import_test.exs CSV upload preview with duplicate detection before commit 2026-04-09 12:30:10 -05:00
enrichment_status_test.exs Add Tier 1 test coverage: EnrichmentStatus, Markdown, health, RemoteIp, Maidenhead 2026-04-06 10:15:38 -05:00
maidenhead_test.exs Add /beacons CRUD and /users admin page 2026-04-08 12:01:45 -05:00