feat: build vehicle data platform and production pipeline

This commit is contained in:
lingniu
2026-07-14 12:35:33 +08:00
parent b452be3b94
commit bb59303a4b
270 changed files with 88016 additions and 1975 deletions

View File

@@ -46,6 +46,7 @@ type LocationRow struct {
Longitude float64 `json:"longitude"`
SpeedKMH *float64 `json:"speed_kmh,omitempty"`
TotalMileageKM *float64 `json:"total_mileage_km,omitempty"`
TotalMileageAt string `json:"total_mileage_event_time,omitempty"`
SOCPercent *float64 `json:"soc_percent,omitempty"`
AltitudeM *float64 `json:"altitude_m,omitempty"`
DirectionDeg *float64 `json:"direction_deg,omitempty"`
@@ -124,7 +125,7 @@ func (r *LocationQueryRepository) Query(ctx context.Context, query RealtimeTable
query = normalizeRealtimeTableQuery(query)
sqlText, args := buildRealtimeSelectSQL(
"vehicle_realtime_location",
"protocol, vin, plate, event_time, latitude, longitude, speed_kmh, total_mileage_km, soc_percent, altitude_m, direction_deg, alarm_flag, status_flag, received_at, event_id, updated_at",
"protocol, vin, plate, event_time, latitude, longitude, speed_kmh, total_mileage_km, total_mileage_event_time, soc_percent, altitude_m, direction_deg, alarm_flag, status_flag, received_at, event_id, updated_at",
query,
)
rows, err := r.db.QueryContext(ctx, sqlText, args...)
@@ -136,7 +137,7 @@ func (r *LocationQueryRepository) Query(ctx context.Context, query RealtimeTable
out := make([]LocationRow, 0)
for rows.Next() {
var row LocationRow
var eventTime, receivedAt, updatedAt scanSQLDateTime
var eventTime, mileageAt, receivedAt, updatedAt scanSQLDateTime
var speed, mileage, soc, altitude, direction sql.NullFloat64
var alarm, status sql.NullInt64
if err := rows.Scan(
@@ -148,6 +149,7 @@ func (r *LocationQueryRepository) Query(ctx context.Context, query RealtimeTable
&row.Longitude,
&speed,
&mileage,
&mileageAt,
&soc,
&altitude,
&direction,
@@ -162,6 +164,7 @@ func (r *LocationQueryRepository) Query(ctx context.Context, query RealtimeTable
row.EventTime = eventTime.String
row.SpeedKMH = nullableFloat(speed)
row.TotalMileageKM = nullableFloat(mileage)
row.TotalMileageAt = mileageAt.String
row.SOCPercent = nullableFloat(soc)
row.AltitudeM = nullableFloat(altitude)
row.DirectionDeg = nullableFloat(direction)