Snapshot radar image at alert time #85
Labels
No labels
area:ai
area:ci-cd
area:notifications
area:observability
area:public-pages
backlog
bug
duplicate
enhancement
help wanted
invalid
question
type:decision
type:feature
type:infra
type:maintenance
type:security
v1.0.1
v1.1.0
v1.2.0
v1.3.0
v2.0.0
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
rbrooks/WeatherBot#85
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Capture the radar image when an alert fires and attach it to the alert record, so both the public page and the future Historical Explorer can show conditions at the moment, not just live radar. Missed because radar was framed as a live/on-demand view. Effort M, value Medium — but it's an enabler for #22 (you can't reconstruct history you didn't snapshot), so its value is front-loaded: the sooner it lands, the more history the explorer will have.
Filed from the 2026-07-17 codebase audit (
docs/.internal/report-2026-07-17.md), finding I-15.Done in #114 (merged). Opt-in via
ALERT_RADAR_SNAPSHOT_ENABLED(default off). When on, the first time an alert fires for a location, the current radar PNG is captured (best-effort, in a tracked background task fully decoupled from dispatch — a failure just logs and leaves the columns null) and attached to the dashboardSentAlertrecord (radar_snapshot_path+radar_snapshot_at, migration 0027). Served viaGET /media/alert-radar/{id}.png(immutable TTL, traversal-guarded) and shown as a "Radar at alert time" panel on the public alert page. Orphan snapshot files are reclaimed by the daily retention job. This front-loads history capture for the v2.0.0 Explorer (#22) — the sooner it's enabled, the more it accumulates. Assumesradar_cache_diris a persistent volume (as the SPC cache already is).