prop/lib/microwaveprop/propagation
Graham McIntire a4f0e171e8
feat(rover-planning): worker pre-computes full /path output, PathLive renders cached
Three connected changes:

1) Extract PathLive.compute_path/4 + every helper it owned (resolve,
   profile grid lookup, sounding/ionosphere readouts, scoring, loss /
   power budgets) into Microwaveprop.Propagation.PathCompute. PathLive
   now delegates; ~410 lines of dead helpers deleted from PathLive.

2) RoverPathProfileWorker calls PathCompute.compute/4 with the
   mission's heights and PathLive's default station params (10 W TX,
   30 dBi gains). Stores the full atom-keyed compute output as a
   Base64-encoded :erlang.term_to_binary/1 blob alongside the flat
   summary fields the rover-planning show table reads. The blob
   roundtrips structs and DateTime exactly (Jason.encode would lose
   them).

3) PathLive accepts ?rover_path_id=UUID. When set, loads the cached
   Path, decodes the term (binary_to_term :safe), assigns it as
   @result, and renders normally — no compute_path call. The
   rover-planning show table now links rows directly to
   /path?rover_path_id=UUID, so a click opens the full Path
   Calculator UI from cached data without re-running terrain / HRRR /
   sounding lookups.

Bonus prod fixes folded in:
- PathShow's elevation chart attribute (data-* → data-profile JSON)
  was crashing the JS hook with 'unexpected character at line 1'.
- Station.changeset now wipes previously-resolved callsign/grid/
  lat/lon when the user types into :input — typing 'AA5' early
  resolved to a wrong location and locked it; subsequent keystrokes
  never re-resolved.
- phx-debounce=600 on the station input so QRZ doesn't get hit on
  every keystroke.
2026-05-03 14:58:16 -05:00
..
band_config.ex chore(scorer): apply recalibrated factor weights from gradient descent fit 2026-04-28 14:41:50 -05:00
common_volume.ex refactor: deduplicate helpers and simplify Scorer 2026-04-28 14:14:34 -05:00
duct.ex Fix all remaining credo --strict issues (0 issues) 2026-04-12 10:26:53 -05:00
eme.ex feat(eme): add /eme Earth-Moon-Earth calculator 2026-04-23 16:18:20 -05:00
freshness_monitor.ex perf+hygiene: batch 1 of system-review fixes 2026-04-21 17:06:07 -05:00
grid.ex feat(hrdps): grid_tasks source column, Canadian mask, HrdpsGridWorker 2026-04-29 17:13:00 -05:00
grid_task_enqueuer.ex feat(hrdps): scope to current-hour-only at 0.5° step 2026-04-30 10:36:00 -05:00
hf_muf.ex HfMuf physics: distance-adjusted MUF from GIRO MUFD(3000) 2026-04-15 14:59:39 -05:00
inversion.ex Add dialyzer specs and types across the codebase 2026-04-12 08:55:04 -05:00
mechanism_classifier.ex feat(propagation): per-contact mechanism classification 2026-04-18 10:42:08 -05:00
mode_thresholds.ex feat(rover): add ModeThresholds for SSB/CW/Q65 SNR table 2026-04-25 15:59:52 -05:00
moon_ephemeris.ex feat(propagation): per-contact mechanism classification 2026-04-18 10:42:08 -05:00
notify_listener.ex perf(weather): serve /weather from chunked scalar artifacts 2026-04-28 17:15:36 -05:00
path_compute.ex feat(rover-planning): worker pre-computes full /path output, PathLive renders cached 2026-05-03 14:58:16 -05:00
pipeline_status.ex feat(map): shareable URL params for view/band/time 2026-04-19 08:53:07 -05:00
profiles_file.ex fix(path): single grid decode + zero-downtime rust-worker rollouts 2026-04-25 16:57:00 -05:00
rain_scatter.ex refactor: deduplicate helpers and simplify Scorer 2026-04-28 14:14:34 -05:00
rain_scatter_classifier.ex feat(rainscatter): classify QSO propagation mechanism from common-volume radar 2026-04-17 15:57:59 -05:00
recalibrator.ex fix(prod-build): silence Nx.* undefined warnings in dev/test-only modules 2026-04-30 12:19:16 -05:00
region.ex fix: April 2026 codebase review — address 13 bugs across propagation chain 2026-04-25 10:52:51 -05:00
run_timing.ex fix(dialyzer): actually fix LiveTable warnings instead of hiding them 2026-04-21 12:58:10 -05:00
score_cache.ex perf(map): chunk-keyed ScoreCache for viewport reads 2026-04-29 16:47:03 -05:00
scorer.ex refactor: deduplicate helpers and simplify Scorer 2026-04-28 14:14:34 -05:00
scores_file.ex feat(hrdps): activate Canadian propagation chain end-to-end 2026-04-29 17:29:37 -05:00
sporadic_e.ex Add 50/144/222 MHz bands, rename 440→432 2026-04-16 12:36:10 -05:00