fix: calculate jt808 daily mileage from metric endpoints

This commit is contained in:
lingniu
2026-07-01 09:52:24 +08:00
parent bb051391c2
commit 0236884f81
7 changed files with 53 additions and 15 deletions

View File

@@ -17,17 +17,17 @@ Consume JT808 Kafka location events and write the derived daily mileage into the
JT808 daily mileage is calculated only from the GPS total mileage reported by JT808 location additional information:
```text
daily_mileage_km = last_total_mileage_km - first_total_mileage_km
daily_mileage_km = max_total_mileage_km - min_total_mileage_km
```
The first valid local-day sample writes `daily_mileage_km=0.0`. Later samples update the same metric row with:
The first valid local-day sample writes `daily_mileage_km=0.0`. Later ordered or replayed samples update the same metric row with:
```text
metric_value = latest_total_mileage_km - first_total_mileage_km
metric_value = max_total_mileage_km - min_total_mileage_km
metric_key = daily_mileage_km
```
The first and latest GPS total mileage values stay on that same metric row as calculation source columns so restarts recover from MySQL without Redis or another state table.
The local-day minimum and maximum GPS total mileage values stay on that same metric row as calculation source columns so restarts recover from MySQL without Redis or another state table.
## Runtime Properties

View File

@@ -344,11 +344,12 @@ Validation:
### Daily Mileage
JT808 daily mileage uses the GPS total mileage reported in location additional
information. The first valid sample of the local day is the baseline and the
latest valid total mileage rewrites the same metric row.
information. The local-day minimum and maximum GPS total mileage values rewrite
the same metric row, so ordered streaming and historical replay use one
calculation path.
```text
dailyMileage = today.lastTotalMileage - today.firstTotalMileage
dailyMileage = today.maxTotalMileage - today.minTotalMileage
calculationMethod = JT808_TOTAL_MILEAGE_DIFF
```