Files
DEMO-AGENT/docs/详细设计/2.法规完整性检查.md

17 KiB
Raw Blame History

2. 法规完整性检查详细设计

1. 设计目标

本步骤承接“资料包导入与目录汇总”的输出,目标是对照 NMPA 体外诊断试剂注册申报资料要求,检查当前资料包是否齐套、章节点是否匹配、资料是否错放、是否存在需要人工复核的完整性问题。

本步骤需要完成以下业务结果:

  1. 识别当前审核任务适用的法规流程V1 默认使用 registration 注册申报流程。
  2. 装载本地法规规则包,默认以公告附件包为主规则来源。
  3. 将资料包目录结果与法规目录模板进行匹配。
  4. 区分已提供、缺失、疑似提供、错放、待人工复核等状态。
  5. 对缺失、错放和不确定项生成完整性风险等级和处理建议。
  6. 通过 RAG 检索法规原文证据,但不把 RAG 命中结果作为最终裁判。
  7. 输出结构化 registration_completeness_report,供 Chat 页面、Audit 和后续风险预警使用。

本步骤不负责产品字段抽取,不负责跨文档字段一致性检查,不负责最终综合风险报告。它只产出法规完整性维度的结论和证据。

2. 所属模块与边界

2.1 Scenarios

apps.scenarios 负责定义“法规完整性核查”任务入口。

建议配置项:

  1. scenario_id: registration_completeness_check
  2. workflow_type: registration
  3. required_input: registration_overview_report
  4. rule_package: nmpa_ivd_registration_v1
  5. enable_rag_evidence: true
  6. output_schema: registration_completeness_report

2.2 Documents

apps.documents 提供第一步生成的文档主数据和目录汇总结果。

本步骤读取:

  1. 批次信息。
  2. 文件相对路径。
  3. 文件名。
  4. 文件类型。
  5. 页数。
  6. 章节点。
  7. 文档角色。
  8. 处理状态。
  9. 待人工复核标记。

2.3 Agent Core

agent_core 是本步骤的执行主体,负责编排规则包加载、流程识别、规则匹配、完整性判定、法规证据检索和报告生成。

本步骤建议产生以下中文 Skill

  1. 法规完整性检查Skill
  2. 法规规则包加载Skill
  3. 法规流程识别Skill
  4. 资料要求匹配Skill
  5. 缺失错放判定Skill
  6. 法规证据检索Skill
  7. 完整性报告生成Skill

2.4 RAG

RAG 只负责证据定位和解释引用。

RAG 可以回答:

  1. 当前缺失项对应公告附件中的哪段要求。
  2. 当前章节点属于哪类资料要求。
  3. 当前格式要求来源于哪份附件。

RAG 不负责决定:

  1. 某资料是否必交。
  2. 当前资料是否合规。
  3. 缺失项是否高风险。

这些结论必须来自结构化规则。

2.5 Audit

apps.audit 记录本次完整性检查的输入、规则版本、匹配结果、缺失项、证据和错误。

审计中必须保留:

  1. batch_id
  2. scenario_id
  3. workflow_type
  4. rule_package_id
  5. rule_version
  6. selected_document_ids
  7. matched_items
  8. missing_items
  9. misplaced_items
  10. manual_review_items
  11. evidence_refs

3. 输入输出

3.1 输入

{
  "batch_id": 1001,
  "scenario_id": "registration_completeness_check",
  "workflow_type": "registration",
  "rule_package_id": "nmpa_ivd_registration_v1",
  "chapter_scope": ["CH1"],
  "selected_document_ids": [1, 2, 3],
  "enable_rag_evidence": true
}

其中 chapter_scope 可为空。为空时默认检查当前批次已识别章节点及 V1 默认范围;演示首版建议优先检查 CH1,同时保留全六章规则结构。

3.2 输出

本步骤输出 registration_completeness_report

{
  "report_type": "registration_completeness_report",
  "batch_id": 1001,
  "workflow_type": "registration",
  "rule_package_id": "nmpa_ivd_registration_v1",
  "rule_version": "2026-06-03",
  "chapter_scope": ["CH1"],
  "summary": {
    "required_item_count": 8,
    "provided_item_count": 6,
    "missing_item_count": 1,
    "suspected_item_count": 1,
    "misplaced_item_count": 0,
    "manual_review_item_count": 1,
    "highest_risk_level": "high",
    "pass_status": "failed"
  },
  "matched_items": [],
  "missing_items": [],
  "misplaced_items": [],
  "manual_review_items": [],
  "evidence_refs": [],
  "suggestions": []
}

3.3 结果状态

状态 含义
provided 已提供,命中文档和章节点
missing 必交资料未找到
suspected 疑似提供,但命名、章节点或文档角色不确定
misplaced 文件存在,但章节点或路径位置不匹配
manual_review_required 规则无法直接判断,需人工复核
not_applicable 当前流程或适用条件下不要求

4. 主工作流

用户发起法规完整性检查
-> 读取资料包目录汇总结果
-> 确认法规流程类型
-> 装载法规规则包
-> 展开章节和必交项规则
-> 将实际文档与规则项匹配
-> 判定已提供/缺失/疑似/错放/待复核
-> 映射风险等级与处理建议
-> 检索法规原文证据
-> 生成完整性检查报告
-> 写入审计留痕
-> 返回 Web/飞书可展示结果

5. 节点详细设计

5.1 节点一:读取目录汇总结果

业务功能:

  1. 根据 batch_id 读取第一步产出的 registration_overview_report
  2. 校验资料包是否完成目录汇总。
  3. 过滤当前检查范围内的文档。
  4. 收集待人工复核文档,作为完整性检查的不确定性输入。

使用技术:

  1. Django ORM
  2. JSONField
  3. Pydantic 或 dataclass schema 校验

产生方法:

  1. load_overview_report(batch_id) -> RegistrationOverviewReport
  2. select_documents_for_completeness(report, chapter_scope, selected_document_ids) -> list[DocumentFact]
  3. collect_document_uncertainties(documents) -> list[DocumentUncertainty]

对应 Skill

  1. 法规完整性检查Skill

5.2 节点二:法规流程识别

业务功能:

  1. 确认当前任务属于注册申报、变更备案、变更注册还是延续注册。
  2. V1 默认使用 registration
  3. 如果用户选择了不支持流程,返回业务化提示。
  4. 防止把变更或延续规则误用于首次注册申报。

使用技术:

  1. 场景配置 YAML
  2. 批次字段 workflow_type
  3. 规则包元数据

产生方法:

  1. resolve_workflow_type(batch, scenario_config, user_input) -> WorkflowTypeResult
  2. validate_workflow_supported(workflow_type, rule_package) -> bool

对应 Skill

  1. 法规流程识别Skill

5.3 节点三:法规规则包加载

业务功能:

  1. 加载本地结构化法规规则文件。
  2. 校验规则版本、适用流程和章节结构。
  3. 按“章 -> 条 -> 要求项 -> 模板字段”四级结构展开规则。
  4. 区分资料要求层、结构目录层和格式模板层。

使用技术:

  1. YAML 规则文件
  2. Pydantic schema
  3. Django cache 或内存缓存
  4. 规则版本号

建议规则目录:

configs/registration/rules/
  nmpa_ivd_registration_v1.yaml
  chapter_catalog.yaml
  risk_mapping.yaml

规则项示例:

rule_package_id: nmpa_ivd_registration_v1
workflow_type: registration
version: "2026-06-03"
chapters:
  - chapter_code: CH1
    chapter_name: 监管信息
    requirements:
      - requirement_id: CH1.4
        requirement_name: 申请表
        required: true
        expected_document_roles:
          - application_form
        risk_level_if_missing: high
        evidence_query: "体外诊断试剂 注册申报 申请表 监管信息"

产生方法:

  1. load_rule_package(rule_package_id) -> RulePackage
  2. validate_rule_package(rule_package) -> RulePackageValidationResult
  3. expand_requirement_items(rule_package, workflow_type, chapter_scope) -> list[RequirementItem]

对应 Skill

  1. 法规规则包加载Skill

5.4 节点四:资料要求匹配

业务功能:

  1. 将当前资料包文档与法规要求项进行匹配。
  2. 优先使用章节点编码匹配。
  3. 其次使用文档角色匹配。
  4. 再使用文件名和资料名称关键词匹配。
  5. 保留匹配证据和匹配置信度。

匹配优先级:

  1. document.chapter_code == requirement.requirement_id
  2. document.document_role in requirement.expected_document_roles
  3. 文件名命中规则关键词。
  4. 相对路径命中章节名称。
  5. 人工修正字段命中。

使用技术:

  1. Python 规则匹配
  2. 字符串标准化
  3. 简单中文关键词匹配
  4. 可选 rapidfuzz 模糊匹配V1 谨慎使用

产生方法:

  1. match_documents_to_requirements(documents, requirements) -> RequirementMatchSet
  2. match_by_chapter_code(document, requirement) -> MatchEvidence | None
  3. match_by_document_role(document, requirement) -> MatchEvidence | None
  4. match_by_keywords(document, requirement) -> MatchEvidence | None
  5. calculate_match_confidence(evidences) -> str

对应 Skill

  1. 资料要求匹配Skill

5.5 节点五:缺失、错放与待复核判定

业务功能:

  1. 对每个法规要求项生成完整性状态。
  2. 判断必交项是否缺失。
  3. 判断文件是否存在但错放章节。
  4. 判断疑似提供但证据不足的情况。
  5. 将第一步处理失败或页数待复核文件纳入不确定性。

判定规则:

条件 状态
必交项有高置信匹配文档 provided
必交项无任何匹配文档 missing
有低置信匹配文档 suspected
文档角色匹配但章节点不匹配 misplaced
文档本身待人工复核 manual_review_required
规则项不适用于当前流程 not_applicable

使用技术:

  1. Python 规则引擎
  2. 风险映射 YAML
  3. dataclass/Pydantic 结果对象

产生方法:

  1. evaluate_requirement_status(requirement, matches, document_uncertainties) -> CompletenessItemResult
  2. detect_missing_items(requirements, matches) -> list[MissingItem]
  3. detect_misplaced_items(requirements, matches) -> list[MisplacedItem]
  4. detect_manual_review_items(requirements, matches, uncertainties) -> list[ManualReviewItem]

对应 Skill

  1. 缺失错放判定Skill

5.6 节点六:完整性风险映射

业务功能:

  1. 根据规则项定义映射风险等级。
  2. 缺失高风险必交项时,本维度判定不通过。
  3. 对待复核项不直接判失败,但标记结果可信度下降。
  4. 生成基础处理建议。

风险等级:

  1. high
  2. medium
  3. low

准入规则:

  1. 任一高风险缺失项:pass_status = failed
  2. 无高风险但存在中风险缺失项:pass_status = review_required
  3. 只有低风险或待复核项:pass_status = conditional_pass
  4. 无缺失、无错放、无待复核:pass_status = passed

使用技术:

  1. 规则包内风险配置
  2. 本地建议模板
  3. Python 枚举

产生方法:

  1. map_completeness_risk(item_result, risk_rules) -> RiskMappingResult
  2. calculate_pass_status(item_results) -> str
  3. build_completeness_suggestion(item_result) -> str

对应 Skill

  1. 缺失错放判定Skill

5.7 节点七:法规证据检索

业务功能:

  1. 针对缺失项、错放项和待复核项检索法规原文。
  2. 返回法规来源文档、章节、片段和匹配查询。
  3. 将证据附加到完整性结果和审计记录。

使用技术:

  1. Chroma 或 fallback 检索
  2. 本地法规原文切片
  3. metadata 过滤
  4. 关键词查询兜底

检索过滤条件:

  1. source_role = regulation
  2. workflow_type = registration
  3. rule_package_id = nmpa_ivd_registration_v1
  4. chapter_coderequirement_id

产生方法:

  1. retrieve_regulation_evidence(requirement_item, query_context) -> list[EvidenceRef]
  2. build_evidence_query(requirement_item) -> str
  3. filter_evidence_by_metadata(results, requirement_item) -> list[EvidenceRef]

对应 Skill

  1. 法规证据检索Skill

5.8 节点八:完整性报告生成

业务功能:

  1. 汇总完整性检查结果。
  2. 生成结构化报告。
  3. 生成页面展示摘要。
  4. 生成飞书摘要所需的短消息结构。
  5. 写入审计记录。

使用技术:

  1. Pydantic 或 dataclass schema
  2. JSONField
  3. Django template 或页面组件消费 JSON
  4. Audit 服务层

产生方法:

  1. build_completeness_report(context, item_results, evidence_refs) -> RegistrationCompletenessReport
  2. build_completeness_summary(item_results) -> CompletenessSummary
  3. build_display_sections(report) -> list[DisplaySection]
  4. record_completeness_audit(report, execution_context) -> AuditLog

对应 Skill

  1. 完整性报告生成Skill

6. Skill 清单

本步骤产生以下 Skill 设计文档:

  1. 法规完整性检查Skill
  2. 法规规则包加载Skill
  3. 法规流程识别Skill
  4. 资料要求匹配Skill
  5. 缺失错放判定Skill
  6. 法规证据检索Skill
  7. 完整性报告生成Skill

7. 规则数据设计

7.1 规则包元数据

字段 说明
rule_package_id 规则包标识
version 规则版本
workflow_type 适用流程
source_documents 法规来源文档
effective_scope 适用范围
chapter_count 章节数量

7.2 要求项字段

字段 说明
requirement_id 要求项编码,如 CH1.4
chapter_code 章编码,如 CH1
requirement_name 要求项名称
required 是否必交
condition 适用条件
expected_document_roles 期望文档角色
keywords 匹配关键词
risk_level_if_missing 缺失风险等级
evidence_query 法规证据检索查询
template_field_refs 后续模板字段映射

7.3 匹配结果字段

字段 说明
requirement_id 要求项编码
status 完整性状态
matched_document_ids 命中文档 ID
match_confidence 匹配置信度
match_evidence 匹配证据
risk_level 风险等级
suggestion 处理建议
evidence_refs 法规证据引用

8. 页面展示

Chat/工作台页面建议展示:

  1. 当前规则包名称和版本。
  2. 当前检查流程类型。
  3. 当前检查章节点范围。
  4. 总体结论。
  5. 缺失项数量。
  6. 错放项数量。
  7. 待人工复核数量。
  8. 高风险缺失项。
  9. 完整性检查明细表。
  10. 法规证据引用。
  11. 审计入口。

明细表字段:

  1. 章节点。
  2. 法规要求项。
  3. 当前状态。
  4. 命中文档。
  5. 风险等级。
  6. 处理建议。
  7. 法规依据。

9. 异常处理

  1. 未找到批次:返回“当前资料包不存在或已删除”。
  2. 目录汇总未完成:提示先完成资料包导入与目录汇总。
  3. 规则包不存在:任务不可执行,记录失败审计。
  4. 规则包版本不支持当前流程:提示流程配置错误。
  5. 文档章节点大量缺失:可执行,但报告标记低可信。
  6. RAG 检索失败:不阻断规则判断,报告中标记证据检索不可用。
  7. 所选文档为空:返回空范围检查结果,并提示用户选择资料范围。
  8. 文档仍待人工复核:完整性报告保留不确定状态。

10. 与后续步骤的接口

后续风险预警读取:

  1. pass_status
  2. highest_risk_level
  3. missing_items
  4. misplaced_items
  5. manual_review_items
  6. suggestions
  7. evidence_refs

后续字段抽取可读取:

  1. 已命中的申请表、产品列表、说明书等文档 ID。
  2. 待人工复核文档清单。
  3. 当前规则包中声明的模板字段映射。

11. 测试设计

11.1 单元测试

  1. 规则包加载成功。
  2. 不支持流程被拦截。
  3. 章节点编码匹配成功。
  4. 文档角色匹配成功。
  5. 必交项缺失被识别。
  6. 错放文件被识别。
  7. 风险等级映射正确。
  8. RAG 失败不影响规则判断。

11.2 服务层测试

  1. 基于第一步目录汇总执行完整性检查。
  2. 缺失 CH1.4 时输出高风险。
  3. CH1.2 目录类文档能作为命中文档进入报告。
  4. 待复核文档会进入 manual_review_items
  5. 规则包缺失时写入失败审计。

11.3 页面测试

  1. 页面展示规则包版本。
  2. 页面展示缺失项和风险等级。
  3. 页面展示法规证据。
  4. 页面展示审计入口。
  5. RAG 不可用时页面仍显示规则判断结果。

12. V1 实现建议

V1 建议先完成以下最小闭环:

  1. 基于本地 YAML 规则包实现 CH1 完整性检查。
  2. 检查 CH1.2CH1.4CH1.5CH1.9CH1.11.1CH1.11.5CH1.11.6
  3. 基于第一步的 chapter_codedocument_role 做规则匹配。
  4. 输出缺失项、疑似项和待复核项。
  5. RAG 证据检索先使用 fallback 检索,后续接 Chroma。
  6. 完整性报告写入审计。

增强阶段再补齐:

  1. 第 2 至第 6 章完整规则。
  2. 资料格式要求层检查。
  3. 安全和性能基本原则清单映射检查。
  4. 后台规则人工校订。
  5. 在线法规更新能力。