diff --git a/vehicle-data-platform/apps/web/src/pages/Quality.tsx b/vehicle-data-platform/apps/web/src/pages/Quality.tsx
index 02253711..ff6790b6 100644
--- a/vehicle-data-platform/apps/web/src/pages/Quality.tsx
+++ b/vehicle-data-platform/apps/web/src/pages/Quality.tsx
@@ -48,6 +48,42 @@ function qualityShareURL() {
return `${window.location.origin}${window.location.pathname}${window.location.hash}`;
}
+function qualityActionRecommendation(row: QualityIssueRow) {
+ if (row.issueType === 'NO_SOURCE') {
+ return {
+ label: '确认平台转发',
+ color: 'orange' as const,
+ detail: '车辆已绑定但没有任何来源证据,先确认平台转发、端口和订阅。'
+ };
+ }
+ if (row.issueType === 'VIN_MISSING' || !row.vin?.trim()) {
+ return {
+ label: '维护身份绑定',
+ color: 'red' as const,
+ detail: '数据已有来源但无法归并到 VIN,优先用车牌/手机号补齐绑定。'
+ };
+ }
+ if (row.issueType === 'LINK_GAP') {
+ return {
+ label: '排查来源链路',
+ color: 'orange' as const,
+ detail: '来源存在上报间断,优先检查平台转发、网络和消费延迟。'
+ };
+ }
+ if (row.issueType === 'FIELD_MISSING') {
+ return {
+ label: '核对解析字段',
+ color: 'orange' as const,
+ detail: '字段缺失会影响统计和展示,优先核对解析映射和原始 RAW。'
+ };
+ }
+ return {
+ label: '查看车辆服务',
+ color: 'blue' as const,
+ detail: '进入车辆服务详情,结合来源证据继续排查。'
+ };
+}
+
async function copyText(value: string, label: string) {
const text = value.trim();
if (!text) {
@@ -299,6 +335,19 @@ export function Quality({
{ title: '级别', render: (_: unknown, row: QualityIssueRow) =>