# 规则版本中心 UI 方案

## 1. 背景

当前“任务规则中心 > 财务规则 > 公司差旅费报销规则”已经具备：

- 在线 Excel 编辑
- 工作版本 / 线上版本分离
- 最近 5 个版本展示
- 审核、上线、恢复能力

但页面仍然存在一个明显问题：  
**版本治理能力已经有了，用户却很难第一眼看见。**

当前版本列表更像“历史记录”，不是一个明确的“版本操作中心”。  
用户无法快速判断：

1. 当前真正生效的是哪个版本
2. 当前正在编辑的是哪个版本
3. 从哪里进入版本切换
4. 从哪里发起版本对比
5. 某个版本经历了哪些流转动作

因此，需要把现有“版本列表”升级为一个真正可用的 **版本中心**。

---

## 2. 设计目标

### 2.1 用户一眼能看懂

进入规则详情页后，用户无需点击就能立即识别：

- 当前线上版本
- 当前工作版本
- 是否存在未上线工作稿
- 最近版本是否处于待审 / 已通过 / 已驳回状态

### 2.2 关键操作显性化

以下操作不能再隐藏在不明显的位置：

- 切换查看版本
- 与线上版本对比
- 查看完整流转
- 从历史版本恢复

### 2.3 保持 OnlyOffice 是主角

该页面的核心仍然是 Excel 规则表。  
版本中心必须增强治理能力，但不能把主表格压缩成附属内容。

---

## 3. 推荐方案

采用：

> **左侧 OnlyOffice 主工作区 + 右侧版本中心 + 顶部显性入口 + 抽屉式详情**

这是比“单独开二级页签”更适合当前页面的方案，因为用户经常需要：

- 一边看表
- 一边知道自己看的是什么版本
- 一边进入版本对比或恢复

---

## 4. 页面整体布局

```text
┌────────────────────────────────────────────────────────────────────┐
│ 标题区：公司差旅费报销规则                                         │
│ 线上版本 v1.0.5 已上线    工作版本 v1.0.6 待审核                   │
│ [下载 Excel] [上传表格] [版本对比] [查看流转]                      │
├───────────────────────────────────────────────┬────────────────────┤
│                                               │ 版本中心           │
│                                               │                    │
│                                               │ ┌──────────────┐  │
│                                               │ │ 线上版本      │  │
│                                               │ │ v1.0.5        │  │
│                                               │ └──────────────┘  │
│                 OnlyOffice                    │ ┌──────────────┐  │
│                 规则表主工作区                 │ │ 工作版本      │  │
│                                               │ │ v1.0.6        │  │
│                                               │ └──────────────┘  │
│                                               │                    │
│                                               │ 最近版本           │
│                                               │ v1.0.6 待审核      │
│                                               │ v1.0.5 已上线      │
│                                               │ v1.0.4 历史版本    │
│                                               │                    │
│                                               │ 最近流转           │
│                                               │ [查看完整流转]     │
└───────────────────────────────────────────────┴────────────────────┘
```

---

## 5. 顶部操作区设计

顶部必须保留并强化四个动作：

| 按钮 | 用途 |
| --- | --- |
| 下载 Excel | 下载当前预览版本 |
| 上传表格 | 导入内容生成新工作稿 |
| 版本对比 | 打开对比抽屉 |
| 查看流转 | 打开流转抽屉 |

### 5.1 版本对比按钮

这是一级入口，不能只藏在版本列表里。  
默认行为：

- 基准版本：当前线上版本
- 对比版本：当前工作版本

如果两者相同，则按钮仍可用，但进入后提示：

> 当前工作版本与线上版本一致，可选择其他历史版本进行比较。

### 5.2 查看流转按钮

用于进入当前规则的完整生命周期视图。  
不应只展示审计日志，而要展示“版本业务履历”。

---

## 6. 右侧版本中心设计

### 6.1 顶部双版本卡片

```text
线上版本
v1.0.5
已上线

工作版本
v1.0.6
待审核
```

#### 设计目的

用户进入页面后，最先要知道的是：

- **谁在线上**
- **谁正在被编辑**

而不是先看一个无上下文的历史列表。

### 6.2 最近版本列表

每个版本项包含：

- 版本号
- 生命周期状态
- 创建时间
- 变更说明
- 操作入口

建议样式：

```text
v1.0.6    待审核
2026-05-18 09:12
补充出差补助标准
[查看] [与线上比]

v1.0.5    已上线
2026-05-18 08:40
新增补助页签
[查看]

v1.0.4    历史版本
2026-05-17 17:20
修正住宿标准
[查看] [恢复]
```

#### 规则

- `查看`：切换当前预览版本
- `与线上比`：直接以线上版本为基准进入对比
- `恢复`：仅高级管理人员可见
- 当前 `working_version` 不显示“恢复”

### 6.3 最近流转摘要

右侧版本中心底部展示最近 3 条流转：

```text
最近流转
09:12 曹笑竹 保存工作稿
09:25 曹笑竹 提交审核
10:08 顾承宇 审核通过
[查看完整流转]
```

---

## 7. 版本流转时间线设计

## 7.1 入口

两个入口：

1. 顶部 `查看流转`
2. 右侧版本中心底部 `查看完整流转`

## 7.2 容器

使用右侧宽抽屉，不使用小弹窗。  
原因：

- 时间线内容会逐步增长
- 审核意见需要足够宽度展示
- 后续可能接入版本说明、操作人、来源版本

## 7.3 时间线内容

时间线按时间倒序或正序展示，推荐默认正序：

```text
● 2026-05-18 09:12
  v1.0.6 工作稿创建
  曹笑竹 保存工作稿
  变更说明：补充出差补助标准

● 2026-05-18 09:25
  提交审核
  曹笑竹 提交当前工作版本

● 2026-05-18 10:08
  审核通过
  顾承宇：口径已核对，可上线

○ 待正式上线
```

如果版本来自恢复：

```text
● 基于 v1.0.3 恢复生成 v1.0.7
```

## 7.4 时间线事件类型

| 事件类型 | 说明 |
| --- | --- |
| `created` | 创建版本 |
| `submitted` | 提交审核 |
| `approved` | 审核通过 |
| `rejected` | 驳回 |
| `published` | 正式上线 |
| `restored` | 基于历史版本恢复 |

---

## 8. 版本差异对比设计

## 8.1 入口

版本对比必须有两个入口：

1. 顶部一级按钮：`版本对比`
2. 每个历史版本行内操作：`与线上比`

这样既满足“主动进入”，也满足“看到某个版本就顺手比较”。

## 8.2 容器

使用宽抽屉，推荐宽度：

- 桌面：页面宽度的 70% ~ 80%
- 小屏：全屏

不建议用普通弹窗，因为：

- Excel 差异需要足够展示宽度
- 版本选择器、摘要、表格都要共存

## 8.3 顶部区域

```text
版本对比

基准版本 [v1.0.5 已上线 ▼]
对比版本 [v1.0.6 待审核 ▼]
```

默认值：

- `baseVersion = published_version`
- `targetVersion = working_version`

## 8.4 差异摘要

优先先给决策信息，再给底层明细。

```text
差异摘要
- 修改 2 个工作表
- 新增 1 个工作表
- 修改 12 个单元格
- 删除 2 行
```

如果无差异：

```text
两个版本内容一致，没有发现表格差异。
```

## 8.5 差异详情

第一阶段优先支持 Excel 规则表：

| 工作表 | 位置 | 旧值 | 新值 | 类型 |
| --- | --- | --- | --- | --- |
| 出差补助标准 | B4 | 75 | 90 | 修改 |
| 差旅住宿费标准 | A106 | - | 新增城市 | 新增 |

后续可扩展：

- 仅看新增
- 仅看删除
- 仅看数值变化
- 按工作表筛选

## 8.6 对比结果的业务语气

不要把页面做成“程序员 diff 工具”。  
它应该像制度审核页面：

- 先讲影响
- 再讲位置
- 最后给证据

---

## 9. 数据接口设计

## 9.1 时间线接口

建议新增：

```http
GET /agent-assets/{asset_id}/version-timeline
```

返回：

- 版本号
- 事件类型
- 操作人
- 操作时间
- 审核意见
- 来源版本（如有）

## 9.2 对比接口

建议新增：

```http
GET /agent-assets/{asset_id}/versions/compare?base_version=v1.0.5&target_version=v1.0.6
```

返回：

- 基准版本
- 对比版本
- 工作表差异摘要
- 单元格级差异明细

---

## 10. 视觉规范

### 10.1 颜色

沿用当前系统已有色彩，不引入新风格：

| 状态 | 建议色 |
| --- | --- |
| 已上线 | 绿色 |
| 工作稿 | 蓝色 |
| 待审核 | 橙色 |
| 已驳回 | 红色 |
| 历史版本 | 灰色 |

### 10.2 密度

- 右侧版本中心应为紧凑型信息面板
- 不要使用过大的卡片间距
- 不能明显压缩 OnlyOffice 主区域

### 10.3 交互反馈

- 可点击元素必须有 hover
- 当前预览版本必须有 active 高亮
- 抽屉打开后保留明确关闭按钮
- 恢复操作必须二次确认

---

## 11. 推荐实施顺序

### 第一阶段

1. 顶部新增 `版本对比`、`查看流转`
2. Excel 详情页改成：
   - 左侧 OnlyOffice
   - 右侧版本中心
3. 右侧展示：
   - 线上版本
   - 工作版本
   - 最近 5 个版本
   - 最近 3 条流转

### 第二阶段

1. 实现版本流转抽屉
2. 实现版本对比抽屉
3. 补齐真实后端接口

### 第三阶段

1. 增加更细的工作表筛选
2. 增加更多 diff 维度
3. 增加版本差异导出能力

---

## 12. 本次开发目标

本次开发直接完成以下内容：

1. 规则详情页出现明确的版本中心
2. 页面上出现明确的：
   - `版本对比`
   - `查看流转`
3. 最近版本列表增加：
   - `查看`
   - `与线上比`
   - `恢复为工作稿`
4. 版本流转抽屉可用
5. 版本对比抽屉可用
6. 对比结果至少支持 Excel 表格的：
   - 工作表新增 / 删除
   - 单元格新增 / 删除 / 修改

