diff --git a/vehicle-data-platform/apps/web/src/pages/Dashboard.tsx b/vehicle-data-platform/apps/web/src/pages/Dashboard.tsx index a84e6e3e..a4595519 100644 --- a/vehicle-data-platform/apps/web/src/pages/Dashboard.tsx +++ b/vehicle-data-platform/apps/web/src/pages/Dashboard.tsx @@ -3896,7 +3896,7 @@ export function Dashboard({ 车辆服务优先 - 客户首先关心的是车辆、位置、时间、里程、告警和导出;GB32960、JT808、MQTT 只放在证据层。 + 客户首先关心的是车辆、位置、时间、里程、告警和导出;接入来源只放在证据层。
{customerProblemDesk.map((item) => ( diff --git a/vehicle-data-platform/apps/web/src/pages/History.tsx b/vehicle-data-platform/apps/web/src/pages/History.tsx index 9deda3fd..644b4803 100644 --- a/vehicle-data-platform/apps/web/src/pages/History.tsx +++ b/vehicle-data-platform/apps/web/src/pages/History.tsx @@ -2541,7 +2541,7 @@ export function History({ 同一辆车和同一时间窗,串起实时轨迹、里程核对、历史导出、字段裁剪和告警复盘。 - GB32960、JT808、MQTT 只是证据来源;客户页面只回答车辆在哪里、跑了多少、能否导出、异常谁处理。 + 接入来源只是证据来源;客户页面只回答车辆在哪里、跑了多少、能否导出、异常谁处理。
diff --git a/vehicle-data-platform/apps/web/src/pages/Mileage.tsx b/vehicle-data-platform/apps/web/src/pages/Mileage.tsx index d46b1710..749c582a 100644 --- a/vehicle-data-platform/apps/web/src/pages/Mileage.tsx +++ b/vehicle-data-platform/apps/web/src/pages/Mileage.tsx @@ -2351,7 +2351,7 @@ export function Mileage({ 从车辆服务视角安排下一步 - 里程页不再让客户先理解 GB32960、JT808、MQTT 的差异,而是直接给出交付、轨迹回放、历史查询、导出和在线影响的下一步动作。 + 里程页不再让客户先理解不同接入协议的差异,而是直接给出交付、轨迹回放、历史查询、导出和在线影响的下一步动作。
@@ -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) => (
diff --git a/vehicle-data-platform/apps/web/src/pages/Quality.tsx b/vehicle-data-platform/apps/web/src/pages/Quality.tsx index f37bfe46..0187cc84 100644 --- a/vehicle-data-platform/apps/web/src/pages/Quality.tsx +++ b/vehicle-data-platform/apps/web/src/pages/Quality.tsx @@ -42,7 +42,7 @@ const alertRuleTemplates = [ issueType: 'NO_SOURCE', level: 'P0', owner: '平台接入', - trigger: '绑定车辆连续无 GB32960、JT808、MQTT 来源证据', + trigger: '绑定车辆连续无多接入来源证据', notify: '立即通知接入运维,30 分钟未恢复升级给业务责任人', sla: '30 分钟确认' }, diff --git a/vehicle-data-platform/apps/web/src/pages/Vehicles.tsx b/vehicle-data-platform/apps/web/src/pages/Vehicles.tsx index 4aa99386..d7aa7eaa 100644 --- a/vehicle-data-platform/apps/web/src/pages/Vehicles.tsx +++ b/vehicle-data-platform/apps/web/src/pages/Vehicles.tsx @@ -1506,7 +1506,7 @@ export function Vehicles({ {filters.keyword?.trim() || `${(summary?.totalVehicles ?? pagination.total).toLocaleString()} 辆车`} - 把车辆地图、实时监控、轨迹回放、里程统计、告警通知和历史导出放在同一份服务包里,客户不用理解 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 46e231a1..1fe884c9 100644 --- a/vehicle-data-platform/apps/web/src/test/App.test.tsx +++ b/vehicle-data-platform/apps/web/src/test/App.test.tsx @@ -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();