prop/test/microwaveprop/weather
Graham McIntire c073c6a95a
perf(weather): batch ASOS fetches into one multi-station request
IEM's ASOS CSV endpoint accepts multiple station= params in a single
request. Prior code enqueued one WeatherFetchWorker job per nearby
station per QSO endpoint — N jobs × 1 station each — which paid the
IemRateLimiter's 1500ms gap and the IEM 429-retry tail N times per
contact.

Changes:
- IemClient.asos_url/3 accepts a list of station codes.
- IemClient.fetch_asos_batch/3 fetches N stations in one call and
  returns rows grouped by station_code (with absent codes filled as
  empty lists so callers can stub them).
- parse_asos_csv/1 now exposes the station_code column it was
  previously discarding.
- WeatherFetchWorker gains an "asos_batch" fetch_type clause that
  unpacks rows per (station_id, station_code), upserting or stubbing
  each. The single-station "asos" clause stays for already-queued
  retryable jobs.
- ContactWeatherEnqueueWorker.build_asos_jobs/3 now emits one batch
  job per (lat, lon, 4h window) covering every uncovered nearby
  station (sorted for deterministic unique-args).

Expected effect on backfill: ~10-20x fewer IEM requests per contact
enrichment cycle, matching drop in 429 retry traffic.
2026-04-24 12:44:22 -05:00
..
grib2 test: pin GRIB2 Section parsing to its full contract 2026-04-23 15:56:38 -05:00
frontal_analysis_test.exs Fix credo warnings: struct specs, length/1, and test patterns 2026-04-12 10:26:53 -05:00
gefs_client_test.exs test: coverage round 1 (80.45% → 82.05%) + 12 new property tests 2026-04-24 10:15:37 -05:00
gefs_profile_test.exs feat(gefs): scaffold extended-horizon forecast ingestion 2026-04-18 14:28:44 -05:00
grid_cache_test.exs feat(observability): emit telemetry for NotifyListener warm + GridCache hit/miss 2026-04-21 13:30:26 -05:00
grid_snap_property_test.exs test: add property coverage for grid snaps, backoff, notes 2026-04-23 13:05:06 -05:00
hrrr_client_test.exs test: coverage round 1 (80.45% → 82.05%) + 12 new property tests 2026-04-24 10:15:37 -05:00
hrrr_native_client_test.exs test: coverage round 4 (84.39% → 84.44%) + 6 new property tests 2026-04-24 10:32:05 -05:00
hrrr_native_profile_test.exs Extend skew-T plot to cover the full troposphere 2026-04-14 17:25:58 -05:00
hrrr_profile_test.exs Partition hrrr_profiles by valid_time for query performance 2026-04-01 11:03:33 -05:00
iem_client_test.exs perf(weather): batch ASOS fetches into one multi-station request 2026-04-24 12:44:22 -05:00
iem_rate_limiter_test.exs perf(weather): token-bucket IEM limiter + parallel HRRR surface/pressure 2026-04-19 12:57:30 -05:00
iemre_observation_test.exs Add IEM precipitation data to QSO weather pipeline 2026-03-30 13:18:11 -05:00
narr_client_test.exs fix(narr): handle cdo 2.5.1 mixed name/code output 2026-04-16 15:14:51 -05:00
ncei_metar_client_test.exs test: coverage round 3 (83.96% → 84.39%) + 10 new property tests 2026-04-24 10:15:37 -05:00
nexrad_cache_test.exs perf(nexrad): route fetch_decoded_frame through NexradCache 2026-04-19 09:05:55 -05:00
nexrad_client_test.exs test: coverage round 4 (84.39% → 84.44%) + 6 new property tests 2026-04-24 10:32:05 -05:00
nexrad_observation_test.exs Phase 9.3, 9.4, and Phase 3 NEXRAD pipeline 2026-04-10 12:48:36 -05:00
rtma_client_test.exs test: coverage round 3 (83.96% → 84.39%) + 10 new property tests 2026-04-24 10:15:37 -05:00
solar_client_test.exs test: cover Format.number/bytes, Instrument.span, SolarClient edges 2026-04-23 14:09:13 -05:00
sounding_params_property_test.exs test: coverage round 2 (82.05% → 83.96%) + 23 new property tests 2026-04-24 10:15:37 -05:00
sounding_params_test.exs Fix credo warnings: struct specs, length/1, and test patterns 2026-04-12 10:26:53 -05:00
sounding_test.exs Add weather data schema, context, sounding params, and IEM ingestion 2026-03-28 15:57:19 -05:00
station_test.exs Add weather data schema, context, sounding params, and IEM ingestion 2026-03-28 15:57:19 -05:00
surface_observation_test.exs Add IEM precipitation data to QSO weather pipeline 2026-03-30 13:18:11 -05:00
theta_e_test.exs Phase 2 tasks 2.1-2.4: BL turbulence feature computations 2026-04-10 08:21:23 -05:00
uwyo_sounding_client_test.exs test: broaden coverage across parsers, schemas, and pure helpers 2026-04-23 13:56:29 -05:00
weather_layers_test.exs Add WeatherLayers module for deriving upper-air map fields from HRRR profiles 2026-04-03 16:49:17 -05:00