421 lines
12 KiB
Markdown
421 lines
12 KiB
Markdown
# 租户域模板管理模块优化方案清单
|
||
|
||
## 1. 适用范围
|
||
|
||
- 本清单仅针对**租户域模板管理模块**。
|
||
- 不包含平台域统一模板治理、跨租户模板审计、平台级模板库等能力。
|
||
- 目标是把租户域模板管理从“能上传、能发布”升级为“可治理、可检索、可追踪、可联动”。
|
||
|
||
## 2. 优化目标
|
||
|
||
- 提升模板管理页面的信息架构与使用效率。
|
||
- 提升模板生命周期治理能力,包括草稿、发布、停用、归档、回滚。
|
||
- 提升模板与会议、审核、结算等业务场景的联动准确性。
|
||
- 提升模板下载留痕、权限控制、时效控制和风险控制能力。
|
||
- 提升后端接口一致性、可扩展性和并发安全。
|
||
- 提升数据库模型的多租户适配性与查询性能。
|
||
|
||
## 3. 现状问题归纳
|
||
|
||
### 3.1 前端页面布局
|
||
|
||
- 一个页面同时承载模板类型开关、模板列表、流程绑定、版本回滚、版本差异、上传建版,信息密度过高。
|
||
- 缺少统一筛选区,用户只能翻表找模板。
|
||
- 创建模板时需要手填 `projectId`、`meetingId`、`objectKey`,使用门槛高。
|
||
- 模板列表缺少关键治理字段展示,例如生效时间、水印开关、下载限制、最近更新时间、维护人。
|
||
|
||
### 3.2 显示内容
|
||
|
||
- 当前列表更偏“技术字段展示”,不够业务化。
|
||
- 版本信息展示不完整,无法快速判断“当前发布版”和“历史草稿版”差异。
|
||
- 下载日志页展示维度少,问题排查效率低。
|
||
|
||
### 3.3 用户操作
|
||
|
||
- 缺少按业务对象选择模板适用范围的交互。
|
||
- 流程绑定操作没有足够的场景提示和影响提示。
|
||
- 水印下载、普通下载、发布、回滚等高风险操作缺少确认与说明。
|
||
- 缺少预览、复制模板、批量筛选、快速查看版本历史等高频能力。
|
||
|
||
### 3.4 后端逻辑
|
||
|
||
- 模板流程绑定与业务消费链路没有完全闭环。
|
||
- 模板创建和新增版本存在并发安全风险。
|
||
- 有效期、水印、下载限流等字段虽然存在,但未完整落地到业务逻辑。
|
||
- 下载日志缺少标准分页、标准筛选和关联名称字段返回。
|
||
|
||
### 3.5 数据库设计
|
||
|
||
- 模板类型配置表的主键设计与多租户语义不完全一致。
|
||
- 日志和版本表索引偏弱,后续数据量上来后容易退化。
|
||
- 模板主表、版本表、流程绑定表的约束还不够完整。
|
||
|
||
## 4. 租户域模板管理优化方案
|
||
|
||
## 4.1 前端页面布局优化
|
||
|
||
### 4.1.1 页面结构重构
|
||
|
||
- 将当前单页改为“三级结构”:
|
||
- 一级:模板管理首页
|
||
- 二级:模板详情页
|
||
- 二级:模板下载日志页
|
||
- 模板管理首页仅保留:
|
||
- 查询筛选区
|
||
- 模板列表区
|
||
- 快捷操作区
|
||
- 版本历史、版本差异、流程绑定改为详情抽屉或详情页的子区块,不与主列表混排。
|
||
|
||
### 4.1.2 首页布局建议
|
||
|
||
- 顶部操作栏:
|
||
- 新建模板
|
||
- 刷新
|
||
- 导出模板清单
|
||
- 查询筛选区:
|
||
- 模板名称
|
||
- 模板类型
|
||
- 模板状态
|
||
- 适用范围
|
||
- 业务场景
|
||
- 是否启用水印
|
||
- 生效状态
|
||
- 最近更新时间范围
|
||
- 列表区:
|
||
- 默认按“最近更新时间倒序”
|
||
- 支持分页
|
||
- 支持空态提示
|
||
|
||
### 4.1.3 详情页布局建议
|
||
|
||
- 基本信息卡片:
|
||
- 模板名称、类型、状态、业务场景、适用范围、生效时间、水印、下载限制
|
||
- 当前版本卡片:
|
||
- 当前版本号、对象文件、变更说明、创建时间、创建人
|
||
- 版本历史区:
|
||
- 版本号、状态、是否生效、变更说明、回滚原因、创建时间
|
||
- 流程联动区:
|
||
- 当前已绑定场景
|
||
- 是否允许绑定
|
||
- 绑定影响说明
|
||
- 下载记录区:
|
||
- 最近下载记录摘要
|
||
|
||
## 4.2 显示内容优化
|
||
|
||
### 4.2.1 模板列表字段建议
|
||
|
||
- 模板名称
|
||
- 模板类型
|
||
- 业务场景
|
||
- 适用范围
|
||
- 关联项目/会议名称
|
||
- 当前版本号
|
||
- 当前状态
|
||
- 生效开始时间
|
||
- 生效结束时间
|
||
- 水印开关
|
||
- 下载限流
|
||
- 最近更新时间
|
||
- 更新人
|
||
|
||
### 4.2.2 版本列表字段建议
|
||
|
||
- 版本号
|
||
- 版本状态
|
||
- 是否当前生效
|
||
- 文件名
|
||
- 对象存储路径
|
||
- 变更说明
|
||
- 回滚原因
|
||
- 创建人
|
||
- 创建时间
|
||
|
||
### 4.2.3 下载日志字段建议
|
||
|
||
- 模板名称
|
||
- 模板版本号
|
||
- 下载人姓名
|
||
- 下载人账号/手机号
|
||
- 下载时间
|
||
- IP
|
||
- User-Agent
|
||
- 下载方式
|
||
- 普通下载
|
||
- 水印下载
|
||
- 水印文案
|
||
- 关联项目/会议
|
||
|
||
## 4.3 用户操作优化
|
||
|
||
### 4.3.1 新建模板
|
||
|
||
- 取消手填 `objectKey` 为主的方式,改为:
|
||
- 选择模板类型
|
||
- 选择业务场景
|
||
- 选择适用范围
|
||
- 若为项目级,选择项目
|
||
- 若为会议级,选择会议
|
||
- 上传文件
|
||
- 填写变更说明
|
||
- 配置生效时间、水印、下载限流
|
||
- 上传成功后由系统自动回填对象存储路径。
|
||
|
||
### 4.3.2 模板列表操作
|
||
|
||
- 为每条模板提供分层操作:
|
||
- 查看详情
|
||
- 新增版本
|
||
- 发布
|
||
- 停用
|
||
- 归档
|
||
- 下载
|
||
- 水印下载
|
||
- 查看版本差异
|
||
- 查看下载记录
|
||
- 复制模板
|
||
- 对危险操作增加二次确认:
|
||
- 发布
|
||
- 回滚
|
||
- 停用
|
||
- 归档
|
||
|
||
### 4.3.3 版本管理
|
||
|
||
- 新增版本时默认继承模板基础配置,不重复填写范围与场景。
|
||
- 增加“与当前发布版对比”快捷入口。
|
||
- 回滚时必须填写回滚原因。
|
||
- 已归档模板不可新增版本。
|
||
|
||
### 4.3.4 流程联动
|
||
|
||
- 流程绑定独立为一个区块或独立弹窗。
|
||
- 绑定时只允许选择:
|
||
- 已发布
|
||
- 未停用
|
||
- 场景一致
|
||
- 当前生效
|
||
的模板。
|
||
- 显示绑定影响提示,例如:
|
||
- 绑定后将用于会议推荐
|
||
- 绑定后将用于审核通知
|
||
- 绑定后将用于结算材料
|
||
|
||
### 4.3.5 下载日志
|
||
|
||
- 支持按以下条件筛选:
|
||
- 模板名称
|
||
- 模板 ID
|
||
- 下载人
|
||
- 版本号
|
||
- 下载时间范围
|
||
- IP
|
||
- 下载方式
|
||
- 支持跳转查看“该模板全部下载记录”。
|
||
|
||
## 4.4 后端逻辑优化
|
||
|
||
### 4.4.1 查询接口
|
||
|
||
- 模板列表接口增加标准分页与筛选参数:
|
||
- `templateName`
|
||
- `templateType`
|
||
- `status`
|
||
- `scopeType`
|
||
- `bizScene`
|
||
- `watermarkEnabled`
|
||
- `effectiveStatus`
|
||
- `pageNo`
|
||
- `pageSize`
|
||
- 下载日志接口增加标准分页与筛选参数,并返回关联名称字段,不再依赖前端二次查用户和模板列表补名。
|
||
|
||
### 4.4.2 模板生命周期校验
|
||
|
||
- 发布校验:
|
||
- 当前版本文件存在
|
||
- 模板类型已启用
|
||
- 若配置有效期,开始时间不能晚于结束时间
|
||
- 停用校验:
|
||
- 若被流程联动使用,需提示影响
|
||
- 归档校验:
|
||
- 已归档模板不可再发布、不可新增版本
|
||
- 回滚校验:
|
||
- 只能回滚到本模板已有版本
|
||
- 回滚原因必填
|
||
|
||
### 4.4.3 流程联动闭环
|
||
|
||
- 流程绑定时增加强校验:
|
||
- `sceneCode` 必须与模板 `bizScene` 一致
|
||
- 模板必须为 `PUBLISHED`
|
||
- 模板必须在生效期内
|
||
- 业务消费链路按联动关系读模板,不允许页面配置和实际业务读取脱节。
|
||
- 会议推荐、审核通知、结算模板获取逻辑统一经过模板服务,不各自散落实现。
|
||
|
||
### 4.4.4 下载能力治理
|
||
|
||
- 普通下载与水印下载分开记录下载类型。
|
||
- 若模板启用下载限流,则下载前校验单位时间内下载次数。
|
||
- 若模板配置有效期,则过期后禁止下载。
|
||
- 若模板启用水印下载,则需要真正生成带水印文件或带水印预签名资源,而不是只回传文案。
|
||
|
||
### 4.4.5 并发与事务安全
|
||
|
||
- 创建模板后获取主键不要再用 `MAX(id)`,改为标准主键回填。
|
||
- 新增版本号不要再用 `MAX(version_no)+1` 裸算,改为:
|
||
- 悲观锁
|
||
- 或唯一约束重试
|
||
- 或独立版本号分配策略
|
||
- 发布、回滚、建版操作保持事务一致性,避免主表状态和版本表状态不一致。
|
||
|
||
### 4.4.6 可测试性
|
||
|
||
- 增加自动化测试覆盖:
|
||
- 创建模板
|
||
- 并发新增版本
|
||
- 发布/停用/归档/回滚
|
||
- 流程绑定场景校验
|
||
- 有效期校验
|
||
- 下载限流
|
||
- 日志分页与筛选
|
||
|
||
## 4.5 数据库设计优化
|
||
|
||
### 4.5.1 `template`
|
||
|
||
- 建议补充或强化约束:
|
||
- `tenant_id + template_name + scope_type + scope_id + biz_scene` 可考虑唯一性策略
|
||
- 状态字段增加明确枚举约束
|
||
- 建议补充索引:
|
||
- `(tenant_id, status, updated_at)`
|
||
- `(tenant_id, template_type, status)`
|
||
- `(tenant_id, biz_scene, status)`
|
||
- `(tenant_id, scope_type, scope_id)`
|
||
|
||
### 4.5.2 `template_version`
|
||
|
||
- 建议保留唯一约束:
|
||
- `(tenant_id, template_id, version_no)`
|
||
- 建议新增索引:
|
||
- `(tenant_id, template_id, is_effective)`
|
||
- `(tenant_id, template_id, created_at)`
|
||
- 建议增加字段:
|
||
- `file_name`
|
||
- `file_size`
|
||
- `content_type`
|
||
- `checksum`
|
||
|
||
### 4.5.3 `template_download_log`
|
||
|
||
- 建议新增字段:
|
||
- `download_type`
|
||
- `watermark_text`
|
||
- `project_id`
|
||
- `meeting_id`
|
||
- 建议新增索引:
|
||
- `(tenant_id, template_id, downloaded_at)`
|
||
- `(tenant_id, user_id, downloaded_at)`
|
||
- `(tenant_id, downloaded_at)`
|
||
|
||
### 4.5.4 `template_type_option`
|
||
|
||
- 现有主键建议调整为适合多租户的联合唯一约束:
|
||
- 主键独立 `id`
|
||
- 唯一键 `(tenant_id, type_code)`
|
||
- 避免 `type_code` 全局唯一导致多租户扩展受限。
|
||
|
||
### 4.5.5 `template_flow_link`
|
||
|
||
- 建议保留:
|
||
- `(tenant_id, scene_code)` 唯一
|
||
- 建议增加:
|
||
- 绑定来源
|
||
- 绑定说明
|
||
- 最近绑定人
|
||
- 最近绑定时间
|
||
|
||
## 4.6 权限与风控优化
|
||
|
||
- 继续保留租户域权限拆分:
|
||
- 查询
|
||
- 创建
|
||
- 发布
|
||
- 停用
|
||
- 归档
|
||
- 回滚
|
||
- 下载
|
||
- 流程绑定
|
||
- 补充细粒度操作审计:
|
||
- 模板创建
|
||
- 版本新增
|
||
- 发布
|
||
- 回滚
|
||
- 流程绑定
|
||
- 普通下载
|
||
- 水印下载
|
||
- 对高风险操作输出审计原因字段:
|
||
- 回滚原因
|
||
- 归档原因
|
||
- 水印下载说明
|
||
|
||
## 4.7 交互与体验优化
|
||
|
||
- 统一中文文案,避免技术字段直接暴露给业务用户。
|
||
- 统一状态文案与颜色:
|
||
- 草稿
|
||
- 已发布
|
||
- 已停用
|
||
- 已归档
|
||
- 对空数据场景增加引导:
|
||
- 暂无模板,请先创建
|
||
- 暂无下载记录
|
||
- 对失败场景返回可理解提示:
|
||
- 模板已归档,不能新增版本
|
||
- 模板未在生效期内,不能绑定流程
|
||
- 当前小时下载次数已达上限
|
||
|
||
## 5. 分期实施建议
|
||
|
||
## 5.1 P0:必须先做
|
||
|
||
- 模板列表筛选与标准分页
|
||
- 下载日志标准分页与筛选
|
||
- 创建模板交互优化,取消手填 `objectKey`
|
||
- 流程绑定强校验
|
||
- 模板创建/新增版本并发安全修复
|
||
- 发布/停用/归档/回滚状态机校验补齐
|
||
|
||
## 5.2 P1:强烈建议做
|
||
|
||
- 模板详情页与版本历史重构
|
||
- 有效期控制落地
|
||
- 水印下载真实落地
|
||
- 下载限流落地
|
||
- 下载日志返回关联名称,去掉前端补查
|
||
- 复制模板能力
|
||
|
||
## 5.3 P2:体验增强
|
||
|
||
- 模板预览
|
||
- 模板变更摘要对比优化
|
||
- 关联业务影响提示
|
||
- 模板清单导出
|
||
- 模板治理仪表盘
|
||
|
||
## 6. 验收标准建议
|
||
|
||
- 用户可以在 3 步内完成模板创建,不需要手填对象存储路径。
|
||
- 用户可以在列表中快速筛出“某场景、某状态、某范围”的模板。
|
||
- 流程绑定后,业务读取到的模板与绑定配置一致。
|
||
- 并发建版不会出现版本号冲突或串模板。
|
||
- 下载日志可分页、可筛选、可定位到具体用户与版本。
|
||
- 有效期、水印、下载限流配置能被真实执行,而不是只存库不生效。
|
||
|
||
## 7. 推荐实施顺序
|
||
|
||
1. 先改后端查询、状态机、并发安全、日志接口。
|
||
2. 再改前端页面结构与创建流程。
|
||
3. 再补流程联动闭环、水印、限流、有效期。
|
||
4. 最后补预览、复制、导出、治理报表等增强能力。
|
||
|