diff --git a/vehicle-data-platform/apps/web/src/pages/VehicleDetail.tsx b/vehicle-data-platform/apps/web/src/pages/VehicleDetail.tsx
index bdb03810..01088d4c 100644
--- a/vehicle-data-platform/apps/web/src/pages/VehicleDetail.tsx
+++ b/vehicle-data-platform/apps/web/src/pages/VehicleDetail.tsx
@@ -4,6 +4,7 @@ import { useEffect, useMemo, useRef, useState } from 'react';
import { api } from '../api/client';
import type { QualityIssueRow, VehicleDetail as VehicleDetailData, VehicleSourceStatus } from '../api/types';
import { PageHeader } from '../components/PageHeader';
+import { SourceStatusTags } from '../components/SourceStatusTags';
import { StatusTag } from '../components/StatusTag';
import { isLikelyVIN } from '../domain/vehicleLookup';
@@ -307,7 +308,9 @@ export function VehicleDetail({
{ key: '在线', value: },
{
key: '数据来源',
- value: protocols.length > 0 ? {protocols.map((item) => {item})} : '-'
+ value: protocols.length > 0 ? (
+
+ ) : '-'
},
{ key: '在线来源', value: summary ? `${summary.onlineSourceCount}/${summary.sourceCount}` : '-' },
{ key: '最后位置时间', value: lastSeen },
@@ -335,6 +338,7 @@ export function VehicleDetail({
{activeProtocol ? `当前 ${activeProtocol}` : '当前 全部来源'}
+
diff --git a/vehicle-data-platform/apps/web/src/test/App.test.tsx b/vehicle-data-platform/apps/web/src/test/App.test.tsx
index 6e1136ff..ea864386 100644
--- a/vehicle-data-platform/apps/web/src/test/App.test.tsx
+++ b/vehicle-data-platform/apps/web/src/test/App.test.tsx
@@ -3450,6 +3450,9 @@ test('switches vehicle detail to a source from the source matrix', async () => {
render();
expect(await screen.findByText('VIN001')).toBeInTheDocument();
+ expect(screen.getAllByText('GB32960 在线').length).toBeGreaterThanOrEqual(1);
+ expect(screen.getAllByText('JT808 在线').length).toBeGreaterThanOrEqual(1);
+ expect(screen.getAllByText('YUTONG_MQTT 未接入').length).toBeGreaterThanOrEqual(1);
expect(screen.getByText('车辆服务角色')).toBeInTheDocument();
expect(screen.getByText('主来源')).toBeInTheDocument();
expect(screen.getByText('在线证据')).toBeInTheDocument();