feat(platform): show vehicle service evidence chain

This commit is contained in:
lingniu
2026-07-04 05:07:43 +08:00
parent 9e35c470a9
commit 65e3c53f69
3 changed files with 148 additions and 4 deletions

View File

@@ -138,6 +138,11 @@ export function VehicleDetail({
const consistencyTimeDeltaSeconds = consistency?.sourceTimeDeltaSeconds ?? sourceTimeDeltaSeconds;
const consistencyTitle = consistency?.title ?? '-';
const consistencyDetail = consistency?.detail ?? '-';
const evidenceSourceCount = overview?.sourceCount ?? consistencySourceCount;
const evidenceOnlineSourceCount = overview?.onlineSourceCount ?? consistencyOnlineSourceCount;
const evidenceLocatedSourceCount = consistencyLocatedSourceCount;
const evidenceMileageDelta = consistencyMileageDelta;
const evidenceTimeDeltaSeconds = consistencyTimeDeltaSeconds;
const activeProtocol = query.protocol?.trim() ?? '';
const scopeText = activeProtocol ? `单一来源:${activeProtocol}` : '全部来源聚合';
const formKey = `${query.keyword}-${query.protocol ?? ''}`;
@@ -224,6 +229,27 @@ export function VehicleDetail({
</Card>
) : null}
{overview || consistency ? (
<Card bordered title="车辆服务证据链" style={{ marginTop: 16 }}>
<div className="vp-evidence-grid">
{[
{ label: '来源证据', value: evidenceSourceCount > 0 ? `${evidenceOnlineSourceCount}/${evidenceSourceCount} 来源在线` : '-' },
{ label: '定位证据', value: evidenceLocatedSourceCount > 0 ? `${evidenceLocatedSourceCount} 个来源有位置` : '暂无位置' },
{ label: '里程差异', value: formatCompactNumber(evidenceMileageDelta, ' km') },
{ label: '时间差异', value: formatSeconds(evidenceTimeDeltaSeconds) },
{ label: '主来源', value: overview?.primaryProtocol || summary?.primaryProtocol || '-' },
{ label: '服务结论', value: consistencyTitle }
].map((item) => (
<div key={item.label} className="vp-evidence-item">
<div className="vp-evidence-label">{item.label}</div>
<div className="vp-evidence-value">{item.value}</div>
</div>
))}
</div>
<Typography.Text type="secondary">{consistencyDetail}</Typography.Text>
</Card>
) : null}
<Card bordered style={{ marginTop: 16 }}>
<div className="vp-vehicle-summary">
<Descriptions