# 区块链验真功能 PRD

## 1. 文档信息

| 属性 | 值 |
|------|-----|
| 文档名称 | 区块链验真功能 PRD |
| 所属模块 | 全知平台 / 风控模块 / 区块链 |
| 文档版本 | v1.0 |
| 编写日期 | 2026-07-07 |
| 前置依赖 | 风险监控区块链配套功能一期 |
| 编写目的 | 将现有虚拟验真状态升级为真实验真能力，支持内部自查/复核场景 |

---

## 2. 背景与需求

### 2.1 现状

区块链配套功能一期已实现以下能力：

| 能力 | 状态 | 说明 |
|------|------|------|
| 规则/疑点上链存证 | ✅ 已完成 | 关键节点数据已上链 |
| 上链状态展示 | ✅ 已完成 | 未上链/上链中/已上链/上链异常 |
| 链上详情弹窗 | ✅ 已完成 | 交易哈希、存证轨迹 |
| 唯一访问码 | ✅ 已完成 | 每条规则/疑点有唯一访问码 |
| **验真状态展示** | ⚠️ 虚拟 | 页面已有验真状态列，但数据是虚拟的 |

### 2.2 问题

- 验真状态是虚拟数据，不能反映真实的验证结果
- 缺少验真操作入口，用户无法主动触发验真
- 内部自查/复核场景无法支撑

### 2.3 目标

- 在验真状态展示位置新增验真按钮
- 点击验真按钮执行真实的验真逻辑（存在性验证 + 哈希比对）
- 验真状态反映真实的验证结果
- 支持内部用户对规则和疑点进行自查/复核

---

## 3. 设计原则

### 3.1 真实验真

验真操作必须调用真实的区块链验证逻辑，不再使用虚拟数据。

### 3.2 异步处理

验真是异步过程，调用验真接口后不会立即返回结果。系统需要：
- 发起验真请求后立即更新状态为"验真中"
- 提供轮询机制定期查询验真结果
- 验真完成后自动更新状态和结果

### 3.3 过程可见

验真过程中，用户可以清晰看到当前状态：
- 验真中：显示加载动画和提示文字
- 验真完成：显示验真结果和验真时间
- 验真失败：显示失败原因

### 3.4 结果可追溯

验真结果（通过/失败/异常）及验真时间应记录并展示。

### 3.5 操作轻量

验真是一个轻量操作，不需要二次确认，点击即执行。

### 3.6 权限可控

验真操作需要进行权限控制，不同角色对不同数据类型有不同的验真权限。

### 3.7 结果透明

验真结果对所有用户可见，无论是否有验真权限，都能看到验真状态和验真时间。

---

## 4. 功能范围

### 4.1 本次要做

| ID | 功能 | 说明 | 优先级 |
|----|------|------|--------|
| F1 | 验真按钮 | 在验真状态展示位置新增验真按钮 | P0 |
| F2 | 验真逻辑 | 存在性验证 + 数据哈希比对 | P0 |
| F3 | 验真结果状态 | 通过/失败/异常三种状态 | P0 |
| F4 | 验真时间记录 | 记录最近一次验真时间 | P0 |
| F5 | 规则详情页验真 | 规则详情页区块链信息Tab支持验真 | P0 |
| F6 | 疑点详情页验真 | 疑点派发/处置详情页链上详情弹窗支持验真 | P0 |
| F7 | 验真权限控制 | 不同角色对不同数据类型有不同的验真权限 | P0 |
| F8 | 验真结果可见性 | 验真结果对所有用户可见 | P0 |
| F9 | 验真操作审计日志 | 验真操作记录到系统审计日志 | P0 |

### 4.2 本次不做

- 批量验真
- 验真历史记录（多次验真结果）
- 验真报告导出
- 自动定时验真
- 外部独立验真页面
- 列表页验真状态列展示
- 列表页按验真状态筛选
- 验真结果通知机制

---

## 5. 验真权限控制

### 5.1 风险规则验真权限

| 角色 | 可验真 | 说明 |
|------|--------|------|
| 系统管理员 | ✅ | 最高权限，可处理任何异常 |
| 审计员 | ✅ | 审计需求，需要验证数据完整性 |
| 规则创建人 | ✅ | 自查需求，验证自己创建的规则 |
| 其他用户 | ❌ | 无验真权限 |

### 5.2 风险疑点验真权限

| 角色 | 可验真 | 说明 |
|------|--------|------|
| 系统管理员 | ✅ | 最高权限 |
| 审计员 | ✅ | 审计需求 |
| 场景创建人 | ✅ | 疑点是场景运行产生的，场景创建人有权确认数据真实性 |
| 场景协作人 | ✅ | 场景的协作方，有业务关联 |
| 疑点处置人 | ✅ | 需要确认疑点数据是否可信，避免处置"假数据" |
| 疑点审核人 | ✅ | 处置结果的审核人，需要确认数据的可信度 |
| 其他用户 | ❌ | 无验真权限 |

### 5.3 权限判断基准

- 验真权限基于**当前角色配置**，不是历史角色
- 如果角色被移除，验真权限也随之消失

### 5.4 无权限用户的交互

- 无验真权限的用户，**不显示"验真"按钮**
- 保持界面简洁，避免功能被滥用

### 5.5 验真结果可见性

- 验真结果对**所有用户可见**
- 无论是否有验真权限，都能看到验真状态和验真时间
- 权限控制的是"谁能操作"，可见性控制的是"谁能看结果"

---

## 6. 验真逻辑详细设计

### 6.1 验真流程（异步模式）

```
用户点击验真按钮
    │
    ├── 前端检查
    │       ├── 未上链 → 提示"该记录尚未上链，无法验真"，不执行
    │       └── 上链中 → 提示"记录上链中，请稍后再试"，不执行
    │
    ├── 调用验真接口（异步）
    │       ├── 接口返回成功（验真任务已提交）
    │       │       └── 前端立即更新状态为"验真中"
    │       │
    │       └── 接口返回失败（如参数错误）
    │               └── 提示错误信息，状态不变
    │
    ├── 轮询查询验真结果（每3秒一次）
    │       ├── 查询到结果
    │       │       ├── 验真通过 → 更新状态为"验真通过"
    │       │       ├── 验真失败 → 更新状态为"验真失败"
    │       │       └── 验真异常 → 更新状态为"验真异常"
    │       │
    │       └── 未查询到结果（仍在处理中）
    │               └── 继续轮询，最多轮询60次（3分钟）
    │                       └── 超时 → 更新状态为"验真异常"，提示"验真超时"
    │
    └── 停止轮询，展示最终结果
```

### 6.2 验真结果状态定义

| 状态值 | 中文 | 含义 | 图标 | 颜色 | 加载动画 |
|--------|------|------|------|------|----------|
| `verifying` | 验真中 | 验真任务已提交，等待结果 | 🔄 | 蓝色 | 是 |
| `verified_pass` | 验真通过 | 链上记录存在且数据哈希一致 | ✅ | 绿色 | 否 |
| `verified_fail` | 验真失败 | 链上记录存在但数据哈希不一致 | ❌ | 红色 | 否 |
| `verified_error` | 验真异常 | 链上记录不存在或验证过程异常 | ⚠️ | 橙色 | 否 |
| `not_verified` | 未验真 | 尚未执行验真操作 | - | 灰色 | 否 |

### 6.3 轮询机制设计

#### 6.3.1 轮询策略

| 参数 | 值 | 说明 |
|------|-----|------|
| 轮询间隔 | 3秒 | 每3秒查询一次验真结果 |
| 最大轮询次数 | 60次 | 最多轮询3分钟 |
| 超时处理 | 验真异常 | 超时后状态更新为"验真异常" |

#### 6.3.2 轮询生命周期

```
发起验真
    │
    ├── 启动轮询定时器
    │       └── 每3秒调用查询接口
    │
    ├── 查询到结果
    │       └── 停止轮询，更新状态
    │
    ├── 超时（60次）
    │       └── 停止轮询，更新状态为"验真异常"
    │
    └── 用户离开页面
            └── 停止轮询
```

#### 6.3.3 页面离开处理

| 场景 | 处理方式 |
|------|----------|
| 刷新页面 | 停止轮询，重新加载时从数据库读取验真状态 |
| 切换Tab | 停止轮询（仅在当前Tab可见时轮询） |
| 关闭页面 | 停止轮询 |
| 返回列表 | 停止轮询 |

### 6.4 哈希比对数据范围

#### 6.4.1 规则验真

比对以下关键字段的哈希：

| 字段分组 | 包含字段 |
|----------|----------|
| 基本信息 | 规则名称、业务域、风险等级、监控目标、监控逻辑、处置类型 |
| 技术信息 | 规则类型、模块名称、数据系统、模块路径 |
| 状态信息 | 规则状态、当前版本号 |

#### 6.4.2 疑点验真

比对以下关键字段的哈希：

| 字段分组 | 包含字段 |
|----------|----------|
| 基本信息 | 疑点编号、触发规则ID、风险等级、疑点描述 |
| 业务信息 | 业务域、场景ID、数据范围 |
| 处置信息 | 派发状态、处置状态、响应等级 |

### 6.5 异常场景处理

| 场景 | 处理方式 |
|------|----------|
| 记录未上链 | 提示"该记录尚未上链，无法验真"，不执行验真 |
| 记录上链中 | 提示"记录上链中，请稍后再试"，不执行验真 |
| 链上记录不存在 | 验真结果：异常，提示"链上记录不存在" |
| 网络超时/异常 | 验真结果：异常，提示"网络异常，请稍后重试" |
| 哈希比对失败 | 验真结果：失败，提示"数据与链上记录不一致" |
| 哈希比对成功 | 验真结果：通过，提示"数据与链上记录一致" |

---

## 7. 页面功能方案

### 7.1 规则列表页（我的规则）

**对应页面**：`风险规则-我的规则.html`

#### 改动内容

| 类型 | 功能项 | 说明 |
|------|--------|------|
| 列表字段 | 无 | 不新增验真状态列 |
| 行操作 | 无 | 不在列表行操作菜单增加验真入口 |

#### 说明

- 列表页不展示验真状态列，保持列表简洁
- 验真操作入口在规则详情页的区块链信息Tab
- 验真状态在详情页和链上详情弹窗中展示

---

### 7.2 公共规则库列表页

**对应页面**：`风险规则-公共规则库.html`

#### 改动内容

与"我的规则"页面一致：

| 类型 | 功能项 | 说明 |
|------|--------|------|
| 列表字段 | 无 | 不新增验真状态列 |
| 行操作 | 无 | 不在列表行操作菜单增加验真入口 |

---

### 7.3 规则详情页

**对应页面**：`规则详情.html`

#### 改动位置

规则详情页 → 区块链信息Tab

#### 新增内容

在区块链信息Tab的"存证汇总"区域，新增验真相关信息：

**验真中状态：**

```
┌─────────────────────────────────────────────────────────────┐
│  区块链信息                                                   │
├─────────────────────────────────────────────────────────────┤
│  存证汇总                                                     │
│  ┌─────────────────────────────────────────────────────┐    │
│  │ 上链状态：已上链                                      │    │
│  │ 唯一访问码：CZ20260210180000013                      │    │
│  │ 上链节点：节点A                                       │    │
│  │ 链上记录数量：5 条                                    │    │
│  │                                                      │    │
│  │ 验真状态：🔄 验真中...                    [验真] 按钮  │    │
│  │ (蓝色标签 + 旋转动画，按钮禁用)                       │    │
│  │ 验真时间：-                                           │    │
│  └─────────────────────────────────────────────────────┘    │
│                                                              │
│  链上信息                                                     │
│  交易哈希：0xab12...cd34                                     │
│  ...                                                         │
└─────────────────────────────────────────────────────────────┘
```

**验真完成状态：**

```
┌─────────────────────────────────────────────────────────────┐
│  区块链信息                                                   │
├─────────────────────────────────────────────────────────────┤
│  存证汇总                                                     │
│  ┌─────────────────────────────────────────────────────┐    │
│  │ 上链状态：已上链                                      │    │
│  │ 唯一访问码：CZ20260210180000013                      │    │
│  │ 上链节点：节点A                                       │    │
│  │ 链上记录数量：5 条                                    │    │
│  │                                                      │    │
│  │ 验真状态：✅ 验真通过                    [验真] 按钮   │    │
│  │ 验真时间：2026-07-07 14:30:00                        │    │
│  └─────────────────────────────────────────────────────┘    │
│                                                              │
│  链上信息                                                     │
│  交易哈希：0xab12...cd34                                     │
│  ...                                                         │
└─────────────────────────────────────────────────────────────┘
```

#### 交互规则

- 点击"验真"按钮 → 立即更新状态为"验真中"（蓝色标签+旋转动画）→ 按钮禁用 → 启动轮询
- 轮询到结果后 → 更新为最终状态（通过/失败/异常）+ 验真时间 → 按钮恢复可用
- 超时（3分钟）→ 更新为"验真异常"，提示"验真超时，请重试"
- 验真按钮位置：验真状态右侧
- 按钮样式：蓝色边框按钮，与"编辑"按钮同系列
- 验真中时按钮禁用，显示"验真中..."

---

### 7.4 疑点派发详情页

**对应页面**：`疑点派发-疑点详情.html`

#### 改动内容

| 类型 | 功能项 | 说明 |
|------|--------|------|
| 列表字段 | 无 | 不新增验真状态列 |
| 链上详情弹窗 | 验真功能 | 在链上详情弹窗内增加验真状态展示和验真按钮 |

#### 说明

- 列表页不展示验真状态列，保持列表简洁
- 验真操作入口在链上详情弹窗内
- 链上详情弹窗增加验真状态展示和验真按钮

---

### 7.5 疑点处置详情页

**对应页面**：`疑点处置-疑点详情.html`

#### 改动内容

与疑点派发详情页一致：

| 类型 | 功能项 | 说明 |
|------|--------|------|
| 列表字段 | 无 | 不新增验真状态列 |
| 链上详情弹窗 | 验真功能 | 在链上详情弹窗内增加验真状态展示和验真按钮 |

---

## 8. 数据模型变更

### 8.1 规则表（RISK_RULE_LIST）新增字段

| 字段名 | 类型 | 说明 |
|--------|------|------|
| `VERIFY_STATUS` | VARCHAR(20) | 验真状态：verifying/verified_pass/verified_fail/verified_error/not_verified |
| `VERIFY_TIME` | DATETIME | 最近一次验真时间 |
| `VERIFY_TASK_ID` | VARCHAR(64) | 验真任务ID（用于轮询查询） |

### 8.2 疑点表（RISK_DOUBT）新增字段

| 字段名 | 类型 | 说明 |
|--------|------|------|
| `VERIFY_STATUS` | VARCHAR(20) | 验真状态：verifying/verified_pass/verified_fail/verified_error/not_verified |
| `VERIFY_TIME` | DATETIME | 最近一次验真时间 |
| `VERIFY_TASK_ID` | VARCHAR(64) | 验真任务ID（用于轮询查询） |

### 8.3 验真状态枚举值说明

| 状态值 | 中文 | 说明 |
|--------|------|------|
| `not_verified` | 未验真 | 初始状态，尚未执行验真 |
| `verifying` | 验真中 | 验真任务已提交，等待结果 |
| `verified_pass` | 验真通过 | 链上记录存在且数据哈希一致 |
| `verified_fail` | 验真失败 | 链上记录存在但数据哈希不一致 |
| `verified_error` | 验真异常 | 链上记录不存在或验证过程异常或超时 |

---

## 9. 接口设计

### 9.1 发起验真接口（异步）

```
POST /core/blockchain/verify
```

#### 请求参数

| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| `dataType` | String | 是 | 数据类型：RULE（规则）/ DOUBT（疑点） |
| `dataId` | String | 是 | 数据ID（规则ID或疑点ID） |

#### 响应示例

**验真任务提交成功：**

```json
{
  "code": 200,
  "data": {
    "taskId": "VERIFY_20260707143000001",
    "dataType": "RULE",
    "dataId": "RULE001",
    "message": "验真任务已提交，请稍后查询结果"
  }
}
```

**参数错误：**

```json
{
  "code": 400,
  "message": "该记录尚未上链，无法验真"
}
```

#### 说明

- 该接口为异步接口，调用后立即返回
- 后端收到请求后，将验真任务放入队列异步处理
- 前端收到成功响应后，立即更新状态为"验真中"并启动轮询

---

### 9.2 查询验真结果接口

```
GET /core/blockchain/verify/result
```

#### 请求参数

| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| `dataType` | String | 是 | 数据类型：RULE / DOUBT |
| `dataId` | String | 是 | 数据ID |

#### 响应示例

**验真完成 - 通过：**

```json
{
  "code": 200,
  "data": {
    "verifyStatus": "verified_pass",
    "verifyTime": "2026-07-07 14:30:05",
    "message": "数据与链上记录一致"
  }
}
```

**验真完成 - 失败：**

```json
{
  "code": 200,
  "data": {
    "verifyStatus": "verified_fail",
    "verifyTime": "2026-07-07 14:30:05",
    "message": "数据与链上记录不一致",
    "detail": {
      "chainHash": "0xab12...",
      "currentHash": "0xef56...",
      "mismatchFields": ["RULE_NAME", "RISK_LEVEL"]
    }
  }
}
```

**验真完成 - 异常：**

```json
{
  "code": 200,
  "data": {
    "verifyStatus": "verified_error",
    "verifyTime": "2026-07-07 14:30:05",
    "message": "链上记录不存在"
  }
}
```

**验真中（尚未完成）：**

```json
{
  "code": 200,
  "data": {
    "verifyStatus": "verifying",
    "verifyTime": null,
    "message": "验真处理中"
  }
}
```

#### 说明

- 前端每3秒调用一次该接口查询验真结果
- 当返回的 `verifyStatus` 不是 `verifying` 时，停止轮询
- 最多轮询60次（3分钟），超时后前端更新状态为"验真异常"

---

### 9.3 批量查询验真状态接口

```
POST /core/blockchain/verifyStatus/batch
```

#### 请求参数

| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| `dataType` | String | 是 | 数据类型：RULE / DOUBT |
| `dataIds` | List<String> | 是 | 数据ID列表 |

#### 响应示例

```json
{
  "code": 200,
  "data": {
    "verifyStatusMap": {
      "RULE001": {
        "verifyStatus": "verified_pass",
        "verifyTime": "2026-07-07 14:30:00"
      },
      "RULE002": {
        "verifyStatus": "verifying",
        "verifyTime": null
      },
      "RULE003": {
        "verifyStatus": "not_verified",
        "verifyTime": null
      }
    }
  }
}
```

#### 说明

- 该接口用于列表页加载时批量获取验真状态
- 对于状态为 `verifying` 的记录，前端需要启动轮询

---

## 10. 验真状态统一展示规范

### 10.1 标签样式

| 状态 | 文字 | 背景色 | 文字色 | 边框色 | 图标 |
|------|------|--------|--------|--------|------|
| 验真中 | 验真中... | `#ecf5ff` | `#409eff` | 无 | ⏳ |
| 验真通过 | 验真通过 | `#f0f9eb` | `#67c23a` | 无 | ✅ |
| 验真失败 | 验真失败 | `#fef0f0` | `#f56c6c` | 无 | ❌ |
| 验真异常 | 验真异常 | `#fdf6ec` | `#e6a23c` | 无 | ⚠️ |
| 未验真 | 未验真 | `#f4f4f5` | `#909399` | 无 | - |

**说明：**
- 验真状态标签为展示型，使用浅色背景+深色文字，无边框
- 验真按钮为操作型，使用实色背景或强调边框
- 验真状态和验真按钮在同一行，间距24px，便于区分
- 验真中时，验真按钮保持"验真"文字，通过禁用状态（置灰）防止重复点击

### 10.2 验真时间格式

- 格式：`上次验真时间：YYYY-MM-DD HH:mm:ss`
- 未验真时显示：`上次验真时间：尚未进行验真`
- 位置：验真状态下方，作为辅助说明文字，小字灰色

---

## 11. 验收标准

### 11.1 验真功能

- [ ] 已上链的规则/疑点可执行验真操作
- [ ] 上链异常的规则/疑点可执行验真操作
- [ ] 未上链的规则/疑点不可执行验真，点击后有提示
- [ ] 上链中的规则/疑点不可执行验真，点击后有提示
- [ ] 点击验真按钮后，状态立即更新为"验真中"（蓝色标签+旋转动画）
- [ ] 验真中状态下，验真按钮禁用，不可重复点击
- [ ] 验真完成后更新验真状态和验真时间

### 11.2 验真权限

- [ ] 风险规则验真：管理员、审计员、规则创建人可验真
- [ ] 风险疑点验真：管理员、审计员、场景创建人、场景协作人、疑点处置人、疑点审核人可验真
- [ ] 无验真权限的用户，不显示"验真"按钮
- [ ] 验真结果对所有用户可见

### 11.3 轮询机制

- [ ] 发起验真后，每3秒查询一次验真结果
- [ ] 查询到结果后（状态非verifying），停止轮询
- [ ] 超时（3分钟/60次）后，状态更新为"验真异常"
- [ ] 用户离开页面时，停止轮询
- [ ] 用户刷新页面时，从数据库读取最新验真状态

### 11.4 验真结果

- [ ] 哈希比对一致时，验真状态显示"验真通过"（绿色）
- [ ] 哈希比对不一致时，验真状态显示"验真失败"（红色）
- [ ] 链上记录不存在时，验真状态显示"验真异常"（橙色）
- [ ] 网络异常时，验真状态显示"验真异常"（橙色）
- [ ] 验真超时时，验真状态显示"验真异常"（橙色）

### 11.5 页面展示

- [ ] 规则详情页区块链信息Tab展示验真状态、验真时间、验真按钮
- [ ] 疑点派发详情页链上详情弹窗展示验真状态、验真时间、验真按钮
- [ ] 疑点处置详情页链上详情弹窗展示验真状态、验真时间、验真按钮

### 11.6 数据持久化

- [ ] 验真状态保存到数据库
- [ ] 验真时间保存到数据库
- [ ] 重新验真时更新验真状态为"验真中"
- [ ] 验真完成后更新验真状态和验真时间

### 11.7 审计日志

- [ ] 验真操作记录到系统审计日志
- [ ] 记录内容包括：操作人、操作时间、数据类型、数据ID、验真结果

---

## 12. 页面改动汇总

| 页面 | 改动类型 | 改动内容 |
|------|----------|----------|
| `风险规则-我的规则.html` | 不改动 | 列表不新增验真状态列，验真入口在详情页 |
| `风险规则-公共规则库.html` | 不改动 | 列表不新增验真状态列，验真入口在详情页 |
| `规则详情.html` | 修改 | 区块链信息Tab新增验真状态、验真时间展示和"验真"按钮 |
| `疑点派发-疑点详情.html` | 修改 | 链上详情弹窗新增验真状态、验真时间展示和"验真"按钮 |
| `疑点处置-疑点详情.html` | 修改 | 链上详情弹窗新增验真状态、验真时间展示和"验真"按钮 |

---

## 13. 审计日志

### 13.1 验真操作审计日志

验真操作需要记录到系统审计日志，便于后续追溯和问题排查。

#### 记录内容

| 字段 | 说明 |
|------|------|
| 操作人 | 发起验真的用户ID和用户名 |
| 操作时间 | 验真发起时间 |
| 数据类型 | 规则（RULE）或疑点（DOUBT） |
| 数据ID | 规则ID或疑点ID |
| 验真结果 | 通过/失败/异常 |
| 验真耗时 | 从发起到获取结果的时间 |

#### 日志格式示例

```json
{
  "eventType": "BLOCKCHAIN_VERIFY",
  "userId": "user001",
  "userName": "张三",
  "operateTime": "2026-07-08 10:30:00",
  "dataType": "RULE",
  "dataId": "RULE001",
  "verifyResult": "verified_pass",
  "duration": 5000
}
```

---

## 14. 后续待完善功能

以下功能在本期暂不实现，记录为后续待完善项：

### 14.1 验真与数据变更的时序冲突

**问题描述：**
- 验真中修改数据：用户点击验真后，在轮询期间修改了规则/疑点数据，可能导致验真结果不准确
- 验真后修改数据：验真通过后，用户修改了数据，验真状态仍显示"通过"，但数据已与链上不一致
- 重新上链后验真：数据重新上链后，旧的验真结果可能不再有效

**后续处理方案：**
- 验真中应禁止编辑数据，或提示"数据已变更，验真已取消"
- 验真通过后修改数据，验真状态应自动重置为"未验真"
- 重新上链后，验真状态应自动重置

---

### 14.2 验真失败的业务处理流程

**问题描述：**
验真失败后的业务处理流程尚未定义：
- 验真失败后谁负责处理？
- 是否需要通知机制？
- 是否需要阻断流程？
- 是否需要重试机制？
- 失败记录如何追溯？

**后续处理方案：**
- 定义验真失败的业务处理流程
- 考虑增加验真失败通知机制
- 考虑验真失败对业务流程的影响

---

### 14.3 验真频率和并发控制

**问题描述：**
- 是否需要限制验真频率？
- 多个用户同时对同一记录发起验真怎么办？
- 同一用户在多个标签页同时发起验真怎么办？

**后续处理方案：**
- 后端需要做幂等处理，同一记录同一时间只能有一个验真任务
- 前端需要做防抖，避免重复提交
- 考虑增加频率限制，防止恶意刷接口

---

### 14.4 验真结果通知机制

**问题描述：**
验真完成后，是否需要通知相关人员？

**后续处理方案：**
- 处置人验真失败，是否通知场景创建人和管理员？
- 审计员验真失败，是否通知管理员和规则创建人？
- 可通过Elink消息通知机制实现

---

### 14.5 验真过程中的用户引导优化

**问题描述：**
验真过程中的用户引导可以进一步优化。

**后续优化方向：**
- 验真中显示预计等待时间（如"预计需要30秒"）
- 验真超时提供"重试"按钮
- 验真失败显示具体失败原因（哪些字段不一致）
- 网络异常时提供明确提示

---

### 14.6 列表页验真状态筛选

**问题描述：**
列表页是否需要支持按验真状态筛选？

**后续处理方案：**
- 如果用户反馈有需求，可增加验真状态筛选功能
- 支持按"验真失败"、"验真异常"等状态筛选

---

## 15. 一句话总结

本功能将现有虚拟的验真状态升级为真实验真能力，通过存在性验证和数据哈希比对，在规则详情页区块链信息Tab和疑点链上详情弹窗支持验真操作，验真结果（通过/失败/异常）实时更新并持久化存储，满足内部自查/复核需求。验真权限按角色配置，验真结果对所有用户可见，验真操作记录到审计日志。
