Files
DEMO-AGENT/docs/详细设计/skill/法规规则包加载Skill.md

2.6 KiB

法规规则包加载Skill 设计

1. Skill 定位

法规规则包加载Skill 负责加载、校验和展开本地结构化法规规则包,是完整性检查的规则来源入口。

英文实现标识建议使用 RegulationRulePackageLoadSkill

本 Skill 不读取用户资料,不做匹配判断,只处理法规规则本身。

2. 输入

@dataclass
class RegulationRulePackageLoadInput:
    rule_package_id: str
    workflow_type: str
    chapter_scope: list[str] = field(default_factory=list)

3. 输出

@dataclass
class RegulationRulePackageLoadOutput:
    rule_package_id: str
    version: str
    workflow_type: str
    source_documents: list[dict]
    requirements: list[dict]
    risk_rules: dict
    validation_warnings: list[dict]

4. 规则包来源

V1 默认来源:

docs/原始材料/关于公布体外诊断试剂注册申报资料要求和批准证明文件格式的公告/

结构化规则建议维护在:

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

5. 核心方法

5.1 run(input) -> RegulationRulePackageLoadOutput

主入口方法。

执行顺序:

  1. 根据 rule_package_id 定位规则文件。
  2. 读取 YAML。
  3. 校验规则包元数据。
  4. 校验规则包是否支持当前 workflow_type
  5. 展开章节范围。
  6. 返回要求项和风险规则。

5.2 load_yaml_rule_file(path) -> dict

读取 YAML 文件。

5.3 validate_rule_package(raw_rules) -> RulePackageValidationResult

校验:

  1. 是否有规则包 ID。
  2. 是否有版本。
  3. 是否有适用流程。
  4. 是否有章节。
  5. 每个必交项是否有风险等级。
  6. 每个要求项是否有稳定 requirement_id

5.4 expand_requirements(rule_package, chapter_scope) -> list[RequirementItem]

展开要求项。

如果 chapter_scope = ["CH1"],只返回第 1 章要求项。

5.5 load_risk_rules(rule_package) -> dict

读取缺失、错放、待复核对应的风险映射规则。

6. 技术实现

使用技术:

  1. PyYAML
  2. Pydantic schema
  3. Django cache
  4. 文件修改时间检测

7. 异常处理

异常 处理
规则文件不存在 返回 rule_package_not_found
YAML 格式错误 返回 rule_package_invalid
流程不匹配 返回 workflow_not_supported
缺少风险配置 规则包校验失败
章节范围为空 使用默认范围

8. 测试要点

  1. 成功加载规则包。
  2. 规则包版本正确。
  3. CH1 范围展开正确。
  4. 不支持流程被拒绝。
  5. 缺少必填字段时报校验错误。