diff --git a/vehicle-data-platform/apps/web/src/pages/Mileage.tsx b/vehicle-data-platform/apps/web/src/pages/Mileage.tsx index a73b6039..80f0ef7f 100644 --- a/vehicle-data-platform/apps/web/src/pages/Mileage.tsx +++ b/vehicle-data-platform/apps/web/src/pages/Mileage.tsx @@ -526,7 +526,7 @@ function onlineStatusHandoffText({ ? protocolStats.map((item) => `${item.protocol} ${item.online.toLocaleString()}/${item.total.toLocaleString()}`).join(';') : '-'; return [ - '【车辆在线状态交接】', + '【车辆在线状态说明】', `车辆范围:${keyword}`, `数据通道:${protocol}`, `在线概览:${summary.onlineVehicleCount.toLocaleString()} 在线 / ${summary.offlineVehicleCount.toLocaleString()} 离线 / 在线率 ${formatPercent(summary.onlineRatePercent)}`, @@ -570,7 +570,7 @@ function onlineOperationsReportText({ return Number(row.offlineDurationMinutes ?? 0) > Number(current.offlineDurationMinutes ?? 0) ? row : current; }, undefined); return [ - '【在线统计运营态势】', + '【在线影响评估】', `车辆范围:${keyword}`, `数据通道:${protocol}`, `在线概览:${summary.onlineVehicleCount.toLocaleString()} 在线 / ${summary.offlineVehicleCount.toLocaleString()} 离线 / 在线率 ${formatPercent(summary.onlineRatePercent)}`, @@ -722,7 +722,7 @@ export function Mileage({ const publishAuditConclusion = publishBlockedCount > 0 ? '阻断发布' : publishReviewCount > 0 ? '复核后发布' : '可发布'; const publishAuditColor = publishBlockedCount > 0 ? 'red' as const : publishReviewCount > 0 ? 'orange' as const : 'green' as const; const statisticsImpactColor = publishAuditColor; - const statisticsImpactLevel = publishAuditConclusion === '可发布' ? '可运营发布' : publishAuditConclusion === '阻断发布' ? '发布阻断' : '影响待复核'; + const statisticsImpactLevel = publishAuditConclusion === '可发布' ? '可交付报表' : publishAuditConclusion === '阻断发布' ? '发布阻断' : '影响待复核'; const mileageDeliveryState = publishAuditConclusion === '可发布' && confidenceStatus === '可用于 BI' ? '可交付' : publishAuditConclusion === '阻断发布' ? '暂缓交付' : '复核后交付'; @@ -749,7 +749,7 @@ export function Mileage({ { label: '异常影响', value: `${anomalyRows.length.toLocaleString()} 条`, - detail: anomalyRows.length > 0 ? '异常会影响BI与运营日报,需要回到证据复核。' : '当前明细未命中异常标记。', + detail: anomalyRows.length > 0 ? '异常会影响客户报表和 BI 口径,需要回到证据复核。' : '当前明细未命中异常标记。', color: anomalyRows.length > 0 ? 'orange' as const : 'green' as const }, { @@ -763,7 +763,7 @@ export function Mileage({ { label: '交付结论', value: mileageDeliveryState, - detail: mileageDeliveryState === '可交付' ? '可进入客户查询、BI发布和运营日报。' : mileageDeliveryState === '暂缓交付' ? '存在阻断项,先完成证据复核。' : '需补齐闭合、覆盖、异常或在线证据后交付。', + detail: mileageDeliveryState === '可交付' ? '可进入客户查询、BI发布和报表交付。' : mileageDeliveryState === '暂缓交付' ? '存在阻断项,先完成证据复核。' : '需补齐闭合、覆盖、异常或在线证据后交付。', color: mileageDeliveryColor, action: '复制决策', onClick: () => copyMileageDecision() @@ -1022,7 +1022,7 @@ export function Mileage({ step: '05', title: '明细导出', value: `${rows.length.toLocaleString()} 当前页`, - detail: '导出明细并附带统计口径,支撑BI、客户复盘和运营日报。', + detail: '导出明细并附带统计口径,支撑 BI 核对、客户复盘和报表交付。', action: '导出明细', color: rows.length > 0 ? 'blue' as const : 'grey' as const, disabled: rows.length === 0, @@ -1101,7 +1101,7 @@ export function Mileage({ { title: '导出明细证据', value: `${rows.length.toLocaleString()} 条当前页`, - detail: `覆盖 ${formatPercent(pageCoverageRate)},用于客户复盘、BI核对和运营日报附件。`, + detail: `覆盖 ${formatPercent(pageCoverageRate)},用于客户复盘、BI 核对和报表附件。`, action: '导出CSV', color: rows.length > 0 ? 'blue' as const : 'grey' as const, disabled: rows.length === 0, @@ -1390,7 +1390,7 @@ export function Mileage({ rows: onlineRows, total: onlinePagination.total }), - '在线状态交接' + '在线状态说明' ); }; const copyOnlineOperationsReport = () => { @@ -1406,7 +1406,7 @@ export function Mileage({ statisticsURL: appURL(window.location.hash || buildAppHash({ page: 'mileage', keyword: currentVehicleKeyword, protocol: currentProtocol })), vehicleURL }), - '在线统计运营态势' + '在线影响评估' ); }; const mileageDeliveryConsoleItems = [ @@ -1414,7 +1414,7 @@ export function Mileage({ label: '交付状态', value: mileageDeliveryState, detail: mileageDeliveryState === '可交付' - ? '可进入客户查询、BI发布和运营日报。' + ? '可进入客户查询、BI发布和报表交付。' : mileageDeliveryState === '暂缓交付' ? '存在阻断项,先完成闭合和异常复核。' : '复核闭合、覆盖、异常或在线影响后再交付。', @@ -1504,7 +1504,7 @@ export function Mileage({ { label: '报表导出', value: `${rows.length.toLocaleString()} 条`, - detail: '导出当前明细,作为客户对账、BI核对和运营日报附件。', + detail: '导出当前明细,作为客户对账、BI 核对和报表附件。', color: rows.length > 0 ? 'blue' as const : 'grey' as const, action: '导出CSV', disabled: rows.length === 0, @@ -1575,7 +1575,7 @@ export function Mileage({ { title: '发布判断', value: publishAuditConclusion, - detail: publishAuditConclusion === '可发布' ? '当前统计范围可进入运营日报或 BI 口径。' : '发布前需要补齐闭合、覆盖、异常或在线证据。', + detail: publishAuditConclusion === '可发布' ? '当前统计范围可进入客户报表或 BI 口径。' : '发布前需要补齐闭合、覆盖、异常或在线证据。', color: publishAuditColor, primaryAction: 'BI口径', secondaryAction: '发布审计', @@ -2476,7 +2476,7 @@ export function Mileage({ 在线统计运营态势} + title={在线影响评估} style={{ marginTop: 16 }} >
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 441e7b29..cd9c3ec2 100644 --- a/vehicle-data-platform/apps/web/src/test/App.test.tsx +++ b/vehicle-data-platform/apps/web/src/test/App.test.tsx @@ -9968,8 +9968,8 @@ test('shows vehicle-first statistics domains for one vehicle service', async () expect(screen.getByText('闭合影响')).toBeInTheDocument(); expect(screen.getByText('异常影响')).toBeInTheDocument(); expect(screen.getAllByText('发布判断').length).toBeGreaterThanOrEqual(1); - expect(screen.getByText('在线统计运营态势')).toBeInTheDocument(); - expect(screen.getByRole('button', { name: '复制在线态势' })).toBeInTheDocument(); + expect(screen.getByText('在线影响评估')).toBeInTheDocument(); + expect(screen.getByRole('button', { name: '复制在线影响' })).toBeInTheDocument(); expect(screen.getByText('离线车辆')).toBeInTheDocument(); expect(screen.getAllByText('来源覆盖').length).toBeGreaterThanOrEqual(1); expect(screen.getByText('当前页离线')).toBeInTheDocument(); @@ -9994,8 +9994,8 @@ test('shows vehicle-first statistics domains for one vehicle service', async () expect(writeText).toHaveBeenCalledWith(expect.stringContaining('决策结论:复核后交付')); expect(writeText).toHaveBeenCalledWith(expect.stringContaining('客户判断路径:')); expect(writeText).toHaveBeenCalledWith(expect.stringContaining('1. 先看区间闭合:区间总值必须等于每日里程之和。')); - fireEvent.click(screen.getByRole('button', { name: '复制在线态势' })); - expect(writeText).toHaveBeenCalledWith(expect.stringContaining('【在线统计运营态势】')); + fireEvent.click(screen.getByRole('button', { name: '复制在线影响' })); + expect(writeText).toHaveBeenCalledWith(expect.stringContaining('【在线影响评估】')); expect(writeText).toHaveBeenCalledWith(expect.stringContaining('车辆范围:VIN-STATS-SERVICE')); expect(writeText).toHaveBeenCalledWith(expect.stringContaining('数据通道:JT808')); expect(writeText).toHaveBeenCalledWith(expect.stringContaining('在线概览:3 在线 / 1 离线 / 在线率 75%')); @@ -10015,7 +10015,7 @@ test('shows vehicle-first statistics domains for one vehicle service', async () expect(screen.getByText('粤A离线1')).toBeInTheDocument(); expect(screen.getAllByText('2 小时').length).toBeGreaterThan(0); fireEvent.click(screen.getByRole('button', { name: '复制在线状态清单' })); - expect(writeText).toHaveBeenCalledWith(expect.stringContaining('【车辆在线状态交接】')); + expect(writeText).toHaveBeenCalledWith(expect.stringContaining('【车辆在线状态说明】')); expect(writeText).toHaveBeenCalledWith(expect.stringContaining('车辆范围:VIN-STATS-SERVICE')); expect(writeText).toHaveBeenCalledWith(expect.stringContaining('在线概览:3 在线 / 1 离线 / 在线率 75%')); expect(writeText).toHaveBeenCalledWith(expect.stringContaining('来源在线:JT808 2/3;GB32960 1/2'));