prop/config
Graham McIntire b08fc5e449
feat(pskr): rolling-window calibration sampling, every 5 min
Old design fired hourly at HH:25 and built one whole hour of cells
in a single batch. During PSKR peaks (50k+ spots/hour) that batch
held the DB pool long enough to look like a backlog, and a pod
restart between fires lost a full hour because the next cron only
caught the most-recent-prev hour.

- Default window is now current hour + 1 prior. Every 5-min fire
  spreads work across the in-flight hour and always covers the
  boundary without waiting for the next cron tick.
- lookback_hours arg widens the window for catch-up
  (e.g. {"lookback_hours": 24} sweeps the last day after an
  outage).
- Unique period 3600 → 240 so consecutive 5-min cron fires actually
  slot in.

UPSERT is already idempotent so the ~12 redundant passes per hour
cost only the read+merge. Latency from spot ingestion to sample
creation drops from up-to-60min to ≤5min.
2026-05-04 16:46:59 -05:00
..
config.exs docs(oban): expand :rover_path slot-1 rationale with memory budget 2026-05-03 15:47:42 -05:00
dev.exs feat(aprs): add read-only AprsRepo for aprs.me database access 2026-05-01 12:25:33 -05:00
prod.exs Configure outbound SMTP email via Swoosh with TLS 2026-04-02 13:08:50 -05:00
runtime.exs feat(pskr): rolling-window calibration sampling, every 5 min 2026-05-04 16:46:59 -05:00
test.exs chore: delete dead RTMA + METAR5 code paths 2026-05-04 15:09:19 -05:00