22 Commits

Author SHA1 Message Date
c1d5b1cbee fix(gps): остановлен 429-шторм — throttle SSE gps_asset_moved (3 сек/asset) и клиентских инвалидаций (60 сек), polling позиций 60 сек, статусов 5 мин
Каждая точка ingest (~1/сек) broadcast'илась SSE всем клиентам орг., клиент
на каждое событие делал invalidateQueries без throttle → 2+ GET/сек → исчерпание
per-user бакета apiLimiter (1500/15мин) → все API устройства 429 (формы не грузились).
Модель теперь как у нормальных трекеров: точки пишутся в БД, карта читает по интервалу.
+4 unit-теста троттла (server/gps/sse-throttle.ts)
2026-09-17 21:59:34 +03:00
abd5d4b65f chore(ci+logs): eslint в CI, npm audit, logger с уровнями, retention error_logs
Шаги 1.6 и 1.7 плана production-готовности:
- eslint flat-config (баг-ловушки, легаси warn), lint блокирующий в pr-check
- npm audit --audit-level=high в CI (отчёт)
- фикс реального бага: условный useRef в TaskTitleInline
- server/utils/logger.ts (LOG_LEVEL/LOG_FORMAT) в 5 горячих местах
- error_logs retention 30 дней (worker), redactSensitive в captureErrorLog
- 0 errors lint, vitest 96/96
2026-09-08 00:11:38 +03:00
67dbf90d65 feat(gps): мосты-предположения по дорогам между GPS-якорями на LBS-участках (OSRM route, пунктир) 2026-08-31 21:30:17 +03:00
08d1fa1af3 fix(gps): бейдж «Нет GPS» = нет валидной GPS-точки дольше N часов (настройка), убран pin от stale-пересылок 2026-08-31 17:36:40 +03:00
0ad9bb8715 fix(gps): убран слой детекции LBS по stale re-send (помечал ~100% точек); is_lbs только по протокольному флагу valid=false + физика 2026-08-31 17:02:56 +03:00
cbb659aed7 feat(gps): valid=false от протокола H02 → точка сохраняется как LBS-примерная (не выбрасывается), сигнал потери GPS 2026-08-31 15:13:03 +03:00
bec3cc054d feat(gps): траекторный фильтр трека (медианный якорь из 10 точек + lookahead-подтверждение переезда); скорость у выживших LBS-точек с «~» 2026-08-30 20:26:36 +03:00
3f4d35ae83 fix(gps): offroad-фильтр при выдаче — все точки, не только isLbs (легализованный LBS обходил фильтр и ломал OSRM match) 2026-08-29 21:49:58 +03:00
3ff74d0d17 fix(gps): zIndex точек трека над полилиниями + capture-клики; offroad-фильтр LBS при выдаче трека (чистит старый «мяч») 2026-08-29 21:36:55 +03:00
a302f0c0ea feat(gps): фильтр «далеко от дороги» в LBS-режиме (offRoadMeters, OSRM nearest); пробег «точно + примерно (по вышкам)» в Маршрутах 2026-08-29 21:12:09 +03:00
60bd52b75a feat(gps): режим «потерян GPS» — LBS-точки помечаются (is_lbs), примерная позиция на карте, пунктир в треке; OSRM map matching трека (matched endpoint + переключатель «По дорогам») 2026-08-28 17:22:57 +03:00
1af4126f7c feat(gps): индикатор потери GPS у объектов (last_gps_fix_at из stale re-send/принятых точек), настройка порога в часах 2026-08-28 10:48:32 +03:00
96e088c890 fix(gps): фильтр несогласованности скоростей против LBS-телепортов; fix: плейхед не закрывает balloon точек трека 2026-08-28 10:33:45 +03:00
ac4f89d42e feat(gps): фильтры heartbeat-эхо/valid=false/spike; доступ к GPS и Финансам — матрица на /users (пользователи+роли) 2026-08-26 17:13:49 +03:00
8f5789ec28 feat(gps): фокус геозоны на карте, город по умолчанию для всех карт, доступ к GPS по пользователям/ролям (админ) 2026-08-26 10:20:38 +03:00
3e8849019a feat(gps): скорость в км/ч (конверсия узлов Traccar + backfill), деление маршрута на поездки, проигрывание от любой точки, скорости x100-x1000 2026-08-26 09:24:29 +03:00
a4b508f70e fix(gps): гистерезис подтверждения jump-кандидата — latch-up на LBS, реальные переезды принимаются после 3 точек 2026-08-25 18:06:43 +03:00
3d24a15fb3 fix(gps): отсев устаревших копий и LBS-телепортов (stale/jump фильтры), настройка maxJumpSpeedKmh, фильтрация трека при выдаче 2026-08-25 17:49:38 +03:00
b635d1e16e feat(gps): last_seen по времени приёма, фильтр джиттера (настройки), линейка, трек по скорости; fix: карта не перекрывает диалоги (isolation) 2026-08-25 17:01:44 +03:00
104b3ca422 feat: модуль GPS-мониторинга (карта Яндекс.Карт, Traccar, геозоны, маршруты, группы) 2026-08-24 19:30:11 +03:00
c0e2ddd9c8 Исправлено дублирование сообщений в task-чате: защита от двойного Enter/клика по кнопке отправки 2026-08-24 16:53:25 +03:00
8b713e66c0 Исправлено дублирование сообщений в task-чате: защита от двойного Enter/клика по кнопке отправки 2026-08-24 16:50:05 +03:00