From 69496d6ca7aca2b1b04fbe5614f63a812d148a01 Mon Sep 17 00:00:00 2001 From: lingniu Date: Sun, 5 Jul 2026 05:20:13 +0800 Subject: [PATCH] feat(platform): clarify customer history evidence copy --- .../apps/web/src/pages/History.tsx | 32 +++++++++---------- .../apps/web/src/test/App.test.tsx | 18 +++++------ 2 files changed, 25 insertions(+), 25 deletions(-) diff --git a/vehicle-data-platform/apps/web/src/pages/History.tsx b/vehicle-data-platform/apps/web/src/pages/History.tsx index 15ffeec9..086a7e33 100644 --- a/vehicle-data-platform/apps/web/src/pages/History.tsx +++ b/vehicle-data-platform/apps/web/src/pages/History.tsx @@ -398,7 +398,7 @@ function deliveryPackageText({ return [ '【客户数据交付包】', `交付状态:${deliveryState}`, - '交付物:位置历史 / 轨迹回放 / 里程复核 / RAW证据 / 字段明细 / 质量提示', + '交付物:位置历史 / 轨迹回放 / 里程复核 / 原始证据 / 字段明细 / 质量提示', `车辆范围:${vehicle || '全部车辆'}`, `证据来源:${protocol || '全部来源'}`, `时间范围:${filters.dateFrom?.trim() || '-'} 至 ${filters.dateTo?.trim() || '-'}`, @@ -408,7 +408,7 @@ function deliveryPackageText({ `区间里程:${formatNumber(mileageDelta, ' km')}`, `质量提示:断点 ${anomalySummary.gapCount.toLocaleString()} / 里程回退 ${anomalySummary.mileageRollbackCount.toLocaleString()} / 超速 ${anomalySummary.overspeedCount.toLocaleString()}`, `位置导出:${appURL(buildAppHash({ page: 'history-query', keyword: vehicle, protocol, filters: { ...evidenceFilters, tab: 'location' } }))}`, - `RAW导出:${appURL(buildAppHash({ page: 'history-query', keyword: vehicle, protocol, filters: { ...evidenceFilters, tab: 'raw', includeFields: 'true' } }))}`, + `原始导出:${appURL(buildAppHash({ page: 'history-query', keyword: vehicle, protocol, filters: { ...evidenceFilters, tab: 'raw', includeFields: 'true' } }))}`, `字段导出:${appURL(buildAppHash({ page: 'history-query', keyword: vehicle, protocol, filters: { ...evidenceFilters, tab: 'fields', includeFields: 'true', ...(filters.fields?.trim() ? { fields: filters.fields.trim() } : {}) } }))}`, `轨迹回放:${appURL(buildAppHash({ page: 'history', keyword: vehicle, protocol, filters: evidenceFilters }))}`, `里程复核:${appURL(buildAppHash({ page: 'mileage', keyword: vehicle, protocol, filters: evidenceFilters }))}`, @@ -605,7 +605,7 @@ function trajectoryCustomerDecisionText({ '1. 先看轨迹覆盖:确认是否有足够有效坐标。', '2. 再看时间断点:断点会影响定位连续性和客户解释。', '3. 再看里程速度:区间里程、速度和轨迹方向需要能互相解释。', - '4. 最后回到证据:异常点必须打开 RAW、字段明细和里程统计复核。', + '4. 最后回到证据:异常点必须打开原始记录、字段明细和里程统计复核。', `轨迹回放:${appURL(buildAppHash({ page: 'history', keyword: vehicle, protocol, filters: evidenceFilters }))}`, `数据导出:${appURL(buildAppHash({ page: 'history-query', keyword: vehicle, protocol, filters: { ...evidenceFilters, tab: 'location' } }))}`, `原始记录:${appURL(buildAppHash({ page: 'history-query', keyword: vehicle, protocol, filters: { ...evidenceFilters, tab: 'raw', includeFields: 'true' } }))}`, @@ -904,9 +904,9 @@ export function History({ { label: '证据交付', value: `${(rawFrames.total ?? 0).toLocaleString()} 帧`, - detail: rawFieldRows.length > 0 ? `${rawFieldRows.length.toLocaleString()} 个字段明细可导出。` : '异常点需要回到 RAW 和字段明细。', + detail: rawFieldRows.length > 0 ? `${rawFieldRows.length.toLocaleString()} 个字段明细可导出。` : '异常点需要回到原始记录和字段明细。', color: (rawFrames.total ?? 0) > 0 ? 'blue' as const : 'grey' as const, - action: 'RAW证据', + action: '原始证据', disabled: false, onClick: () => openQueryTab('raw') } @@ -940,11 +940,11 @@ export function History({ onClick: () => onOpenMileage?.({ keyword: currentVehicleKeyword, protocol: currentProtocol, ...(filters.dateFrom ? { dateFrom: filters.dateFrom } : {}), ...(filters.dateTo ? { dateTo: filters.dateTo } : {}) }) }, { - title: 'RAW证据', + title: '原始证据', value: `${(rawFrames.total ?? 0).toLocaleString()} 帧`, detail: '保留接入证据,用于解释字段值来源。', color: (rawFrames.total ?? 0) > 0 ? 'blue' as const : 'grey' as const, - action: '导出RAW', + action: '导出原始', disabled: rawFrames.items.length === 0, onClick: () => exportRawFrames() }, @@ -1250,11 +1250,11 @@ export function History({ 先锁定车辆和时间窗,再选择交付物并导出 - 面向客户的数据导出以车辆服务为中心:同一个筛选范围可以交付位置历史、RAW证据、字段明细、轨迹复盘和里程复核。 + 面向客户的数据导出以车辆服务为中心:同一个筛选范围可以交付位置历史、原始证据、字段明细、轨迹复盘和里程复核。 - + @@ -1283,10 +1283,10 @@ export function History({ }, { step: '03', - title: 'RAW证据', + title: '原始证据', value: `${(rawFrames.total ?? 0).toLocaleString()} 帧`, detail: '保留原始接入记录,用于解释位置、里程和字段来源。', - action: '导出RAW', + action: '导出原始', color: (rawFrames.total ?? 0) > 0 ? 'blue' as const : 'grey' as const, disabled: rawFrames.items.length === 0, onClick: exportRawFrames @@ -1342,14 +1342,14 @@ export function History({ {deliveryState} {amapConfigured ? '高德地图可用' : '坐标预览'} - 先判断轨迹能否复盘,再进入 RAW、字段和里程证据 + 先判断轨迹能否复盘,再进入原始、字段和里程证据 客户问某辆车某段时间发生了什么时,先看定位覆盖、时间断点、里程速度和原始证据,避免把协议排查过程当成客户主流程。 - + @@ -1451,7 +1451,7 @@ export function History({ {deliveryScopeText} - 面向客户交付时,先确认车辆、时间、交付物和质量提示,再导出位置、RAW 或字段明细,避免把内部排查过程直接暴露给客户。 + 面向客户交付时,先确认车辆、时间、交付物和质量提示,再导出位置、原始记录或字段明细,避免把内部排查过程直接暴露给客户。