feat(platform): align customer mileage service wording

This commit is contained in:
lingniu
2026-07-06 06:19:40 +08:00
parent e847e1c7e8
commit 536d37ca9b
9 changed files with 316 additions and 316 deletions

View File

@@ -188,8 +188,8 @@ function mileageSummaryText({
`当前页里程:${formatKm(pageMileageTotal)} km`,
`异常记录:${anomalyCount.toLocaleString()}`,
`最大单日:${peak}`,
'统计口径:区间总值等于各日里程之和',
`统计查询${statisticsURL}`,
'里程口径:区间总值等于各日里程之和',
`里程统计:${statisticsURL}`,
...(vehicleURL ? [`车辆服务:${vehicleURL}`] : [])
].join('\n');
}
@@ -249,7 +249,7 @@ function mileageDeliveryPackageText({
`在线影响:${onlineSummary.onlineVehicleCount.toLocaleString()} 在线 / ${onlineSummary.offlineVehicleCount.toLocaleString()} 离线 / 在线率 ${formatPercent(onlineSummary.onlineRatePercent)}`,
`发布判断:${publishAuditConclusion}`,
`可信度:${confidenceStatus}`,
'统计口径:日里程按首末总里程差值计算,区间总值应等于每日里程之和',
'里程口径:日里程按首末总里程差值计算,区间总值应等于每日里程之和',
`里程统计:${statisticsURL}`,
`轨迹复核:${appURL(buildAppHash({ page: 'history', keyword: filters.keyword?.trim() || '', protocol: filters.protocol?.trim() || '', filters: { ...(dateFrom ? { dateFrom } : {}), ...(dateTo ? { dateTo } : {}) } }))}`,
`历史明细:${appURL(buildAppHash({ page: 'history-query', keyword: filters.keyword?.trim() || '', protocol: filters.protocol?.trim() || '', filters: { ...(dateFrom ? { dateFrom } : {}), ...(dateTo ? { dateTo } : {}), tab: 'raw', includeFields: 'true' } }))}`,
@@ -368,7 +368,7 @@ function mileageReconciliationControlText({
`覆盖率:${formatPercent(pageCoverageRate)}`,
`在线影响:${onlineSummary.onlineVehicleCount.toLocaleString()} 在线 / ${onlineSummary.offlineVehicleCount.toLocaleString()} 离线 / 在线率 ${formatPercent(onlineSummary.onlineRatePercent)}`,
`轨迹证明:${peak}`,
`统计查询${statisticsURL}`,
`里程统计:${statisticsURL}`,
`报表导出:${statisticsURL}`,
`轨迹回放:${appURL(buildAppHash({ page: 'history', keyword: filters.keyword?.trim() || '', protocol: filters.protocol?.trim() || '', filters: { ...(dateFrom ? { dateFrom } : {}), ...(dateTo ? { dateTo } : {}) } }))}`,
`历史明细:${appURL(buildAppHash({ page: 'history-query', keyword: filters.keyword?.trim() || '', protocol: filters.protocol?.trim() || '', filters: { ...(dateFrom ? { dateFrom } : {}), ...(dateTo ? { dateTo } : {}), tab: 'raw', includeFields: 'true' } }))}`,
@@ -413,7 +413,7 @@ function mileageBIPublishText({
`车辆范围:${keyword}`,
`数据通道:${protocol}`,
`日期范围:${dateRange}`,
`统计口径:日里程按首末总里程差值计算,区间总值等于每日里程之和`,
`里程口径:日里程按首末总里程差值计算,区间总值等于每日里程之和`,
`累计里程:${formatKm(summary.totalMileageKm)} km`,
`明细合计:${formatKm(pageMileageTotal)} km`,
`闭合状态:${closureStatus}${closureDeltaKm == null ? '' : `,差值 ${formatKm(Math.abs(closureDeltaKm))} km`}`,
@@ -422,7 +422,7 @@ function mileageBIPublishText({
`通道一致性:${sourceConsistencyText}`,
`统计车辆:${summary.vehicleCount.toLocaleString()},记录:${summary.recordCount.toLocaleString()},来源:${summary.sourceCount.toLocaleString()}`,
`发布风险:${publishable ? '当前筛选范围闭合且无异常记录' : '存在分页未全量、异常记录或闭合差值,需要先复核轨迹和历史明细'}`,
`统计查询${statisticsURL}`,
`里程统计:${statisticsURL}`,
...(vehicleURL ? [`车辆服务:${vehicleURL}`] : [])
].join('\n');
}
@@ -470,7 +470,7 @@ function statisticsImpactText({
`异常记录:${anomalyCount.toLocaleString()}`,
`当前页覆盖:${formatPercent(pageCoverageRate)}`,
`业务影响:${publishAuditConclusion === '可发布' ? '当前统计范围可进入运营和BI口径' : '当前统计范围需要先复核轨迹、历史明细和离线车辆影响'}`,
`统计查询${statisticsURL}`,
`里程统计:${statisticsURL}`,
...(vehicleURL ? [`车辆服务:${vehicleURL}`] : [])
].join('\n');
}
@@ -528,7 +528,7 @@ function mileagePublishAuditReport({
` 动作:${item.action}`
].join('\n')),
'',
`统计查询${statisticsURL}`,
`里程统计:${statisticsURL}`,
...(vehicleURL ? [`车辆服务:${vehicleURL}`] : [])
].join('\n');
}
@@ -554,7 +554,7 @@ function mileageEvidencePackageText(row: DailyMileageRow) {
`车辆服务:${appURL(buildAppHash({ page: 'detail', keyword: row.vin, protocol: row.source }))}`,
`轨迹证据:${appURL(buildAppHash({ page: 'history', keyword: row.vin, protocol: row.source, filters: evidenceFilters }))}`,
`历史明细:${appURL(buildAppHash({ page: 'history-query', keyword: row.vin, protocol: row.source, filters: { ...evidenceFilters, tab: 'raw', includeFields: 'true' } }))}`,
`统计查询${appURL(buildAppHash({ page: 'mileage', keyword: row.vin, protocol: row.source, filters: evidenceFilters }))}`
`里程统计:${appURL(buildAppHash({ page: 'mileage', keyword: row.vin, protocol: row.source, filters: evidenceFilters }))}`
].join('\n');
}
@@ -642,7 +642,7 @@ function onlineOperationsReportText({
'1. 在线率下降时先检查实时在线状态、数据接入和最后上报时间',
'2. 离线车辆优先打开车辆服务,核对实时、轨迹、历史明细和告警记录',
'3. 统计发布前确认离线车辆是否影响当日里程和区间闭合',
`统计查询${statisticsURL}`,
`里程统计:${statisticsURL}`,
...(vehicleURL ? [`车辆服务:${vehicleURL}`] : [])
].join('\n');
}
@@ -1074,7 +1074,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,
@@ -1133,7 +1133,7 @@ export function Mileage({
];
const mileageDeliveryNavigation = [
{
title: '确认统计口径',
title: '确认里程口径',
value: `${formatKm(summary.totalMileageKm)} km`,
detail: `范围 ${mileageRangeText},闭合状态 ${closureStatus},发布判断 ${publishAuditConclusion}`,
action: '复制统计摘要',
@@ -1914,7 +1914,7 @@ export function Mileage({
return (
<div className="vp-page">
<PageHeader
title="统计查询"
title="里程统计"
description="按车辆查询里程、在线影响、区间闭合、异常复核和数据交付"
actions={(
<Button disabled={!currentVehicleKeyword} onClick={() => onOpenVehicle(currentVehicleKeyword, currentProtocol)}>
@@ -2206,18 +2206,18 @@ export function Mileage({
<div className="vp-scope-bar">
<span className="vp-scope-label">{currentVehicleKeyword || '-'}</span>
<Tag color={currentProtocol ? 'blue' : 'green'}>{currentProtocol || '全部数据通道'}</Tag>
<Typography.Text type="tertiary">线</Typography.Text>
<Typography.Text type="tertiary">线</Typography.Text>
</div>
<Card bordered className="vp-mileage-customer-query-board" bodyStyle={{ padding: 0 }}>
<div className="vp-mileage-customer-query-summary">
<Space wrap>
<Tag color="blue"></Tag>
<Tag color="blue"></Tag>
<Tag color={mileageDeliveryColor}>{mileageDeliveryState}</Tag>
<Tag color={closureStatusColor}>{closureStatus}</Tag>
</Space>
<Typography.Title heading={5} style={{ margin: 0 }}></Typography.Title>
<Typography.Text type="secondary">
</Typography.Text>
<Space wrap>
<Button size="small" theme="solid" type="primary" onClick={copyStatisticsSummary}></Button>
@@ -2234,7 +2234,7 @@ export function Mileage({
className="vp-mileage-customer-query-step"
disabled={item.disabled}
onClick={item.onClick}
aria-label={`客户统计查询 ${item.title} ${item.action}`}
aria-label={`客户里程统计 ${item.title} ${item.action}`}
>
<span>{item.step}</span>
<Tag color={item.color}>{item.title}</Tag>
@@ -2543,7 +2543,7 @@ export function Mileage({
<Tag color={statisticsImpactColor}>{statisticsImpactLevel}</Tag>
<div className="vp-monitor-metric-value">{summary.vehicleCount.toLocaleString()} </div>
<Typography.Text type="secondary">
{summary.recordCount.toLocaleString()} {formatKm(summary.totalMileageKm)} km {offlineVehicleCount.toLocaleString()} 线
{summary.recordCount.toLocaleString()} {formatKm(summary.totalMileageKm)} km {offlineVehicleCount.toLocaleString()} 线
</Typography.Text>
<Space wrap>
<Tag color={confidenceColor}>{confidenceStatus}</Tag>
@@ -2711,7 +2711,7 @@ export function Mileage({
)}
</div>
<div className="vp-mileage-side-card">
<div className="vp-mileage-side-title"></div>
<div className="vp-mileage-side-title"></div>
<Typography.Text type="secondary">
</Typography.Text>
@@ -2813,7 +2813,7 @@ export function Mileage({
<div className="vp-stat-closure-action">
<Tag color={closureStatusColor}>{closureStatus}</Tag>
<Typography.Text type="secondary">
{closurePassed && anomalyRows.length === 0 ? '当前统计口径可直接用于 BI 里程口径;若存在跨通道差异,再进入车辆服务查看统计依据。' : '统计进入 BI 前需要结合异常记录、轨迹回放和历史明细完成复核。'}
{closurePassed && anomalyRows.length === 0 ? '当前里程口径可直接用于 BI 里程口径;若存在跨通道差异,再进入车辆服务查看统计依据。' : '统计进入 BI 前需要结合异常记录、轨迹回放和历史明细完成复核。'}
</Typography.Text>
<Space wrap>
<Button size="small" onClick={copyStatisticsSummary}></Button>
@@ -3003,7 +3003,7 @@ export function Mileage({
]}
/>
</Card>
<Card bordered title="统计口径" style={{ marginTop: 16 }}>
<Card bordered title="里程口径" style={{ marginTop: 16 }}>
<div className="vp-table-toolbar">
<Space wrap>
<Tag color="blue"></Tag>