From d6ae2688a8ef620ee9b3739b61d5ed58eeedf12c Mon Sep 17 00:00:00 2001 From: lingniu Date: Sun, 5 Jul 2026 15:10:40 +0800 Subject: [PATCH] feat(platform): align vehicle center with statistics query --- .../apps/web/src/pages/Vehicles.tsx | 20 +++++++++---------- .../apps/web/src/test/App.test.tsx | 8 ++++---- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/vehicle-data-platform/apps/web/src/pages/Vehicles.tsx b/vehicle-data-platform/apps/web/src/pages/Vehicles.tsx index 4840c986..c4ed0e85 100644 --- a/vehicle-data-platform/apps/web/src/pages/Vehicles.tsx +++ b/vehicle-data-platform/apps/web/src/pages/Vehicles.tsx @@ -298,13 +298,13 @@ function vehicleCustomerLookupText({ `在线车辆:${(summary?.onlineVehicles ?? 0).toLocaleString()};待绑定:${(summary?.unboundVehicles ?? 0).toLocaleString()};暂无来源:${(summary?.noDataVehicles ?? 0).toLocaleString()};档案不完整:${(summary?.archiveIncompleteVehicles ?? 0).toLocaleString()}`, '', serviceMode === '单车服务' - ? '推荐路径:先看车辆档案和实时监控,再按需要进入轨迹回放、里程统计、历史数据导出。' + ? '推荐路径:先看车辆档案和实时监控,再按需要进入轨迹回放、统计查询、历史数据导出。' : '推荐路径:先筛在线/离线/无来源/待绑定车辆,再进入地图态势或导出处置清单。', `车辆服务:${appURL(scopeHash)}`, `实时监控:${appURL(buildAppHash({ page: 'realtime', ...singleVehicleFilters }))}`, `车辆地图:${appURL(buildAppHash({ page: 'map', keyword: filters.keyword, protocol: filters.protocol, filters: mapFilters }))}`, `轨迹回放:${appURL(buildAppHash({ page: 'history', ...singleVehicleFilters, filters: { tab: 'location' } }))}`, - `里程统计:${appURL(buildAppHash({ page: 'mileage', ...singleVehicleFilters }))}`, + `统计查询:${appURL(buildAppHash({ page: 'mileage', ...singleVehicleFilters }))}`, `历史数据:${appURL(buildAppHash({ page: 'history', ...singleVehicleFilters, filters: { tab: 'raw', includeFields: 'true' } }))}` ]; return lines.join('\n'); @@ -347,13 +347,13 @@ function vehicleCustomerServicePackageText({ `车辆地图:${appURL(buildAppHash({ page: 'map', keyword: filters.keyword, protocol: filters.protocol, filters: mapFilters }))}`, `实时监控:${appURL(buildAppHash({ page: 'realtime', ...singleVehicleFilters, filters: filters.keyword?.trim() ? undefined : { ...filters, online: filters.online || 'online' } }))}`, `轨迹回放:${appURL(buildAppHash({ page: 'history', ...singleVehicleFilters, filters: { tab: 'location' } }))}`, - `里程统计:${appURL(buildAppHash({ page: 'mileage', ...singleVehicleFilters }))}`, + `统计查询:${appURL(buildAppHash({ page: 'mileage', ...singleVehicleFilters }))}`, `告警通知:${appURL(buildAppHash({ page: 'alert-events', ...singleVehicleFilters, filters }))}`, `历史数据导出:${appURL(buildAppHash({ page: 'history', ...singleVehicleFilters, filters: { tab: 'raw', includeFields: 'true' } }))}`, '', '交付口径:', '1. 客户先看地图与实时状态,判断车辆是否在线和位置是否可信', - '2. 单车问题进入轨迹回放和里程统计,确认时间窗内发生了什么', + '2. 单车问题进入轨迹回放和统计查询,确认时间窗内发生了什么', '3. 异常车辆进入告警通知,带上原始记录和历史数据作为证据', '4. 对外交付时优先使用车辆口径,协议来源只作为证据说明' ].join('\n'); @@ -697,9 +697,9 @@ export function Vehicles({ onClick: () => onOpenHistory?.({ ...serviceScopeFilters, tab: 'location' }) }, { - label: '里程统计', + label: '统计查询', value: filters.keyword?.trim() ? '区间核对' : '车辆口径', - detail: filters.keyword?.trim() ? '按当前车辆核对区间里程和日里程。' : '输入车辆后查看里程闭合统计。', + detail: filters.keyword?.trim() ? '按当前车辆核对区间里程、日里程和统计结果。' : '输入车辆后查看时间窗统计结果。', color: filters.keyword?.trim() ? 'green' as const : 'grey' as const, disabled: !onOpenMileage || !filters.keyword?.trim(), onClick: () => onOpenMileage?.(serviceScopeFilters) @@ -780,11 +780,11 @@ export function Vehicles({ onClick: () => onOpenHistory?.({ ...serviceScopeFilters, tab: 'location' }) }, { - label: '里程统计', + label: '统计查询', value: filters.keyword?.trim() ? '区间复核' : '单车后可用', detail: '核对时间窗里程、日里程和累计口径,支撑 BI 与客户问询。', color: filters.keyword?.trim() ? 'orange' as const : 'grey' as const, - action: '查看里程', + action: '统计查询', disabled: !onOpenMileage || !filters.keyword?.trim(), onClick: () => onOpenMileage?.(serviceScopeFilters) }, @@ -914,7 +914,7 @@ export function Vehicles({ return (
- +
@@ -1022,7 +1022,7 @@ export function Vehicles({ {filters.keyword?.trim() || `${(summary?.totalVehicles ?? pagination.total).toLocaleString()} 辆车`} - 把车辆地图、实时监控、轨迹回放、里程统计、告警通知和历史导出放在同一份服务包里,客户不用理解 GB32960、808 或 MQTT 的差异。 + 把车辆地图、实时监控、轨迹回放、统计查询、告警通知和历史导出放在同一份服务包里,客户不用理解 GB32960、808 或 MQTT 的差异。 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 fba865e6..d5eeb6c2 100644 --- a/vehicle-data-platform/apps/web/src/test/App.test.tsx +++ b/vehicle-data-platform/apps/web/src/test/App.test.tsx @@ -2073,14 +2073,14 @@ test('shows vehicle service result summary on vehicle list filters', async () => expect(screen.getByText('客户车辆服务交付包')).toBeInTheDocument(); expect(screen.getByText('客户交付')).toBeInTheDocument(); expect(screen.getByText('车辆池包')).toBeInTheDocument(); - expect(screen.getByText('把车辆地图、实时监控、轨迹回放、里程统计、告警通知和历史导出放在同一份服务包里,客户不用理解 GB32960、808 或 MQTT 的差异。')).toBeInTheDocument(); + expect(screen.getByText('把车辆地图、实时监控、轨迹回放、统计查询、告警通知和历史导出放在同一份服务包里,客户不用理解 GB32960、808 或 MQTT 的差异。')).toBeInTheDocument(); expect(screen.getByRole('button', { name: '客户车辆服务交付 车辆地图 打开地图' })).toBeInTheDocument(); expect(screen.getByRole('button', { name: '客户车辆服务交付 轨迹回放 回放轨迹' })).toBeInTheDocument(); - expect(screen.getByRole('button', { name: '客户车辆服务交付 里程统计 查看里程' })).toBeInTheDocument(); + expect(screen.getByRole('button', { name: '客户车辆服务交付 统计查询 统计查询' })).toBeInTheDocument(); expect(screen.getByRole('button', { name: '客户车辆服务交付 告警通知 查看告警' })).toBeInTheDocument(); expect(screen.getByRole('button', { name: '客户车辆服务交付 历史导出 导出清单' })).toBeInTheDocument(); expect(screen.getAllByText('车辆地图').length).toBeGreaterThanOrEqual(1); - expect(screen.getAllByText('里程统计').length).toBeGreaterThanOrEqual(1); + expect(screen.getAllByText('统计查询').length).toBeGreaterThanOrEqual(1); expect(screen.getAllByText('数据导出').length).toBeGreaterThanOrEqual(1); expect(screen.getByText('当前页服务判读')).toBeInTheDocument(); expect(screen.getByText('建议下一步')).toBeInTheDocument(); @@ -2127,7 +2127,7 @@ test('shows vehicle service result summary on vehicle list filters', async () => expect(writeText).toHaveBeenCalledWith(expect.stringContaining('服务范围:当前车辆池')); expect(writeText).toHaveBeenCalledWith(expect.stringContaining('车辆地图:http://localhost:3000/#/map?')); expect(writeText).toHaveBeenCalledWith(expect.stringContaining('轨迹回放:http://localhost:3000/#/history?tab=location')); - expect(writeText).toHaveBeenCalledWith(expect.stringContaining('里程统计:http://localhost:3000/#/mileage')); + expect(writeText).toHaveBeenCalledWith(expect.stringContaining('统计查询:http://localhost:3000/#/mileage')); expect(writeText).toHaveBeenCalledWith(expect.stringContaining('告警通知:http://localhost:3000/#/alert-events?coverage=multi')); expect(writeText).toHaveBeenCalledWith(expect.stringContaining('历史数据导出:http://localhost:3000/#/history?tab=raw&includeFields=true')); });