towerops/lib/towerops_web
Graham McIntire 5eb1acf9d4 feat(insights): device-overheating recommendation
Operators frequently misdiagnose thermal throttling as RF problems
and waste truck rolls. This rule reads the hottest temperature
sensor per device and, when the device is linked to a Preseem AP
with degraded QoE, makes the thermal-correlation explicit so the
fix is ventilation/shading rather than antenna alignment.

- Towerops.Recommendations.Rules.DeviceOverheating — single query
  pulls the hottest temperature sensor per device above 65 °C; one
  insight per device. Critical at 75 °C+. Includes the linked
  Preseem qoe_score in metadata when present.
- Insight.@valid_types extended with device_overheating.
- LLM prompt hint tells the model to recommend ventilation/fan/
  shading inspection BEFORE any RF action when QoE is also low.
- UI: red card with sensor name, temperature, linked QoE score,
  and an "Above manufacturer spec" badge for >=75 °C.

Wired into RecommendationsRunWorker. 8 new tests.
2026-05-09 17:40:22 -05:00
..
channels perf+refactor: codebase-wide query and antipattern audit 2026-04-28 16:58:51 -05:00
components build(assets): split coverage hooks into a lazy-loaded chunk 2026-05-06 16:11:32 -05:00
controllers test: lift coverage 78.42% → 79.59% with focused unit + integration tests 2026-05-07 18:40:43 -05:00
graphql dialyzer: fix all unmatched_return warnings (154 → 0) 2026-04-21 10:03:55 -05:00
helpers feat: add status emoji to page titles 2026-03-06 14:45:02 -06:00
live feat(insights): device-overheating recommendation 2026-05-09 17:40:22 -05:00
plugs fix: vendor Leaflet 1.9.4 locally instead of fetching from unpkg 2026-05-01 17:06:54 -05:00
changelog_parser.ex remove-gleam (#218) 2026-03-29 11:03:20 -05:00
endpoint.ex feat(coverage): write rasters to NFS-backed dir, serve via dedicated static plug 2026-05-07 07:38:05 -05:00
gettext.ex init 2025-12-21 11:10:43 -06:00
gettext_helpers.ex feat: migrate email templates to gettext (Phase 2 - Emails) 2026-02-02 09:48:30 -06:00
graphql_socket.ex perf+refactor: codebase-wide query and antipattern audit 2026-04-28 16:58:51 -05:00
permissions.ex i18n: add Spanish locale with full translations, language selector, and locale hook 2026-02-14 17:44:01 -06:00
plug_exceptions.ex handle exceptions gracefully on api endpoints 2026-02-04 12:18:14 -06:00
remote_ip.ex dialyzer: replace suppressions with real fixes where possible 2026-04-21 11:01:30 -05:00
router.ex feat(coverage): public REST API + KMZ export + email-on-complete 2026-05-06 17:15:57 -05:00
scoped_resource.ex dialyzer: expand PLT, drop blanket codebase suppression 2026-04-21 09:33:22 -05:00
telemetry.ex fix: add Oban config to dev.exs and replace Exq telemetry with Oban 2026-01-24 16:39:45 -06:00
telemetry_filter.ex fix: suppress health check logs and downgrade CI artifacts to v3 2026-03-05 15:54:47 -06:00
user_auth.ex perf+refactor: codebase-wide query and antipattern audit 2026-04-28 16:58:51 -05:00