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. |
||
|---|---|---|
| .. | ||
| channels | ||
| components | ||
| controllers | ||
| endpoint | ||
| graphql | ||
| helpers | ||
| integration | ||
| live | ||
| plugs | ||
| changelog_parser_test.exs | ||
| graphql_socket_test.exs | ||
| permissions_test.exs | ||
| plug_exceptions_test.exs | ||
| remote_ip_test.exs | ||
| telemetry_filter_test.exs | ||
| telemetry_test.exs | ||
| user_auth_test.exs | ||