When 50%+ of the access points at one site simultaneously have Preseem QoE score <60, root cause is almost always a shared upstream problem (backhaul, transit, DNS, DHCP) — not per-AP RF. This rule emits one site-level insight that points the operator at the right investigation layer instead of letting them chase per-AP RF symptoms across many APs at the same site. - Towerops.Recommendations.Rules.UpstreamDegradation — single query pulls all matched Preseem APs grouped by site_id. Critical when 100% of APs at the site are degraded; warning otherwise. Lists every degraded AP with its QoE score in metadata. - Insight.@valid_types extended with upstream_degradation. - LLM prompt hint tells the model to instruct the operator to investigate upstream FIRST and to NOT chase per-AP RF symptoms. - UI: indigo card with degraded/total AP counts, an "Investigate upstream first" badge, and a clickable list of affected APs. - Wired into RecommendationsRunWorker FIRST in the @rules list so the upstream signal surfaces before per-AP RF rules. Also fixes two flakes: - device_live/show_test.exs is now async: false. It inserts to InterfaceStat which is a TimescaleDB hypertable; concurrent inserts deadlock on chunk-table locks under parallel SQL-sandbox tests (ERROR 40P01 deadlock_detected in setup). - Cleared an unused-variable warning in device_overheating_test.exs. 8 new tests for UpstreamDegradation. |
||
|---|---|---|
| .. | ||
| channels | ||
| components | ||
| controllers | ||
| graphql | ||
| helpers | ||
| live | ||
| plugs | ||
| changelog_parser.ex | ||
| endpoint.ex | ||
| gettext.ex | ||
| gettext_helpers.ex | ||
| graphql_socket.ex | ||
| permissions.ex | ||
| plug_exceptions.ex | ||
| remote_ip.ex | ||
| router.ex | ||
| scoped_resource.ex | ||
| telemetry.ex | ||
| telemetry_filter.ex | ||
| user_auth.ex | ||