# 新平台评查点与评查组真实模型梳理 ## 1. 先给结论 前面把“新平台评查点”理解成老库 `evaluation_points` 主表,这是错误的。 当前代码里实际上并存两套链路: 1. 新平台主链路 `入口模块 -> 一级业务大类分组 -> 二级业务子类型分组 -> 规则集 -> 规则版本(YAML) -> 文档评查结果` 2. 旧兼容链路 `/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.sql` - `fastapi_modules/fastapi_leaudit/services/impl/documentServiceImpl.py` - `fastapi_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_bindings` - `leaudit_rule_sets` - `leaudit_rule_versions` 并且“新建规则集/YAML”动作会: 1. 根据二级分组推导 `rule_type` 2. 调用 `RuleService.CreateVersion(...)` 3. 生成规则版本 YAML 4. 反查对应 `rule_set_id` 5. 自动把规则集绑定到当前二级分组 对应代码: - `evaluationPointGroupServiceImpl.py` 中 `CreateRuleDraft` - `ruleServiceImpl.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. 文档评查运行链路怎么命中分组 当前文档链路已经和新分组模型发生真实耦合: 1. 文档上传时可带 `group_id` 2. 后端校验该 `group_id` 必须是有效二级分组 3. 系统再反解一级根分组,用于归档和版本链路 4. 文档列表、详情、统计也会回查 `leaudit_evaluation_point_groups` 对应代码集中在: - `documentServiceImpl.py` 这意味着: - 分组模型已经进入实际业务运行面 - 它不是“还没启用的设计稿” ## 5. 为什么我前面会判断错 因为仓库里仍保留了“评查点管理”老接口与老页面: - `EvaluationPointController` - `EvaluationPointServiceImpl` - `legal-platform-frontend/app/(audit)/rules/*` 它们让表面上看起来仍像“评查点主表驱动”。 但继续往下看新分组页、规则集页、文档上传与文档评查链路,就会发现当前新平台实际已经是: - 分组承接业务结构 - 规则集承接规则内容 - 文档按分组与规则集运行 所以真正的问题不是“给老 `evaluation_points` 补 tenant_code 就完了”,而是: - 哪些页面仍停留在旧兼容链路 - 哪些运行链路已经切到新分组模型 - 租户边界应该落在新分组/文档/规则集哪一层 ## 6. 当前最重要的纠偏结论 ### 6.1 不应再把旧 `evaluation_points` 当成新平台主模型 旧链路只能视为: - 兼容管理页 - 过渡接口 - 待迁移遗留 不能再把它作为后续“租户化/权限化/评查模块改造”的主战场。 ### 6.2 新平台真正要分析的核心表 后续围绕评查点/评查组,应优先分析这些对象: - `leaudit_evaluation_point_groups` - `leaudit_rule_group_bindings` - `leaudit_rule_sets` - `leaudit_rule_versions` - `leaudit_documents.group_id` - `leaudit_review_point_audits` ### 6.3 “评查点”一词在当前系统里有双重含义 当前仓库里“评查点”至少有两层语义: 1. 旧语义 老库 `evaluation_points` 里的单条配置记录 2. 新语义 规则集/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 现在优先级更高的不是“继续补旧点评租户字段” 而是先回答这几个问题: 1. 新平台二级分组是否需要直接租户化 2. 规则集绑定是否需要租户边界 3. 文档上传时的 `group_id` 选择是否需要按租户过滤 4. 文档评查结果是否需要按租户隔离回查 5. 旧 `rules/list` 与 `rules/new` 是否继续保留,还是迁入新规则集页 ## 8. 下一步建议 建议后续按下面顺序继续: 1. 先梳理“新平台主链路的租户边界设计” 重点看:入口模块、文档类型、一级分组、二级分组、文档上传、文档列表、规则集绑定 2. 再单独梳理“旧评查点兼容链路去留方案” 明确: - 继续兼容多久 - 是否只读 - 是否要做迁移映射 3. 最后才决定是否还要继续改 `/v3/evaluation-points` 否则会继续在“旧兼容页”和“新运行主链路”之间来回误伤。