diff --git a/vehicle-data-platform/apps/web/src/pages/Dashboard.tsx b/vehicle-data-platform/apps/web/src/pages/Dashboard.tsx index 7c07d681..9e0a55d4 100644 --- a/vehicle-data-platform/apps/web/src/pages/Dashboard.tsx +++ b/vehicle-data-platform/apps/web/src/pages/Dashboard.tsx @@ -20,6 +20,13 @@ const serviceStatusColor: Record = identity_required: 'orange' }; +const serviceStatusTitle: Record = { + healthy: '服务正常', + degraded: '部分来源离线', + offline: '车辆离线', + identity_required: '身份未绑定' +}; + function formatLag(value?: number | null) { return value == null ? '未接入' : value.toLocaleString(); } @@ -47,9 +54,11 @@ export function Dashboard({ onOpenVehicle, onOpenQuality }: { onOpenVehicle: (vi const [qualityIssues, setQualityIssues] = useState([]); const [loading, setLoading] = useState(true); const [coverageLoading, setCoverageLoading] = useState(false); + const [coverageServiceStatusTitle, setCoverageServiceStatusTitle] = useState(''); const loadCoverage = (values?: Record) => { setCoverageLoading(true); + setCoverageServiceStatusTitle(values?.serviceStatus ? serviceStatusTitle[values.serviceStatus] ?? values.serviceStatus : ''); const params = new URLSearchParams({ limit: '8' }); if (values?.keyword) params.set('keyword', values.keyword); if (values?.coverage) params.set('coverage', values.coverage); @@ -193,6 +202,11 @@ export function Dashboard({ onOpenVehicle, onOpenQuality }: { onOpenVehicle: (vi /> + {coverageServiceStatusTitle ? ( +
+ 当前筛选:{coverageServiceStatusTitle} +
+ ) : null}
loadCoverage(values as Record)} style={{ marginBottom: 12 }}> 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 479973b1..11cf2e3a 100644 --- a/vehicle-data-platform/apps/web/src/test/App.test.tsx +++ b/vehicle-data-platform/apps/web/src/test/App.test.tsx @@ -215,6 +215,7 @@ test('filters dashboard coverage by service status', async () => { await waitFor(() => { expect(fetchMock).toHaveBeenCalledWith(expect.stringContaining('serviceStatus=degraded'), undefined); }); + expect(screen.getByText('当前筛选:部分来源离线')).toBeInTheDocument(); }); test('opens dashboard coverage from service status distribution', async () => {