Towers can now be explicitly assigned to a backbone by setting
backbone_code. This field is included in create/update DTOs and
the response. The backbone OSRM routing merges these tower waypoints
with Closure waypoints, sorted by distance from OTB-start.
Run once on DB: ALTER TABLE towers ADD COLUMN backbone_code VARCHAR(255);
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
DeviceEndID was uuid.UUID (non-nullable) in entity, DTO, and response.
Sending empty string from the frontend caused "invalid uuid" parse error.
Changed to *uuid.UUID throughout. CreateFishbone now skips end device
lookup, type validation, port check, and port-usage update when
DeviceEndID is nil. UpdateFishbone pointer comparisons fixed accordingly.
Run once on DB: ALTER TABLE fishbone ALTER COLUMN dev_end_id DROP NOT NULL;
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>