Files
processor/test/fixtures
julian ffced44bfb
Build and Push processor / build (push) Successful in 58s
fix(live): translate IMEI↔UUID in snapshot + device-event-map joins
positions.device_id stores the IMEI (text); entry_devices.device_id is a
uuid FK to devices.id. snapshot.ts and device-event-map.ts joined the two
columns directly, causing:

  - snapshot.ts: Postgres rejected with `operator does not exist: uuid =
    text` (42883). The registry caught the error and returned an empty
    snapshot, masking the failure.
  - device-event-map.ts: cache keyed on entry_devices.device_id (uuid),
    but broadcast.ts:141 looks up by position.device_id (imei). Cache
    missed every record → no live frames fanned out, silently.

Both queries now hop through the devices table (devices.imei =
positions.device_id, devices.id = entry_devices.device_id). The
device-event-map cache aliases d.imei AS device_id so cache keys stay
IMEI strings — broadcast.ts is unchanged.

The integration-test fixture schema previously had entry_devices.device_id
as text (IMEI) — a deliberate simplification that hid the production type
mismatch. Now matches production: adds a devices table and changes the FK
to uuid. seedDatabase inserts devices first.

178/178 unit tests pass. Integration test exercises the corrected join
shape.
2026-05-03 20:34:18 +02:00
..