feat(15-03): add signal history charts with expandable rows in station and link tables

- Create SignalHistoryChart with recharts LineChart, green/yellow/red reference bands, and 24h/7d/30d range selector
- Add expandable rows to WirelessStationTable (click station to see signal history)
- Add expandable rows to WirelessLinksTable CPE rows (click link to see signal history)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Jason Staack
2026-03-19 07:22:49 -05:00
parent ef82a0d294
commit 3bddd6f654
6 changed files with 271 additions and 76 deletions

View File

@@ -51,7 +51,7 @@
### Signal Trending
- [ ] **TRND-01**: Operator can view per-station signal history charts showing signal strength over time
- [x] **TRND-01**: Operator can view per-station signal history charts showing signal strength over time
- [x] **TRND-02**: System detects signal degradation trends (e.g., "signal dropped 8dB over 2 weeks")
### Site Alerting
@@ -120,7 +120,7 @@
| WRUI-01 | Phase 14 | Complete |
| WRUI-02 | Phase 14 | Complete |
| WRUI-03 | Phase 14 | Complete |
| TRND-01 | Phase 15 | Pending |
| TRND-01 | Phase 15 | Complete |
| TRND-02 | Phase 15 | Complete |
| ALRT-01 | Phase 15 | Complete |
| ALRT-02 | Phase 15 | Complete |

View File

@@ -117,7 +117,7 @@ Plans:
2. System detects and surfaces signal degradation trends (e.g., "signal dropped 8dB over 2 weeks")
3. Operator can create site-scoped alert rules (e.g., "alert when >20% of devices at this site go offline")
4. Operator can create sector-scoped alert rules (e.g., "alert when sector average signal drops below -75dBm")
**Plans:** 1/3 plans executed
**Plans:** 2/3 plans executed
Plans:
- [ ] 15-01-PLAN.md — Backend data model, services, and REST API for site alert rules, alert events, and signal history
@@ -131,7 +131,7 @@ Plans:
| Sites | SITE-01, SITE-02, SITE-03, SITE-04, SITE-05, SITE-06 | 11 | 3/3 | Complete | 2026-03-19 | DASH-01 | 11 | 1 |
| Site Dashboard | DASH-02, DASH-03, DASH-04 | 14 | 3/3 | Complete | 2026-03-19 | SECT-01, SECT-02, SECT-03 | 14 | 3 |
| Wireless Collection | WRCL-01, WRCL-02, WRCL-03, WRCL-04, WRCL-05, WRCL-06 | 12 | 2/2 | Complete | 2026-03-19 | LINK-01, LINK-02, LINK-03, LINK-04 | 13 | 3/3 | Complete | 2026-03-19 | WRUI-01, WRUI-02, WRUI-03 | 14 | 3 |
| Signal Trending | TRND-01, TRND-02 | 15 | 1/3 | In Progress| | ALRT-01, ALRT-02 | 15 | 2 |
| Signal Trending | TRND-01, TRND-02 | 15 | 2/3 | In Progress| | ALRT-01, ALRT-02 | 15 | 2 |
| **Total** | | | **30** |
## Progress

View File

@@ -3,13 +3,13 @@ gsd_state_version: 1.0
milestone: v9.7
milestone_name: Tower & Site Management
status: unknown
stopped_at: Completed 15-02-PLAN.md
last_updated: "2026-03-19T12:18:13.853Z"
stopped_at: Completed 15-01-PLAN.md
last_updated: "2026-03-19T12:19:31.850Z"
progress:
total_phases: 5
completed_phases: 4
total_plans: 14
completed_plans: 12
completed_plans: 13
---
# Project State
@@ -47,6 +47,7 @@ Plan: 2 of 3
| Phase 14 P02 | 3min | 2 tasks | 9 files |
| Phase 14 P03 | 3min | 2 tasks | 6 files |
| Phase 15 P02 | 3min | 2 tasks | 4 files |
| Phase 15 P01 | 4min | 2 tasks | 10 files |
## Accumulated Context
@@ -87,6 +88,9 @@ Decisions are logged in PROJECT.md Key Decisions table.
- [Phase 14]: Used fleet summary API for CPU/memory data since devicesApi.list does not return health metrics
- [Phase 15]: Used getattr with fallback for config settings so trend/alert services work before Plan 01 adds them to Settings class
- [Phase 15]: Alert events created with consecutive_hits=1 immediately; UI/API filters for >= 2 to confirm (hysteresis pattern)
- [Phase 15]: Site alert tables are separate from device-level alert_rules/alert_events (no coupling between systems)
- [Phase 15]: Signal history uses TimescaleDB time_bucket with 3 range presets (5min/1h/4h buckets)
- [Phase 15]: Alert event count endpoint returns simple JSON for notification bell badge
### Pending Todos
@@ -100,6 +104,6 @@ None yet.
## Session Continuity
Last session: 2026-03-19T12:18:06.830Z
Stopped at: Completed 15-02-PLAN.md
Last session: 2026-03-19T12:19:31.847Z
Stopped at: Completed 15-01-PLAN.md
Resume file: None