diff --git a/server/gps/geozone.service.ts b/server/gps/geozone.service.ts index 4a34f62..81b08af 100644 --- a/server/gps/geozone.service.ts +++ b/server/gps/geozone.service.ts @@ -543,9 +543,8 @@ export async function processPosition( const verdict = walker.check({ lat: input.lat, lng: input.lng, recordedAt, speed: input.speed }); if (verdict !== "accept") { if (verdict === "stale") { - // Stale re-send = трекер сам сообщает, когда в последний раз видел спутники - // (замороженный fixTime). Фиксируем как «время последнего GPS-фикса». - await gpsStorage.updateAssetGpsFix(assetId, recordedAt); + // Stale-копии просто пропускаем. lastGpsFixAt здесь НЕ трогаем: + // бейдж «Нет GPS» = «нет точки с валидным GPS дольше N часов» (настройка) console.log( `[GPS] skipped stale: asset=${assetId} recordedAt=${recordedAt.toISOString()} <= lastRecordedAt=${prev?.recordedAt.toISOString()}` ); @@ -566,7 +565,8 @@ export async function processPosition( return; } - // Точка прошла фильтры — GPS-фикс жив, двигаем время последнего фикса вперёд + // Точка прошла фильтры и не помечена протоколом как LBS — это валидный GPS: + // двигаем «время последнего GPS-фикса» вперёд (им питается бейдж «Нет GPS») await gpsStorage.updateAssetGpsFix(assetId, recordedAt, true); // Режим «потерян GPS»: если последний stale re-send был свежее 10 минут,