feat(platform): frame mileage online impact for customers
This commit is contained in:
@@ -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({
|
||||
<Card
|
||||
bordered
|
||||
loading={onlineLoading}
|
||||
title={<Space><span>在线统计运营态势</span><Button size="small" onClick={copyOnlineOperationsReport}>复制在线态势</Button></Space>}
|
||||
title={<Space><span>在线影响评估</span><Button size="small" onClick={copyOnlineOperationsReport}>复制在线影响</Button></Space>}
|
||||
style={{ marginTop: 16 }}
|
||||
>
|
||||
<div className="vp-online-ops-board">
|
||||
|
||||
@@ -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'));
|
||||
|
||||
Reference in New Issue
Block a user