7.2 KiB
新平台评查点与评查组真实模型梳理
1. 先给结论
前面把“新平台评查点”理解成老库 evaluation_points 主表,这是错误的。
当前代码里实际上并存两套链路:
-
新平台主链路
入口模块 -> 一级业务大类分组 -> 二级业务子类型分组 -> 规则集 -> 规则版本(YAML) -> 文档评查结果 -
旧兼容链路
/api/v3/evaluation-points->docauditai.evaluation_points
也就是说:
- 新平台“评查组/评查点分组”是真正的主配置骨架。
- 新平台运行时真正承载评查规则内容的,不是
evaluation_points行数据,而是leaudit_rule_sets + leaudit_rule_versions中的 YAML 规则。 - 旧的“评查点管理”页面和
/v3/evaluation-points目前仍然挂在老库兼容链路上,还没有完全切到新平台主模型。
2. 新平台真实对象关系
2.1 一级分组不是老地区分组
新平台一级分组已经不是“梅州/揭阳/省级”这种地区概念,而是业务大类根:
- 合同
- 行政卷宗
- 后续新增业务大类
对应证据:
scripts/创建sql/migrate_rule_groups_to_business_roots.sqlfastapi_modules/fastapi_leaudit/services/impl/documentServiceImpl.pyfastapi_modules/fastapi_leaudit/services/impl/evaluationPointGroupServiceImpl.py
其中迁移脚本已经把目标写得很清楚:
- 一级分组 = 业务大类
- 二级分组 = 具体业务类型
- 规则集 = 挂在二级分组下
- 入口模块 = 绑定一级分组
2.2 二级分组才是运行时的“业务子类型”
二级分组必须绑定具体 document_type_id,用于表达:
- 建设工程合同
- 买卖合同
- 行政许可-新办
- 行政许可-延续
上传文档时,后端校验 group_id 是否属于当前 document_type_id,见:
documentServiceImpl.py中_resolveDocumentGroupId
说明当前系统真实运行时,文档已经开始依赖:
- 文档类型
- 二级分组
- 一级根分组
而不是依赖老 evaluation_points 主表。
2.3 真正承载“评查点内容”的是规则集与规则版本
新平台分组页不是在维护老式点表,而是在维护:
leaudit_rule_group_bindingsleaudit_rule_setsleaudit_rule_versions
并且“新建规则集/YAML”动作会:
- 根据二级分组推导
rule_type - 调用
RuleService.CreateVersion(...) - 生成规则版本 YAML
- 反查对应
rule_set_id - 自动把规则集绑定到当前二级分组
对应代码:
evaluationPointGroupServiceImpl.py中CreateRuleDraftruleServiceImpl.py中CreateVersion/ListSets/GetContent
这说明新平台里的“评查点”更接近:
- 规则 YAML 中的一条条规则项
- 或某个规则集里的规则集合
而不是老系统那种独立的 evaluation_points 业务主表记录。
3. 前端页面语义已经分叉
3.1 rule-groups 页面是新平台主入口
前端 RuleGroupsClient.tsx 的语义已经非常明确:
- 展示一级业务大类
- 展示二级子类型
- 给二级子类型绑定规则集
- 直接创建规则 YAML 草稿
- 查看规则集可用版本和可用规则数
这页对应的是新平台主模型,不是老分组页换皮。
3.2 rules/list、rules/new 仍然是旧评查点页面
前端这两页仍在调用:
/api/v3/evaluation-points
后端服务 EvaluationPointServiceImpl 明确连接:
LEGACY_RULE_DB_NAME- 默认库
docauditai
说明这两页还是旧兼容页面,并没有真正迁到新平台主链路。
4. 文档评查运行链路怎么命中分组
当前文档链路已经和新分组模型发生真实耦合:
- 文档上传时可带
group_id - 后端校验该
group_id必须是有效二级分组 - 系统再反解一级根分组,用于归档和版本链路
- 文档列表、详情、统计也会回查
leaudit_evaluation_point_groups
对应代码集中在:
documentServiceImpl.py
这意味着:
- 分组模型已经进入实际业务运行面
- 它不是“还没启用的设计稿”
5. 为什么我前面会判断错
因为仓库里仍保留了“评查点管理”老接口与老页面:
EvaluationPointControllerEvaluationPointServiceImpllegal-platform-frontend/app/(audit)/rules/*
它们让表面上看起来仍像“评查点主表驱动”。
但继续往下看新分组页、规则集页、文档上传与文档评查链路,就会发现当前新平台实际已经是:
- 分组承接业务结构
- 规则集承接规则内容
- 文档按分组与规则集运行
所以真正的问题不是“给老 evaluation_points 补 tenant_code 就完了”,而是:
- 哪些页面仍停留在旧兼容链路
- 哪些运行链路已经切到新分组模型
- 租户边界应该落在新分组/文档/规则集哪一层
6. 当前最重要的纠偏结论
6.1 不应再把旧 evaluation_points 当成新平台主模型
旧链路只能视为:
- 兼容管理页
- 过渡接口
- 待迁移遗留
不能再把它作为后续“租户化/权限化/评查模块改造”的主战场。
6.2 新平台真正要分析的核心表
后续围绕评查点/评查组,应优先分析这些对象:
leaudit_evaluation_point_groupsleaudit_rule_group_bindingsleaudit_rule_setsleaudit_rule_versionsleaudit_documents.group_idleaudit_review_point_audits
6.3 “评查点”一词在当前系统里有双重含义
当前仓库里“评查点”至少有两层语义:
-
旧语义 老库
evaluation_points里的单条配置记录 -
新语义 规则集/YAML 里的具体规则项,以及文档评查结果里的单个 review point
后续文档和代码改造必须把这两个概念拆开命名,否则一定继续误判。
建议统一命名:
- 旧链路:
legacy_evaluation_point - 新链路配置骨架:
rule_group / subtype_group - 新链路规则内容:
rule_set / rule_version / yaml_rule - 运行结果:
review_point_result
7. 对后续改造的直接影响
7.1 评查模块后续工作应拆成两条线
第一条:新平台主链路
- 分组
- 文档类型
- 入口模块
- 文档上传
- 规则集绑定
- 评查运行结果
第二条:旧兼容链路
/v3/evaluation-points- 旧评查点列表/新增/编辑页面
- 老库
docauditai.evaluation_points
7.2 现在优先级更高的不是“继续补旧点评租户字段”
而是先回答这几个问题:
- 新平台二级分组是否需要直接租户化
- 规则集绑定是否需要租户边界
- 文档上传时的
group_id选择是否需要按租户过滤 - 文档评查结果是否需要按租户隔离回查
- 旧
rules/list与rules/new是否继续保留,还是迁入新规则集页
8. 下一步建议
建议后续按下面顺序继续:
-
先梳理“新平台主链路的租户边界设计” 重点看:入口模块、文档类型、一级分组、二级分组、文档上传、文档列表、规则集绑定
-
再单独梳理“旧评查点兼容链路去留方案” 明确:
- 继续兼容多久
- 是否只读
- 是否要做迁移映射
-
最后才决定是否还要继续改
/v3/evaluation-points
否则会继续在“旧兼容页”和“新运行主链路”之间来回误伤。