Files
lingniu-vehicle-ingest/docs/operations/jt808-daily-mileage-runbook.md
2026-07-01 01:21:09 +08:00

1.5 KiB

JT808 Daily Mileage Streaming

Scope

The analytics app can calculate daily mileage from JT808 telemetry only. It consumes vehicle.event.jt808.v1, keeps the rolling per-vehicle daily state in Redis or memory, and saves the current daily result into the common vehicle-stat metric repository.

Storage

There is no separate JT808 daily-mileage table. Runtime state is stored under the configured JT808 state store so the stream can continue after restart. The derived metric is written through VehicleStatRepository.saveDailyStat(...); the default repository persists it under VEHICLE_STAT_FILE_PATH as daily-stats.tsv.

The JT808 daily-mileage value is calculated from the GPS total mileage reported in location additional information:

daily_mileage_km = last_total_mileage_km - first_total_mileage_km

The metric is saved only after at least two ordered JT808 location points with valid total_mileage_km have been received for the same vehicle and local day. If the difference is negative, no metric row is saved for that state update.

Runtime Settings

Set these in Portainer or Nacos, without committing secrets:

KAFKA_TOPIC_JT808_EVENT=vehicle.event.jt808.v1
VEHICLE_STAT_JT808_MILEAGE_ENABLED=true
VEHICLE_STAT_JT808_STATE_STORE=redis
VEHICLE_STAT_FILE_PATH=/data/vehicle-stat
REDIS_HOST=<host>
REDIS_PORT=6379
REDIS_DATABASE=50
REDIS_PASSWORD=<password>

Algorithm defaults use the Asia/Shanghai daily boundary. The rolling state stores only the fields needed by the GPS total-mileage difference calculation.