prop/lib/microwaveprop_web/live
Graham McIntire 33f5d4edbe
feat(rainscatter): classify QSO propagation mechanism from common-volume radar
Adds a per-contact enrichment pipeline that determines whether a QSO was
most likely carried by rain scatter, tropospheric ducting, or ordinary
troposcatter — using IEM n0q composite reflectivity sampled inside the
lens-shaped intersection of 400 km-radius disks around each endpoint.

Pieces:
  * Microwaveprop.Propagation.CommonVolume — lens geometry (haversine,
    in-CV test, bbox, area).
  * contact_common_volume_radar table (1:1 per contact) storing
    aggregate dBZ stats inside the CV + radar_status column on contacts.
  * Microwaveprop.Workers.CommonVolumeRadarWorker — Oban :radar queue,
    fetches the n0q frame at QSO time, iterates pixels inside the CV
    bbox, aggregates rain/heavy/core-pixel counts, max/mean dBZ, and
    coverage percentage.
  * Microwaveprop.Propagation.RainScatterClassifier — rule-based mapper
    from (band, distance, radar stats, duct flags) to one of
    :likely_rainscatter | :rainscatter_possible | :tropo_duct |
    :troposcatter | :unknown.
  * ContactWeatherEnqueueWorker learns a :radar enrichment type and
    enqueues the CV worker on contact submission; pre-2014 contacts
    (outside IEM n0q coverage) are pinned to :unavailable.
  * `mix radar_backfill` bulk-enqueues historical contacts with
    --year / --limit / --dry-run.
  * Contact detail page renders a mechanism badge with supporting
    stats (common-volume area, max dBZ, heavy-rain pixel count,
    coverage %).
2026-04-17 15:57:59 -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 feat(rainscatter): classify QSO propagation mechanism from common-volume radar 2026-04-17 15:57:59 -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 perf(contact-map): client-side band filtering via per-band layer groups 2026-04-17 12:08:46 -05:00
import_live.ex feat(import): fire confetti when the complete banner appears 2026-04-17 10:01:18 -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): live /imports/:id progress page + gate upload bars on submit 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 fix(weather-map): default timeline cursor to the hour closest to now 2026-04-17 15:57:59 -05:00