6.6 KiB
6.6 KiB
规则版本治理方案
1. 背景
当前“任务规则中心”的规则资产只有一个 current_version 指针。
它同时承担了三种含义:
- 财务人员正在编辑的版本
- 审核中的候选版本
- 系统运行时真正生效的线上版本
这会直接带来三个问题:
- 财务人员一旦修改 Excel,最新内容就会立刻成为
current_version,容易被误解为已经正式生效 - 审核、上线、回滚都围绕同一个指针转,权限边界不清晰
- 如果误上线,虽然能切换历史版本,但缺少“线上版本”和“工作版本”分离后的安全缓冲
2. 设计目标
这次改造要解决的不是“多存几个历史版本”,而是建立一套可长期使用的规则治理机制:
- 财务人员可以编辑规则,但编辑结果默认只是草稿
- 只有高级管理人员审核通过后,规则才能成为正式线上版本
- 系统运行时只能读取正式线上版本,不能读取草稿
- 前台要能清楚区分:
- 当前线上版本
- 当前工作版本
- 最近 5 个历史版本
- 如果误操作上线,可以快速恢复,但恢复动作仍然要留下完整审计链
3. 核心模型
3.1 双指针版本模型
在规则资产上新增两个版本指针:
| 字段 | 含义 |
|---|---|
published_version |
当前正式在线上生效的版本 |
working_version |
当前最新的工作稿 / 待审稿 |
兼容策略:
- 现有
current_version暂时保留,用于兼容历史代码 - 对规则资产来说,后续它只承担“当前工作版本”的兼容语义
- 运行时逻辑不再读取
current_version,而是优先读取published_version
3.2 版本状态
不额外在版本表中硬存一套容易失真的状态,而是根据“版本指针 + 最新审核记录”动态推导:
| 条件 | 版本状态 |
|---|---|
version == published_version |
已上线 |
version == working_version 且无审核记录 |
草稿 |
version == working_version 且最新审核为 pending |
待审核 |
version == working_version 且最新审核为 approved |
已通过待上线 |
version == working_version 且最新审核为 rejected |
已驳回 |
| 其他历史版本 | 历史版本 |
这样可以避免“版本状态”和“审核记录”两套数据互相打架。
4. 权限边界
| 角色 | 能力 |
|---|---|
财务人员 finance |
编辑工作稿、上传/导入 Excel、提交审核 |
高级管理人员 manager / admin |
审核通过、驳回、正式发布、恢复历史版本 |
| 其他普通员工 | 只读 |
4.1 财务人员
- 可以直接编辑当前
working_version - 每次保存自动生成新版本,并把它设为新的
working_version - 不能把草稿直接变成
published_version
4.2 高级管理人员
- 可以对
working_version发起:- 审核通过
- 驳回
- 正式发布
- 只有
approved的工作版本才能发布
5. 发布与回滚流程
5.1 正常发布
- 财务人员编辑并保存
- 系统生成新版本,例如
v1.0.6 working_version = v1.0.6- 财务人员提交审核
- 高级管理人员审核通过
- 高级管理人员点击“正式上线”
published_version = v1.0.6- 系统运行时切换到新版本
5.2 驳回
- 财务人员提交审核
- 高级管理人员驳回
- 当前工作版本保留,但状态显示为“已驳回”
- 财务人员继续编辑,形成新的工作版本
5.3 恢复历史版本
不直接把 published_version 指回旧版本,而是采用“复制恢复”的方式:
- 管理员在最近 5 个版本中选择一个历史版本
- 系统基于该历史版本内容生成一个新的恢复版本,例如
v1.0.7 - 新版本写入
working_version - 审核通过后再正式发布
这么做的好处:
- 不会破坏历史链路
- 每一次恢复都有明确的责任人与时间
- 既能快速回滚,又保留审计闭环
6. 版本保留策略
6.1 前台展示
- 详情页固定展示最近 5 个版本
- 每个版本显示:
- 版本号
- 状态
- 创建人
- 创建时间
- 变更说明
6.2 后台保存
后台不能机械地“只保留 5 个版本”,否则可能把关键线上版本挤掉。
建议策略:
- 始终保留当前
published_version - 始终保留当前
working_version - 额外保留最近 5 个历史版本
这样既满足前台简洁,也能避免误删关键版本。
7. 前端交互
7.1 规则详情页顶部
展示两个醒目的版本标签:
- 当前线上版本
- 当前工作版本
如果两者不同,需要明确提示:
当前存在尚未上线的工作稿,系统运行仍以线上版本为准。
7.2 编辑区
- 财务人员看到“可编辑工作稿”
- 普通用户只读
- 管理员可编辑,但主要职责仍是审核与发布
7.3 版本区
最近 5 个版本中每条都显示状态:
- 已上线
- 草稿
- 待审核
- 已通过待上线
- 已驳回
- 历史版本
可执行操作:
- 查看
- 基于该版本恢复
- 对当前工作版本提交审核 / 审核 / 发布
8. 后端改造清单
agent_assets- 新增
published_version - 新增
working_version
- 新增
- 兼容旧数据
- 历史规则资产初始化时:
published_version = current_versionworking_version = current_version
- 历史规则资产初始化时:
- 版本保存
- 保存新版本后:
- 只更新
working_version current_version同步为working_version以兼容旧逻辑
- 只更新
- 保存新版本后:
- 审核
- 审核只针对
working_version
- 审核只针对
- 发布
- 只允许把已审核通过的
working_version推到published_version
- 只允许把已审核通过的
- 运行时
- 只读取
published_version
- 只读取
- 回滚
- 新增“基于历史版本恢复为新工作稿”的接口
9. 前端改造清单
- 资产详情模型增加:
publishedVersionworkingVersion- 每个历史版本的派生状态
- 规则详情页展示:
- 当前线上版本
- 当前工作版本
- 最近 5 个版本
- 操作权限拆分:
- finance:编辑、上传、提交审核
- manager/admin:审核、上线、恢复
- OnlyOffice 编辑逻辑:
- 默认编辑工作版本
- 历史版本只读
- 正式上线按钮:
- 只有工作版本已审核通过时可用
10. 本次实现边界
本轮优先完成以下能力:
- 规则版本双指针
- 财务角色可编辑工作稿
- 正式上线只切换
published_version - 运行时只读取
published_version - 最近 5 个版本展示
- 基于历史版本快速恢复为新工作稿
后续如需要,再继续补:
- 版本差异对比
- 审核意见流转面板
- 发布说明 / 审批单号
- 定时生效