Files
lingniu-vehicle-ingest/.superpowers/sdd/final-review-fix-report.md
2026-07-08 15:41:59 +08:00

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.go by keying the in-memory mileage cache with vin + 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_BASELINE with reason missing_previous_source when the same-source previous-day candidate is absent,
    • use previous-day latest_total_mileage_km as first_total_mileage_km,
    • compute daily_mileage_km from previous-day baseline when present,
    • become INVALID_DELTA with reason outside_daily_range when the delta is negative or above maxSelectedDailyMileageKM.
  • Added generic stale-final cleanup to ProjectDailyMileage in go/vehicle-gateway/internal/stats/source_mileage.go so vehicle_daily_mileage is deleted when no candidate remains selected for the exact (vin, stat_date, protocol) target.
  • Changed BACKFILL_METHOD default from scan to last_diff in go/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=1
    • ok 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=1
    • ok lingniu-vehicle-ingest/go/vehicle-gateway/cmd/stats-backfill 0.643s
    • ok 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=1
    • ok lingniu-vehicle-ingest/go/vehicle-gateway/cmd/capacity-check 0.419s
    • ok lingniu-vehicle-ingest/go/vehicle-gateway/cmd/gateway 0.397s
    • ok lingniu-vehicle-ingest/go/vehicle-gateway/cmd/history-writer 0.728s
    • ok lingniu-vehicle-ingest/go/vehicle-gateway/cmd/load-sim 0.698s
    • ok lingniu-vehicle-ingest/go/vehicle-gateway/cmd/nats-fast-writer 0.688s
    • ok lingniu-vehicle-ingest/go/vehicle-gateway/cmd/nats-kafka-bridge 0.683s
    • ok lingniu-vehicle-ingest/go/vehicle-gateway/cmd/realtime-api 0.574s
    • ok lingniu-vehicle-ingest/go/vehicle-gateway/cmd/stat-writer 0.534s
    • ok lingniu-vehicle-ingest/go/vehicle-gateway/cmd/stats-backfill 0.634s
    • ok lingniu-vehicle-ingest/go/vehicle-gateway/internal/capacity 0.834s
    • ok lingniu-vehicle-ingest/go/vehicle-gateway/internal/envelope 0.738s
    • ok lingniu-vehicle-ingest/go/vehicle-gateway/internal/eventbus 0.758s
    • ok lingniu-vehicle-ingest/go/vehicle-gateway/internal/gateway 0.483s
    • ok lingniu-vehicle-ingest/go/vehicle-gateway/internal/health 0.384s
    • ok lingniu-vehicle-ingest/go/vehicle-gateway/internal/history 0.502s
    • ok lingniu-vehicle-ingest/go/vehicle-gateway/internal/identity 0.631s
    • ok lingniu-vehicle-ingest/go/vehicle-gateway/internal/loadsim 0.640s
    • ok 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.622s
    • ok lingniu-vehicle-ingest/go/vehicle-gateway/internal/protocol/jt808 0.371s
    • ok lingniu-vehicle-ingest/go/vehicle-gateway/internal/protocol/yutongmqtt 0.384s
    • ok lingniu-vehicle-ingest/go/vehicle-gateway/internal/realtime 0.496s
    • ok lingniu-vehicle-ingest/go/vehicle-gateway/internal/stats 0.443s
    • ? lingniu-vehicle-ingest/go/vehicle-gateway/internal/topics [no test files]