feat(gps): режим «потерян GPS» — LBS-точки помечаются (is_lbs), примерная позиция на карте, пунктир в треке; OSRM map matching трека (matched endpoint + переключатель «По дорогам»)
This commit is contained in:
@@ -146,10 +146,11 @@ export class GpsStorage {
|
||||
* Обновление последней позиции объекта (и перевод в online).
|
||||
* last_seen_at = время ПРИЁМА сервером (new Date() здесь),
|
||||
* last_recorded_at = время точки по устройству (recordedAt).
|
||||
* isLbs = последняя точка — LBS (координаты вышки), см. режим «потерян GPS».
|
||||
*/
|
||||
async updateAssetLastPosition(
|
||||
assetId: number,
|
||||
data: { lat: number; lng: number; speed?: number | null; course?: number | null; recordedAt: Date }
|
||||
data: { lat: number; lng: number; speed?: number | null; course?: number | null; recordedAt: Date; isLbs?: boolean }
|
||||
): Promise<void> {
|
||||
await db
|
||||
.update(gpsAssets)
|
||||
@@ -160,11 +161,24 @@ export class GpsStorage {
|
||||
lastCourse: data.course ?? null,
|
||||
lastSeenAt: new Date(),
|
||||
lastRecordedAt: data.recordedAt,
|
||||
lastIsLbs: data.isLbs ?? false,
|
||||
isOnline: true,
|
||||
})
|
||||
.where(eq(gpsAssets.id, assetId));
|
||||
}
|
||||
|
||||
/**
|
||||
* Переключение режима «потерян GPS» у объекта.
|
||||
* true — трекер присылает stale re-send'ы (не видит спутники), свежие точки
|
||||
* помечаются как LBS; false — нормальный режим.
|
||||
*/
|
||||
async setGpsLost(assetId: number, lost: boolean): Promise<void> {
|
||||
await db
|
||||
.update(gpsAssets)
|
||||
.set({ gpsLost: lost })
|
||||
.where(eq(gpsAssets.id, assetId));
|
||||
}
|
||||
|
||||
/**
|
||||
* Отметка «устройство живо» без обновления координат
|
||||
* (точка отброшена фильтром джиттера, но приём был).
|
||||
|
||||
Reference in New Issue
Block a user