Explorer: event detail timeline (#139) #172
No reviewers
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!172
Loading…
Reference in a new issue
No description provided.
Delete branch "feat/explorer-event"
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?
Closes #139. The Explorer's centerpiece, stacked on the day view (#138/PR #171, merged).
What this adds
GET /explorer/event/{event_id}— the full reconstruction of one correlated event:nws_alert_snapshotsupdate with the full official text (description + instruction, collapsed<details>); an honest fallback entry from the dashboardSentAlertwhen a lifecycle predates capture ("full text not captured"); all-clear entries fromcleared_at; lightning-episode spans; context members (watches) visually distinct from cores.notification_deliveries, including failures with attempts +last_error— "we tried and it failed" is part of the historical record, per the issue.nws_watch/nws_advisoryproduct families — warning-severity products have no summary path by design (gated behind backlog #24), so the section is naturally absent for warnings.alert_radar_framesstrip (chronological); the #140 loop player slots in where marked./p/{token}timeline CSS is generalized into a shared.wb-timelineclass (alias selector — the public template needed zero changes), not forked.404 deliberately doesn't distinguish unknown-event from invisible-location (no existence leak). Archived locations render with the badge; visibility checked before any data loads. Every section is one bounded query keyed off the event's member ids — no per-member loops. MCD members render nothing yet (no lifecycle-keyed source rows exist; documented — they arrive with future SPC association work).
Review fix
One test-data bug: the delivery-rail test inserted delivered + failed rows under the same
(sent_alert, channel, kind), which the schema's UNIQUE constraint correctly rejects — surfaced by the real test infrastructure, fixed by giving the failed delivery its own channel.Verification
Full bulk suite on the dev server: 954 passed (12 new event-page tests: snapshot ordering + full text, no-snapshot fallback, all-clear entries, context-member styling, delivery rail delivered/failed, AI summary present/absent, archived badge, 404s, radar snapshot URL).
ruffclean. No migrations, no new JS.🤖 Generated with Claude Code
New GET /explorer/event/{event_id} page: chronological timeline across all of a WeatherEvent's members (NWSAlertSnapshot-backed entries with full official text, a pre-#129 fallback for lifecycles with no captured snapshot, all-clear entries, and lightning-episode windows), plus a delivered-notifications rail, matching AI summaries, alert-time/periodic radar stills, and source links to any public alert pages. Generalizes .public-alert-timeline into a shared .wb-timeline class in app.css (alias kept so public_alert.html needs no template change) and reuses it here. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>