Files
lingniu-vehicle-ingest/docs/superpowers/plans/2026-06-30-kafka-streaming-mileage.md

1.5 KiB

JT808 Kafka Streaming Mileage Plan

Current Goal

Consume JT808 Kafka location events, keep rolling daily state, and write the derived daily mileage into the common vehicle-stat metric repository.

Current Design

  • Source topic: vehicle.event.jt808.v1
  • Runtime app: vehicle-analytics-app
  • Runtime state: Redis Jt808MileageStateStore
  • Metric output: VehicleStatRepository.saveDailyStat(...)
  • Production metric storage: JDBC/MySQL vehicle_stat_metric
  • Date boundary: Asia/Shanghai
  • Calculation method: JT808_TOTAL_MILEAGE_DIFF

JT808 daily mileage is calculated only from the GPS total mileage reported by JT808 location additional information:

daily_mileage_km = last_total_mileage_km - first_total_mileage_km

The stream saves a metric only when at least two ordered location points for the same vehicle and local day contain valid total_mileage_km. Negative differences are treated as invalid and are not written.

Runtime Properties

KAFKA_TOPIC_JT808_EVENT=vehicle.event.jt808.v1
VEHICLE_STAT_ENABLED=true
VEHICLE_STAT_JT808_MILEAGE_ENABLED=true
VEHICLE_STAT_REPOSITORY_TYPE=jdbc
MYSQL_JDBC_URL=<jdbc-url>
MYSQL_USERNAME=<user>
MYSQL_PASSWORD=<password>
REDIS_HOST=<host>
REDIS_PORT=6379
REDIS_DATABASE=50
REDIS_PASSWORD=<password>

Notes

Do not create or write a protocol-specific JT808 daily-mileage table. Do not add GPS segment distance, speed integral, or jump-filter state back into this path unless the mileage definition changes again.