Files
leaudit-platform-backend/docs/内部公文模块/内部公文模块业务逻辑梳理.md
T

674 lines
13 KiB
Markdown
Raw 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. 文档目的
本文档用于明确当前 `leaudit-platform``govdoc`(内部公文模块)的业务定位、核心对象、标准流程、权限边界与结果语义。
这份文档的目标不是讲技术实现,而是先把“这个模块业务上到底是什么、用户怎么用、系统应该怎么理解”说清楚,作为后续前后端对接补齐和修复的业务基线。
---
## 2. 模块定位
`govdoc` 模块是当前平台中的一个一等业务模块,不是外挂独立系统。
它的核心业务目标是:
- 上传一份内部公文文件
- 按公文格式规范自动发起审查
- 输出结构化问题、规则检查结果、结构/大纲/实体识别结果
- 提供 HTML 报告、批注 DOCX、原文下载
- 全流程复用当前平台的账号、权限、地区、文档主档、OSS、异步任务体系
一句话概括:
**内部公文模块本质上是平台里的“公文格式审查模块”。**
---
## 3. 业务边界
### 3.1 本模块负责的事
- 公文文档上传
- 自动格式审查
- 审查结果展示
- 审查历史留痕
- 规则查看
- 报告下载
### 3.2 本模块不负责的事
- 公文流转审批
- 协同编辑
- 发文流程管理
- 独立规则平台
- 第二套独立文档系统
- 通用 RAG / 合同评审 / 交叉评查
因此,第一阶段不要把 `govdoc` 理解成“公文业务平台”,而应理解成“公文格式审查能力模块”。
---
## 4. 审查对象
从现有页面文案、规则展示和引擎能力看,`govdoc` 模块重点审查的是“公文格式规范”,而不是公文业务内容是否正确。
它重点关注的对象包括但不限于:
- 标题
- 发文字号
- 主送机关
- 正文层级
- 附件标记
- 附件标题
- 署名
- 成文日期
- 字体字号
- 行距
- 标点
- 禁用表述
- 易混词
- 文种合法性
- 层级编号规范
- 需要 AI/语义辅助判断的规则
因此,模块输出的“分数”和“问题”,本质上是:
**公文格式规范符合度结果,不是业务内容质量结果。**
---
## 5. 核心业务对象
本模块建议围绕以下 4 层业务对象展开。
### 5.1 文档
文档是平台主档中的一份公文文件。
业务语义:
- 用户上传的一份公文文件
- 是平台中的主对象
- 需要标记该文档属于 `govdoc` 模块
建议复用:
- `leaudit_documents`
- `leaudit_document_files`
同时在主档中补充模块标识,例如:
- `engine_type = 'govdoc'`
### 5.2 审查运行(Run
Run 表示:
- 某份文档的一次审查执行记录
- 同一份文档可以有多次 run
- 新 run 不覆盖旧 run
- run 是执行留痕,不是业务主对象
### 5.3 规则结果
规则结果表示:
- 每条规则对当前文档检查后的结果
单条规则最终状态不是只有“通过/不通过”,而是:
- `pass`
- `fail`
- `skipped`
其中 `skipped` 表示:
- 条件不足,无法检查
- 或外部依赖能力异常,临时跳过
### 5.4 报告产物
审查完成后会产出一组可展示或可下载的结果文件,例如:
- HTML 报告
- 批注 DOCX
- 段落 HTML
- 原文下载
- 其他结构化中间结果
---
## 6. 主对象结论
结合当前业务确认,推荐正式拍板如下:
- **业务主对象是文档,不是 run**
- run 是文档的一次审查执行留痕
原因:
- 列表页已经确定为文档列表
- 首页统计按文档最新结果计算
- 删除、下载原文、权限继承都天然是文档维度
- 用户面对的是“这份公文”,而不是技术上的 run
---
## 7. 详情页主键结论
推荐正式拍板如下:
- **详情页路由主键使用 `documentId`**
- 页面默认展示该文档“最新一次 run”的结果
- 历史 run 在详情页内切换查看
推荐语义:
- 页面入口面向文档
- 页面内容展示 run 结果
- 最新 run 为默认视图
不建议直接把页面主键设计成 `runId`,否则会带来这些问题:
- 用户难以理解自己打开的是“哪份文档”
- 同一文档多次审查后页面入口不稳定
- 列表页与详情页的主对象不一致
---
## 8. 标准业务流程
### 8.1 进入模块
用户进入 `govdoc` 模块后,可以看到:
- 模块首页/概览
- 最近文档
- 统计数据
### 8.2 上传公文
用户上传一份公文文件。
第一阶段支持的文件类型应以现有前端为准,例如:
- `doc`
- `docx`
- `wps`
上传成功后:
- 创建平台文档主档
- 文档被标记为 `govdoc`
### 8.3 自动发起审查
已确认第一阶段默认行为为:
- 上传成功后自动发起审查
也就是:
- 上传成功
- 立即创建一条新的 run
- 投递异步任务处理
因此在业务上:
- 上传 ≠ 审查结果已经出来
- 上传 = 文档入库 + 自动创建 run
### 8.4 异步执行审查
Worker 异步执行完整审查链路,包括:
- 读取原文
- 解析段落与样式
- 识别段落角色
- 抽取实体
- 加载规则
- 执行规则评估
- 生成问题结果
- 生成报告产物
- 回写数据库与 OSS
### 8.5 查看详情
用户打开某份文档详情后,默认应看到:
- 该文档最新一次 run 的结果
包括:
- 问题列表
- 已通过规则
- 已跳过规则
- 结构面板
- 大纲面板
- 实体面板
- 报告下载
### 8.6 查看历史审查记录
同一份文档允许存在多个 run。
已确认需要保留历史 run,因此:
- 新 run 不覆盖旧 run
- 历史记录在详情页中查看
- 第一阶段前端不主动开放“重跑按钮”,但底层模型要支持
---
## 9. 列表页业务定义
已确认列表页应为:
- **文档列表**
不是:
- run 列表
因此每一行表示的是:
- 一份公文文档
展示的是该文档当前/最近一次审查摘要,例如:
- 文档名称
- 文件类型
- 上传时间
- 当前状态
- 最新分数
- 最新问题数
- 最近一次审查时间
为什么不能做成 run 列表:
- 同一份文档多次重跑会出现多行重复记录
- 用户业务上关心的是“这份公文当前状态如何”
- 列表页会与文档权限、删除语义、首页统计口径冲突
---
## 10. Run 的业务定位
Run 是内部执行留痕,不是页面主对象,但它在业务上必须存在。
Run 的业务价值:
- 记录某次审查什么时候发起
- 记录谁触发了审查
- 记录本次状态、阶段、分数、错误信息
- 保留历史版本,支持追踪和回溯
当前业务确认:
- 需要支持重跑
- 但前端第一阶段不开放重跑按钮
- 处理方式与其他文档类型保持一致
因此应理解为:
- 能力层支持多 run
- 数据层必须保留历史 run
- 交互层是否开放重跑,可后续逐步释放
---
## 11. 结果页业务语义
结果页中几个核心对象的业务含义如下。
### 11.1 Findings
Findings 是最细粒度的问题明细。
其业务语义是:
- 某条规则在某一段落或某个结构位置上发现的问题
典型信息包括:
- 规则 ID
- 规则名称
- 严重级别
- 分类
- 位置
- 实际值
- 期望值
- 建议
- 证据文本
本质上是“段落级问题清单”。
### 11.2 Checked Rules
这是规则维度的检查结果。
每条规则的最终状态只有一个:
- `pass`
- `fail`
- `skipped`
这个列表用于回答:
- 哪些规则通过了
- 哪些规则失败了
- 哪些规则因为条件不足被跳过了
### 11.3 Structure
Structure 表示:
- 文档结构统计
它关注的是:
- 识别出了哪些结构角色
- 各角色出现了多少次
- 是否缺少预期结构
- 样式是否一致
### 11.4 Outline
Outline 表示:
- 文档大纲树
本质上是标题层级结构,用于帮助用户快速跳到对应段落。
### 11.5 Entities
Entities 表示:
- 从公文中识别出的关键实体
例如:
- 标题
- 发文字号
- 主送机关
- 附件
- 署名
- 日期
- 文种
---
## 12. 右侧结果面板的业务定义
当前详情右侧面板可归纳为 3 类结果:
### 12.1 问题
显示:
- 所有失败规则对应的问题明细
这是用户最主要的修正文档入口。
### 12.2 已通过
显示:
- 当前 run 中已通过的规则
作用:
- 帮助用户知道哪些规范项已经满足
### 12.3 已跳过
显示:
- 当前 run 中未被真正执行的规则
典型原因:
- 目标实体未识别到
- 检查条件不满足
- 外部智能检查服务不可用
业务上要明确:
- `skipped` 不算失败
- 但也不等于通过
---
## 13. 评分语义
已确认分数语义为:
- **格式审查分**
它表示:
- 这份公文在格式规范层面的符合程度
不表示:
- 公文业务内容质量
- 法律风险程度
- 审批流转质量
因此用户看到的分数,本质上是格式规范扣分结果。
---
## 14. 首页统计口径
已确认首页统计应按:
- **文档最新结果**
而不是:
- 所有历史 run 累加
因此统计时应遵循:
- 一份文档多次重跑,只按最新结果参与当前统计
- “本月评查文件数”按文档数,不按 run 数
- “问题数”“通过率”也按文档最新结果计算
如果按所有 run 统计,会导致:
- 文档数量虚高
- 问题数虚高
- 同一文档反复重跑导致指标失真
---
## 15. 权限模型
本模块应使用独立的 `govdoc` 权限命名空间,不与其他模块混用。
### 15.1 模块级权限
- `govdoc:module:read`
### 15.2 文档权限
- `govdoc:document:create`
- `govdoc:document:read`
- `govdoc:document:update`
- `govdoc:document:delete`
### 15.3 Run 权限
- `govdoc:run:create`
- `govdoc:run:read`
- `govdoc:run:retry`
### 15.4 结果与报告权限
- `govdoc:result:read`
- `govdoc:report:read`
### 15.5 规则权限
- `govdoc:rule:read`
- `govdoc:rule:manage`
---
## 16. 数据范围规则
当前业务确认如下。
### 16.1 普通用户(common
- 只能看自己上传/自己触发的文档与结果
- 不能通过参数查看别人数据
### 16.2 地区管理员(admin
- 只能看本地区数据
- 即使前端传入其他 `region`,后端也必须拦截
### 16.3 全局角色
- `super_admin`
- `provincial_admin`
可看更大范围或全量数据
---
## 17. 结果与报告权限继承原则
已确认以下资源不单独放宽:
- findings
- entities
- HTML 报告
- 批注 DOCX
- 原文下载
统一原则:
- **能否查看结果 = 能否查看该文档**
也就是说:
- 不能看这份文档,就不能看它的任何结果和报告产物
---
## 18. 删除语义
已确认删除语义为:
- **软删除文档**
业务含义:
- 删除的是文档在模块中的业务可见性/状态
- 不是立刻物理删除 OSS 文件
- 历史 run 和产物先保留
因此第一阶段不应把“删除文档”理解成“彻底清除所有数据”。
---
## 19. 文档修改权限
已确认普通用户默认不应具备较高的文档管理权限。
推荐权限语义:
- 普通用户可 `create/read`
- 普通用户默认不具备 `update/delete`
因此:
- `govdoc:document:update`
- `govdoc:document:delete`
应高于:
- `govdoc:document:create`
- `govdoc:document:read`
- `govdoc:run:create`
---
## 20. 规则模块关系
已确认规则模块口径为:
- **按照现有规则模块功能怎么做,内部公文模块就怎么接**
这意味着:
- `govdoc` 不额外发明一套私有规则治理方式
- 规则版本、生效规则、规则选择逻辑,应尽量复用平台现有规则体系
- `govdoc` 只是作为一个业务模块接入既有规则治理框架
因此第一阶段不建议:
- 单独做一套 `govdoc` 私有规则选择交互
- 单独维护一套与平台脱节的规则管理入口
---
## 21. 第一阶段用户可见能力
第一阶段用户可见能力应聚焦在:
- 上传公文
- 自动格式审查
- 查看问题
- 查看结构/大纲/实体
- 下载报告
不作为第一阶段重点暴露的能力:
- 手动重跑按钮
- 高级规则版本选择
- 复杂模块配置页
其中:
- 重跑能力底层可以支持
- 规则版本能力可先遵循现有平台规则模块现状
---
## 22. 推荐正式拍板结论
为了保证后续前后端对接和修复方向稳定,推荐正式拍板以下两条:
### 22.1 主对象结论
- 主对象 = 文档
### 22.2 详情页结论
- 详情页路由 = `documentId`
- 页面默认展示该文档最新 run
- 历史 run 在详情页内部切换查看
这两条一旦定稿,以下模块都会更清晰:
- 列表页
- 详情聚合
- 权限继承
- 首页统计
- 历史记录展示
- 下载与删除语义
---
## 23. 一句话总结
`govdoc` 模块应被定义为:
**以“公文文档”为主对象、以“审查 run”为执行留痕、以“规则结果 + 报告产物”为输出、复用平台统一底座的内部公文格式审查模块。**