feat: preserve source scanner for synced devices
When devices are synced from a peer, they now retain their original source scanner reference. This ensures: - Device positions are calculated relative to the scanner that detected them, not the local scanner - Moving the local scanner won't affect synced devices' positions - Popup shows "Source: <scanner_id>" for remotely-synced devices Database changes: - Added source_scanner_id, source_scanner_lat, source_scanner_lon columns to devices table - get_devices_since() includes source scanner info in sync data - bulk_update_devices() accepts and stores source scanner position - Added get_all_device_sources() method API changes: - /api/sync/devices GET includes scanner_lat and scanner_lon - /api/sync/devices POST accepts source_scanner_lat/lon - /api/device/floors includes sources dict Frontend changes: - loadDevicePositions() loads source scanner info - getDevicePosition() uses source scanner position for synced devices - Popup shows source scanner info for remotely-synced devices Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -124,7 +124,15 @@ class PeerSync:
|
||||
devices = data.get("devices", [])
|
||||
source_scanner = data.get("scanner_id", "unknown")
|
||||
|
||||
updated = self.db.bulk_update_devices(devices, source_scanner)
|
||||
# Get source scanner position for correct device positioning
|
||||
source_lat = data.get("scanner_lat")
|
||||
source_lon = data.get("scanner_lon")
|
||||
|
||||
updated = self.db.bulk_update_devices(
|
||||
devices, source_scanner,
|
||||
source_scanner_lat=source_lat,
|
||||
source_scanner_lon=source_lon
|
||||
)
|
||||
return updated
|
||||
|
||||
def push_devices_to_peer(self, peer_url: str, since: Optional[str] = None) -> dict:
|
||||
@@ -141,6 +149,8 @@ class PeerSync:
|
||||
|
||||
payload = {
|
||||
"source_scanner": self.scanner_identity["id"],
|
||||
"source_scanner_lat": self.scanner_identity["latitude"],
|
||||
"source_scanner_lon": self.scanner_identity["longitude"],
|
||||
"devices": devices
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user