feat(platform): align vehicle center with statistics query
This commit is contained in:
@@ -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 (
|
||||
<div className="vp-page">
|
||||
<PageHeader title="车辆服务" description="围绕车辆完成实时监控、地图查看、轨迹回放、里程统计和数据导出,协议来源只作为证据过滤条件" />
|
||||
<PageHeader title="车辆服务" description="围绕车辆完成实时监控、地图查看、轨迹回放、统计查询和数据导出,协议来源只作为证据过滤条件" />
|
||||
<Card bordered title="车辆服务台">
|
||||
<div className="vp-vehicle-service-desk">
|
||||
<div className="vp-vehicle-service-summary">
|
||||
@@ -1022,7 +1022,7 @@ export function Vehicles({
|
||||
</Space>
|
||||
<strong>{filters.keyword?.trim() || `${(summary?.totalVehicles ?? pagination.total).toLocaleString()} 辆车`}</strong>
|
||||
<span>
|
||||
把车辆地图、实时监控、轨迹回放、里程统计、告警通知和历史导出放在同一份服务包里,客户不用理解 GB32960、808 或 MQTT 的差异。
|
||||
把车辆地图、实时监控、轨迹回放、统计查询、告警通知和历史导出放在同一份服务包里,客户不用理解 GB32960、808 或 MQTT 的差异。
|
||||
</span>
|
||||
<Space wrap>
|
||||
<Button size="small" theme="solid" type="primary" icon={<IconCopy />} onClick={copyCustomerServicePackage}>复制交付包</Button>
|
||||
|
||||
@@ -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'));
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user