fix(platform): align vehicle detail service statuses

This commit is contained in:
lingniu
2026-07-04 06:02:32 +08:00
parent a60f87c9e7
commit eb7c47b4f5
2 changed files with 21 additions and 2 deletions

View File

@@ -259,6 +259,15 @@ func TestHandlerVehicleServiceIncludesVehicleLevelStatus(t *testing.T) {
if body.Data.ServiceStatus.OnlineSourceCount != 1 || body.Data.ServiceStatus.SourceCount != 3 {
t.Fatalf("vehicle service should expose source counts, got %+v body=%s", body.Data.ServiceStatus, rec.Body.String())
}
if body.Data.Resolution == nil || body.Data.Resolution.ServiceStatus == nil || body.Data.Resolution.ServiceStatus.Title != body.Data.ServiceStatus.Title {
t.Fatalf("resolution should reuse canonical vehicle service status, resolution=%+v service=%+v", body.Data.Resolution, body.Data.ServiceStatus)
}
if body.Data.Identity == nil || body.Data.Identity.ServiceStatus == nil || body.Data.Identity.ServiceStatus.Title != body.Data.ServiceStatus.Title {
t.Fatalf("identity should reuse canonical vehicle service status, identity=%+v service=%+v", body.Data.Identity, body.Data.ServiceStatus)
}
if body.Data.RealtimeSummary == nil || body.Data.RealtimeSummary.ServiceStatus == nil || body.Data.RealtimeSummary.ServiceStatus.Title != body.Data.ServiceStatus.Title {
t.Fatalf("realtime summary should reuse canonical vehicle service status, summary=%+v service=%+v", body.Data.RealtimeSummary, body.Data.ServiceStatus)
}
}
func TestHandlerVehicleServiceIncludesUnifiedOverview(t *testing.T) {

View File

@@ -291,6 +291,16 @@ func (s *Service) VehicleDetail(ctx context.Context, vin string, protocol string
sourceStatus := vehicleSourceStatus(vehicles.Items, realtime.Items, history.Items, raw.Items, mileage.Items)
sourceStatus = s.enrichVehicleSourceStatus(ctx, queryVIN, sourceStatus)
sourceStatus = completeVehicleSourceStatus(sourceStatus, protocol)
serviceStatus := buildVehicleServiceStatus(true, sourceStatus)
resolution.ServiceStatus = serviceStatus
if identity != nil {
identity.ServiceStatus = serviceStatus
}
if summary != nil {
summary.ServiceStatus = serviceStatus
}
serviceOverview := buildVehicleServiceOverview(resolvedVIN, keyword, &resolution, identity, summary, sourceStatus, history, raw, mileage, quality)
serviceOverview.ServiceStatus = serviceStatus
return VehicleDetail{
VIN: resolvedVIN,
LookupKey: keyword,
@@ -298,8 +308,8 @@ func (s *Service) VehicleDetail(ctx context.Context, vin string, protocol string
Resolution: &resolution,
Identity: identity,
RealtimeSummary: summary,
ServiceStatus: buildVehicleServiceStatus(true, sourceStatus),
ServiceOverview: buildVehicleServiceOverview(resolvedVIN, keyword, &resolution, identity, summary, sourceStatus, history, raw, mileage, quality),
ServiceStatus: serviceStatus,
ServiceOverview: serviceOverview,
SourceConsistency: buildVehicleSourceConsistency(sourceStatus, realtime.Items, protocol),
Sources: sourceNames(sourceStatus),
SourceStatus: sourceStatus,