From 08d1fa1af3230d66ca88226131f6567d628a7ad8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=98=D0=BB=D1=8C=D1=8F=D1=81=20=D0=A1=D1=83=D0=BB=D1=82?= =?UTF-8?q?=D0=B0=D0=BD=D0=BE=D0=B2?= Date: Mon, 31 Aug 2026 17:36:40 +0300 Subject: [PATCH] =?UTF-8?q?fix(gps):=20=D0=B1=D0=B5=D0=B9=D0=B4=D0=B6=20?= =?UTF-8?q?=C2=AB=D0=9D=D0=B5=D1=82=20GPS=C2=BB=20=3D=20=D0=BD=D0=B5=D1=82?= =?UTF-8?q?=20=D0=B2=D0=B0=D0=BB=D0=B8=D0=B4=D0=BD=D0=BE=D0=B9=20GPS-?= =?UTF-8?q?=D1=82=D0=BE=D1=87=D0=BA=D0=B8=20=D0=B4=D0=BE=D0=BB=D1=8C=D1=88?= =?UTF-8?q?=D0=B5=20N=20=D1=87=D0=B0=D1=81=D0=BE=D0=B2=20(=D0=BD=D0=B0?= =?UTF-8?q?=D1=81=D1=82=D1=80=D0=BE=D0=B9=D0=BA=D0=B0),=20=D1=83=D0=B1?= =?UTF-8?q?=D1=80=D0=B0=D0=BD=20pin=20=D0=BE=D1=82=20stale-=D0=BF=D0=B5?= =?UTF-8?q?=D1=80=D0=B5=D1=81=D1=8B=D0=BB=D0=BE=D0=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/gps/geozone.service.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) 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 минут,