towerops/priv
Graham McIntire b735adc067 feat(insights): RF-aware channel-conflict — multi-source noise + Preseem
Same-channel conflicts at one site are not all equal. A pair of APs
sharing a channel in a clean RF environment is a planning issue;
the same pair in a contaminated environment is an outage waiting to
happen. This commit makes the rule reason across sources before
deciding urgency.

- Towerops.Snmp.RfHealth — cross-source helper that combines:
  * Most recent noise-floor / noise sensor on the AP (dBm)
  * Preseem rf_score and qoe_score from the linked AccessPoint row
  * Average CPE SNR and client count from wireless_clients
  Returns a snapshot map and an interference_severity/1 classifier
  (:critical | :warning | :ok). Critical when noise floor >= -80 dBm
  OR Preseem rf_score < 4.0; warning when avg CPE SNR < 15 with
  active clients.
- OwnFleetChannelConflict now enriches each conflicting AP with its
  noise floor, rf_score, qoe_score, avg CPE SNR, CPE count, and a
  per-AP rf_severity. Urgency promotes to critical when 3+ APs share
  a channel OR any conflicting AP shows critical RF health.
- UI: amber card now renders an evidence table with width, noise,
  rf_score, CPE SNR, and CPE count per AP, plus a "Critical RF
  environment detected" badge when has_critical_rf is true.

Also strengthens the previous flake fix on agent_live_test.exs:567
by switching to Req.Test shared mode (the test is sync), so the
ReleaseChecker stub is visible to the LiveView process regardless of
when it spawns relative to setup. The earlier Req.Test.allow approach
relied on stub timing that didn't always hold under full-suite load.

11 new tests across RfHealth + the enriched rule. LLM enrichment
automatically picks up the richer metadata via the existing Phase 1
worker.
2026-05-09 17:25:26 -05:00
..
antennas feat: 198 real vendor .msi antenna patterns + Leaflet auto-load 2026-05-06 15:09:29 -05:00
gettext fix: nav overflow on small screens and fix bad gettext translations 2026-03-11 14:00:31 -05:00
mibs mib update from librenms 2026-01-28 13:38:31 -06:00
profiles feat: ePMP firmware extraction + ePMP3000 NetSNMP-quirk detection 2026-05-09 08:34:23 -05:00
proto chore: migrate agent repo references from GitHub to Codeberg 2026-05-07 07:44:48 -05:00
repo feat(insights): AP frequency-change recommendation rule 2026-05-09 16:56:19 -05:00
static feat(insights): RF-aware channel-conflict — multi-source noise + Preseem 2026-05-09 17:25:26 -05:00