writeOff/docs/租户域模板管理模块优化方案清单.md
haomingming 815aa04fe8 first
2026-05-20 18:21:39 +08:00

421 lines
12 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 租户域模板管理模块优化方案清单
## 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. 最后补预览、复制、导出、治理报表等增强能力。