feat(platform): focus vehicle service customer copy

This commit is contained in:
lingniu
2026-07-06 07:01:23 +08:00
parent 5f2b3672cb
commit 887c92cd70
6 changed files with 12 additions and 9 deletions

View File

@@ -3896,7 +3896,7 @@ export function Dashboard({
<Tag color="blue"></Tag>
</div>
<Typography.Text type="secondary" className="vp-customer-problem-principle">
GB32960JT808MQTT
</Typography.Text>
<div className="vp-customer-problem-grid">
{customerProblemDesk.map((item) => (

View File

@@ -2541,7 +2541,7 @@ export function History({
</Typography.Title>
<Typography.Text type="secondary">
GB32960JT808MQTT
</Typography.Text>
</div>
<div className="vp-history-evidence-chain-grid">

View File

@@ -2351,7 +2351,7 @@ export function Mileage({
</Space>
<Typography.Title heading={5} style={{ margin: 0 }}></Typography.Title>
<Typography.Text type="secondary">
GB32960JT808MQTT 线
线
</Typography.Text>
</div>
<div className="vp-mileage-next-grid">
@@ -2405,7 +2405,7 @@ export function Mileage({
title: '通道一致性',
value: sourceConsistencyText,
color: summary.sourceCount > 1 ? 'green' as const : 'orange' as const,
detail: 'GB32960、JT808、Yutong MQTT 只作为同一车辆服务的数据通道。'
detail: '不同接入来源只作为同一车辆服务的数据通道,用来支撑统计可信度。'
}
].map((item) => (
<div key={item.title} className="vp-monitor-metric">

View File

@@ -42,7 +42,7 @@ const alertRuleTemplates = [
issueType: 'NO_SOURCE',
level: 'P0',
owner: '平台接入',
trigger: '绑定车辆连续无 GB32960、JT808、MQTT 来源证据',
trigger: '绑定车辆连续无多接入来源证据',
notify: '立即通知接入运维30 分钟未恢复升级给业务责任人',
sla: '30 分钟确认'
},

View File

@@ -1506,7 +1506,7 @@ export function Vehicles({
</Space>
<strong>{filters.keyword?.trim() || `${(summary?.totalVehicles ?? pagination.total).toLocaleString()} 辆车`}</strong>
<span>
GB32960808 MQTT
</span>
<Space wrap>
<Button size="small" theme="solid" type="primary" icon={<IconCopy />} onClick={copyCustomerServicePackage}></Button>

View File

@@ -2044,7 +2044,7 @@ test('dashboard exposes vehicle data center capability matrix', async () => {
expect(screen.getByRole('button', { name: '客户任务导航 处理告警 告警事件' })).toBeInTheDocument();
expect(screen.getByText('客户问题处理台')).toBeInTheDocument();
expect(screen.getByText('先回答客户问题,再下钻到车辆、轨迹、统计和证据。')).toBeInTheDocument();
expect(screen.getByText('客户首先关心的是车辆、位置、时间、里程、告警和导出;GB32960、JT808、MQTT 只放在证据层。')).toBeInTheDocument();
expect(screen.getByText('客户首先关心的是车辆、位置、时间、里程、告警和导出;接入来源只放在证据层。')).toBeInTheDocument();
expect(screen.getByRole('button', { name: '客户问题处理台 现在车辆在哪里 打开实时地图' })).toBeInTheDocument();
expect(screen.getByRole('button', { name: '客户问题处理台 这段时间跑了多少 查里程统计' })).toBeInTheDocument();
expect(screen.getByRole('button', { name: '客户问题处理台 轨迹能不能回放 打开轨迹回放' })).toBeInTheDocument();
@@ -3392,7 +3392,7 @@ 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('把车辆地图、实时监控、轨迹回放、里程统计、告警通知和历史导出放在同一份服务包里,客户不用理解不同接入来源的差异。')).toBeInTheDocument();
expect(screen.getByRole('button', { name: '客户车辆服务交付 车辆地图 打开地图' })).toBeInTheDocument();
expect(screen.getByRole('button', { name: '客户车辆服务交付 轨迹回放 回放轨迹' })).toBeInTheDocument();
expect(screen.getByRole('button', { name: '客户车辆服务交付 里程统计 里程统计' })).toBeInTheDocument();
@@ -4950,6 +4950,7 @@ test('renders quality issues as vehicle-service governance labels', async () =>
expect(screen.getAllByText('暂无数据来源').length).toBeGreaterThanOrEqual(1);
expect(screen.getAllByText('车辆服务').length).toBeGreaterThanOrEqual(1);
expect(screen.getAllByText('确认平台转发').length).toBeGreaterThan(0);
expect(screen.getByText('绑定车辆连续无多接入来源证据')).toBeInTheDocument();
expect(screen.getByText('车辆已绑定但没有任何来源证据,先确认平台转发、端口和订阅。')).toBeInTheDocument();
});
@@ -6904,6 +6905,7 @@ test('copies trajectory playback summary from history page', async () => {
expect(screen.getByRole('button', { name: '客户复盘导航 导出证据 复制交付' })).toBeInTheDocument();
expect(screen.getByText('客户时间窗证据链')).toBeInTheDocument();
expect(screen.getByText('同一辆车和同一时间窗,串起实时轨迹、里程核对、历史导出、字段裁剪和告警复盘。')).toBeInTheDocument();
expect(screen.getByText('接入来源只是证据来源;客户页面只回答车辆在哪里、跑了多少、能否导出、异常谁处理。')).toBeInTheDocument();
expect(screen.getByRole('button', { name: '客户时间窗证据链 轨迹复盘 查看轨迹' })).toBeInTheDocument();
expect(screen.getByRole('button', { name: '客户时间窗证据链 里程核对 里程统计' })).toBeInTheDocument();
expect(screen.getByRole('button', { name: '客户时间窗证据链 历史导出 明细证据' })).toBeInTheDocument();
@@ -10067,7 +10069,8 @@ test('shows vehicle-first statistics domains for one vehicle service', async ()
expect(screen.getByRole('button', { name: '里程交付 在线影响 在线态势' })).toBeInTheDocument();
expect(screen.getByText('里程报告建议')).toBeInTheDocument();
expect(screen.getByText('从车辆服务视角安排下一步')).toBeInTheDocument();
expect(screen.getByText('里程页不再让客户先理解 GB32960、JT808、MQTT 的差异,而是直接给出交付、轨迹回放、历史查询、导出和在线影响的下一步动作。')).toBeInTheDocument();
expect(screen.getByText('里程页不再让客户先理解不同接入协议的差异,而是直接给出交付、轨迹回放、历史查询、导出和在线影响的下一步动作。')).toBeInTheDocument();
expect(screen.queryByText(/GB32960、JT808|Yutong MQTT/)).not.toBeInTheDocument();
expect(screen.getByRole('button', { name: '里程报告建议 先完成发布复核 发布审计' })).toBeInTheDocument();
expect(screen.getByRole('button', { name: '里程报告建议 优先复核异常日 轨迹回放' })).toBeInTheDocument();
expect(screen.getByRole('button', { name: '里程报告建议 拉齐全量明细 导出明细' })).toBeInTheDocument();