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

1.6 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, 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(...) into the common JDBC/MySQL metric table vehicle_stat_metric.

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
calculation_method = JT808_TOTAL_MILEAGE_DIFF

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
MYSQL_JDBC_URL=<jdbc-url>
MYSQL_USERNAME=<user>
MYSQL_PASSWORD=<password>
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.