Field setups often relay through a phone/gateway that owns the MQTT
connection, so the publishing credential and the instrument are now
separate concepts:
- Points messages carry a "serial" identifying the locator receiver;
unknown serials are auto-registered as devices in the publisher's
org (name "Locator <serial>"). Device.mqttUsername is now optional
and serialNumber is unique per org.
- LocatePoint gains standard receiver telemetry: frequencyHz,
currentMa, signalDb, gainDb, locateMode (PEAK/NULL/BROAD_PEAK/SONDE),
phaseDeg, compassDeg, distortionPct, plus GPS quality columns
vAccuracy, satellites, hdop. All optional; raw payload still kept.
- Migration hand-edited to preserve the generated geom column and its
GIST index (Prisma diff wanted to drop both).
- REST create/point DTOs, map tooltips, job-detail latest-point
readout, devices settings form, seed, and the sample publisher all
carry the new fields.
- Added .dockerignore for backend/web: COPY . . was clobbering the
image's freshly generated Prisma client with the host's stale
node_modules, breaking image builds after schema changes.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>