4.0 KiB
4.0 KiB
final-review-fix (2026-07-08 15:41 CST)
Changes
- Made realtime duplicate suppression source-aware in
go/vehicle-gateway/internal/stats/daily_metric.goby keying the in-memory mileage cache withvin + protocol + source_key + stat_date, so identical mileage from different sources is retained while same-source repeats are still skipped. - Added optional previous-baseline querying and per-source/day caching in
Writer; realtime candidates now:- become
NO_PREVIOUS_BASELINEwith reasonmissing_previous_sourcewhen the same-source previous-day candidate is absent, - use previous-day
latest_total_mileage_kmasfirst_total_mileage_km, - compute
daily_mileage_kmfrom previous-day baseline when present, - become
INVALID_DELTAwith reasonoutside_daily_rangewhen the delta is negative or abovemaxSelectedDailyMileageKM.
- become
- Added generic stale-final cleanup to
ProjectDailyMileageingo/vehicle-gateway/internal/stats/source_mileage.gosovehicle_daily_mileageis deleted when no candidate remains selected for the exact(vin, stat_date, protocol)target. - Changed
BACKFILL_METHODdefault fromscantolast_diffingo/vehicle-gateway/cmd/stats-backfill/main.go. - Expanded regression coverage for source-aware realtime dedupe, realtime baseline/no-baseline behavior, projector cleanup SQL, stale-final cleanup through backfill, and the backfill method default.
Test Results
cd /Users/lingniu/project/ai-coding/lingniu-vehicle-ingest/go/vehicle-gateway && go test ./internal/stats -run 'TestWriter|TestProjectDailyMileage|TestSource' -count=1ok lingniu-vehicle-ingest/go/vehicle-gateway/internal/stats 0.435s
cd /Users/lingniu/project/ai-coding/lingniu-vehicle-ingest/go/vehicle-gateway && go test ./cmd/stats-backfill ./internal/stats -count=1ok lingniu-vehicle-ingest/go/vehicle-gateway/cmd/stats-backfill 0.643sok lingniu-vehicle-ingest/go/vehicle-gateway/internal/stats 0.279s
cd /Users/lingniu/project/ai-coding/lingniu-vehicle-ingest/go/vehicle-gateway && go test ./... -count=1ok lingniu-vehicle-ingest/go/vehicle-gateway/cmd/capacity-check 0.419sok lingniu-vehicle-ingest/go/vehicle-gateway/cmd/gateway 0.397sok lingniu-vehicle-ingest/go/vehicle-gateway/cmd/history-writer 0.728sok lingniu-vehicle-ingest/go/vehicle-gateway/cmd/load-sim 0.698sok lingniu-vehicle-ingest/go/vehicle-gateway/cmd/nats-fast-writer 0.688sok lingniu-vehicle-ingest/go/vehicle-gateway/cmd/nats-kafka-bridge 0.683sok lingniu-vehicle-ingest/go/vehicle-gateway/cmd/realtime-api 0.574sok lingniu-vehicle-ingest/go/vehicle-gateway/cmd/stat-writer 0.534sok lingniu-vehicle-ingest/go/vehicle-gateway/cmd/stats-backfill 0.634sok lingniu-vehicle-ingest/go/vehicle-gateway/internal/capacity 0.834sok lingniu-vehicle-ingest/go/vehicle-gateway/internal/envelope 0.738sok lingniu-vehicle-ingest/go/vehicle-gateway/internal/eventbus 0.758sok lingniu-vehicle-ingest/go/vehicle-gateway/internal/gateway 0.483sok lingniu-vehicle-ingest/go/vehicle-gateway/internal/health 0.384sok lingniu-vehicle-ingest/go/vehicle-gateway/internal/history 0.502sok lingniu-vehicle-ingest/go/vehicle-gateway/internal/identity 0.631sok lingniu-vehicle-ingest/go/vehicle-gateway/internal/loadsim 0.640sok lingniu-vehicle-ingest/go/vehicle-gateway/internal/metrics 0.626s? lingniu-vehicle-ingest/go/vehicle-gateway/internal/observability [no test files]ok lingniu-vehicle-ingest/go/vehicle-gateway/internal/protocol/gb32960 0.622sok lingniu-vehicle-ingest/go/vehicle-gateway/internal/protocol/jt808 0.371sok lingniu-vehicle-ingest/go/vehicle-gateway/internal/protocol/yutongmqtt 0.384sok lingniu-vehicle-ingest/go/vehicle-gateway/internal/realtime 0.496sok lingniu-vehicle-ingest/go/vehicle-gateway/internal/stats 0.443s? lingniu-vehicle-ingest/go/vehicle-gateway/internal/topics [no test files]