Drop 10 dead parser-compat columns (srccallsign, dstcallsign,
origpacket, body, header, alive, posambiguity, symboltable,
symbolcode, messaging) and move 14 display-only columns into a
single `data` JSONB column (PHG, telemetry, radiorange,
information_field, format, posresolution, position_ambiguity,
luminosity, rain_midnight).
Reduces row width from ~70 to ~48 columns. Table is ephemeral
so migration uses DROP/recreate. Also fixes snow_24h -> snow bug
in weather check query and adds null byte stripping for JSONB
string sanitization.
The :phg field was being added as a map to packet attributes, but it's
not a database field. PHG data should be split into individual fields
(phg_power, phg_height, phg_gain, phg_directivity) which are actual
database columns.
Removed the :phg map from being added to attributes. The put_phg_fields
function already handles extracting individual PHG components.
Updated tests to check for individual PHG fields instead of the map.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
The APRS parser wasn't extracting altitude and PHG data from the comment
field. Added extraction functions to parse:
- Altitude from /A=XXXXXX format (converts to feet)
- PHG (Power-Height-Gain-Directivity) from PHGXXXX format
Also updated the comment cleaning to remove these technical details,
leaving only the human-readable station description.
Updated tests to properly use Packet.extract_additional_data() which
is where the parsing happens during packet processing.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Fixed PHG parsing test to match actual parser behavior
- Fixed movement test to properly handle batch loading behavior
- Movement test now sets bounds and uses higher zoom level
- Added helper function to flush events during test setup
- All tests now passing with clean compilation
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>