fix: resolve critical sensor discovery pipeline data loss
Critical fixes to sensor discovery and display pipeline:
- Fix float value rejection: Change is_integer guards to is_number in
vendor.ex, dynamic.ex to accept decimal sensor values (temperature,
counters, etc.)
- Fix scale factor calculation: Rewrite base.ex divisor calculation
using pure integer arithmetic to prevent rounding errors
- Add missing sensor type support: Current, power, fan, load, and
signal quality sensor categories now filtered and assigned in UI
- Refactor resolve_snmp_community to reduce cyclomatic complexity
Impact:
- Sensors with float values (DHCP leases, connection counts, precise
temperatures) no longer silently dropped before database
- ENTITY-SENSOR-MIB divisors calculated correctly without float errors
- UI coverage increased from ~35% to ~60% of discovered sensor types
Files modified:
- lib/towerops/snmp/profiles/vendors/vendor.ex
- lib/towerops/snmp/profiles/dynamic.ex
- lib/towerops/snmp/profiles/base.ex
- lib/towerops_web/live/device_live/show.ex
- lib/towerops/devices.ex
Documentation: SENSOR_PIPELINE_FIXES.md