prop/lib/microwaveprop/workers
Graham McIntire 2c88fba1df
feat(rover-planning): multi-band missions + smart reconcile
Mission now carries bands_mhz ({:array, :integer}) — operator picks
one or more bands as multi-checkboxes. enqueue_paths_for builds the
cross product (rover x station x band) and persists each tuple as its
own Path row keyed by (mission_id, rover_location_id, station_id,
band_mhz). The path-profile worker reads band_mhz from the path
itself (legacy single-band jobs without band_mhz in args still resolve
to their unique row).

replace_mission_paths/1 is now a thin alias for reconcile_mission_paths/1
which diffs desired vs actual: stale tuples (old band that the user
unchecked, station they removed, rover-site they deleted) get dropped,
new tuples become :pending and enqueue, surviving :complete rows are
left in place — no more wholesale destruction of already-computed
paths on every edit.

The show table gains a Band column, and band_label() in the mission
summary becomes bands_label() (joins the list with commas).
2026-05-03 14:08:49 -05:00
..
admin_task_worker.ex fix(review): address code-reviewer findings 2026-04-21 10:09:46 -05:00
backfill_enqueue_worker.ex fix(hrrr): mark contacts :unavailable on failed fetch tasks 2026-04-22 17:46:51 -05:00
canadian_sounding_fetch_worker.ex fix(dialyzer): clear 125+ warnings under strict flags 2026-04-21 10:30:06 -05:00
common_volume_radar_worker.ex perf+hygiene: batch 1 of system-review fixes 2026-04-21 17:06:07 -05:00
contact_import_worker.ex perf+hygiene: batch 1 of system-review fixes 2026-04-21 17:06:07 -05:00
contact_position_backfill_worker.ex test: override stale distance_km when filling a missing pos 2026-04-16 14:09:45 -05:00
contact_weather_enqueue_worker.ex fix(weather): reconcile hrrr_status + iemre_status stuck in :queued 2026-04-24 13:38:52 -05:00
gefs_fetch_worker.ex fix: log swallowed async task exits in GEFS scoring and HRRR range fetch 2026-04-27 14:22:10 -05:00
grid_cache_prune_worker.ex feat(workers): add GridCachePruneWorker 2026-04-21 13:19:52 -05:00
hrdps_grid_worker.ex feat(hrdps): scope to current-hour-only at 0.5° step 2026-04-30 10:36:00 -05:00
hrrr_native_grid_worker.ex refactor(db): use explicit on_conflict set clauses over :replace_all_except 2026-04-21 14:22:15 -05:00
iemre_fetch_worker.ex test: expand coverage and refactor to idiomatic style 2026-04-23 13:28:42 -05:00
ionosphere_fetch_worker.ex perf+hygiene: batch 1 of system-review fixes 2026-04-21 17:06:07 -05:00
mechanism_classify_worker.ex fix(workers): propagate transient errors so Oban retries + counters fire 2026-04-21 13:15:27 -05:00
narr_fetch_worker.ex fix(dialyzer): clear 125+ warnings under strict flags 2026-04-21 10:30:06 -05:00
nexrad_worker.ex refactor(db): use explicit on_conflict set clauses over :replace_all_except 2026-04-21 14:22:15 -05:00
propagation_grid_worker.ex feat(prop): adaptive HRRR cycle selection — prefer fresh, fall back if late 2026-04-24 19:44:07 -05:00
propagation_prune_worker.ex fix(propagation): hourly grid chain preempts MRMS/prune backlog 2026-04-19 08:42:22 -05:00
radar_frame_worker.ex refactor(db): use explicit on_conflict set clauses over :replace_all_except 2026-04-21 14:22:15 -05:00
rover_mission_backfill_worker.ex feat(rover-planning): hourly backfill worker recovers stuck paths 2026-05-03 13:52:27 -05:00
rover_path_profile_worker.ex feat(rover-planning): multi-band missions + smart reconcile 2026-05-03 14:08:49 -05:00
rtma_fetch_worker.ex fix(workers): unique dedup on polling workers so queued dups don't stack 2026-04-21 14:12:43 -05:00
solar_index_worker.ex fix(dialyzer): clear 125+ warnings under strict flags 2026-04-21 10:30:06 -05:00
space_weather_fetch_worker.ex SpaceWeather: SWPC JSON ingestion (Kp, F10.7, GOES X-ray) 2026-04-15 14:55:24 -05:00
station_elevation_worker.ex feat(rover): Oban worker enriches station elevation post-insert 2026-04-25 16:26:33 -05:00
terrain_profile_worker.ex fix(dialyzer): clear 125+ warnings under strict flags 2026-04-21 10:30:06 -05:00
user_home_qth_lookup_worker.ex feat(accounts): auto-prefill home QTH from QRZ on register + backfill on boot 2026-04-25 17:03:01 -05:00
weather_fetch_worker.ex perf(weather): asos_day — one job per unique (station, UTC date) 2026-04-24 13:19:20 -05:00