WELIFE Docs Swagger Admin Web

WP-FE-ROUTE-NAV-SCENARIOS-01 — Nav scenarios + auto-reroute

Domain: D-ROUTE · Surface: CON · Status: IMP · Date: 2026-08-13

Goal

Con trỏ + la bàn liên tục (tận dụng GPS/compass phần cứng); khi đi sai đường tính lộ trình mới ngắn nhất từ vị trí hiện tại → đích (không giữ đường cũ); cover các kịch bản di chuyển.

Scenarios

Scenario Trigger UX
navigating On route Banner bước hiện tại · camera follow
approaching remaining ≤ 120m Banner sắp đến
wrong_way Heading lệch segment ≥110° khi đang chạy Cảnh báo quay đầu
off_route Snap >45m · hold ~2.8s Chuẩn bị / đang chờ reroute
rerouting Auto hoặc CTA Spinner · gọi POST /routing/directions
reroute_failed API lỗi CTA Tìm đường lại
gps_stale Fix >12s Giữ la bàn · cảnh báo tín hiệu
gps_denied Permission CTA làm mới GPS
paused User pause Không advance / không auto-reroute
arrived ≤35m đích Camera arrival

Hardware

Reroute

  1. Detect off-route liên tục ≥ OFF_ROUTE_HOLD_MS (2.8s)
  2. RoutingApi.directions({ from: GPS, to: dest }) — provider OSRM/Mapbox/Haversine
  3. Thay polyline + steps + ETA; không nối đường cũ
  4. Cooldown 12s giữa auto-reroute; manual luôn được

Files

Path Role
mobile/src/features/places/useDeviceLocation.ts navMode + accuracyM
mobile/src/features/routing/routeSnap.ts wrong-way helpers
mobile/src/features/routing/useRouteNavSession.ts session + scenarios + reroute
mobile/src/features/routing/screens/RouteActiveScreen.tsx UX theo scenario
mobile/src/features/routing/components/RoutePolylinePreview.tsx tracksViewChanges

Verify

  1. Device thật: xoay máy → chevron + camera xoay.
  2. Đi lệch tuyến >45m vài giây → banner reroute → polyline mới.
  3. Tắt GPS / chờ 12s → gps_stale.
  4. Pause → không auto-reroute.