下载地址
https://www.zhengdianxue.com/wp-content/uploads/skills/kins--rule-file-parser.zip将提示词发送给你的 AI 安装该 skills
请根据 https://skillhub.cn/install/skillhub.md,安装 @kins/rule-file-parser。- 支持多种规则的格式文件,进行JSON+Word 双输出初版 类型:规则树引擎包(10 个 XML),classification = rule 规则集:测试异步接口规则(GT2072208116240396289 / v1.00) 规则:1 条 —— testaa(已启用) 条件:年龄 大于 "
- 18"
- 动作:赋值 是否成年 ← "
- 已成年"
- 输入字段:年龄(aaaysrc.age / Long) 输出字段:是否成年(Borrower.name / String)+ 原因代码(reasonList / String)
阅读全文 (展开查看完整说明)
概述
规则文件解析与转换(rule-file-parser)
Overview
本技能负责把用户上传的「规则 / 决策文件」变成可阅读、可复用的结构化中文成果。它解决五件事:
- 多格式解析 — 不限格式(zip/html/java/中文文本/公式函数/判断语句/衍生变量导出函数等),
解析各种规则引擎脚本、业务规则描述与可视化平台导出的衍生变量;解析不出来时,反馈具体原因。
- 类型识别 — 判断内容是「规则语句」「决策语句」「衍生变量」(或混合/无法识别)。
- 格式转换 — 按用户提供的模版转换;用户未指定格式时,默认输出中文 Word 文档。
- 错误处理 — 上传失败、识别错误、文件损坏、网络中断等,给出针对性解决方案。
- 模型拒识 — 上传的是模型文件(.pkl/.h5/.onnx/.pt/.pb/.pmml 等)直接反馈「无法识别
模型文件」,本技能仅针对规则语言。
触发词(Trigger Words)
满足以下任一情形即触发本技能:
- 显式:解析 / 识别 / 提取 / 转换「规则文件」「决策语句」「衍生变量」「规则引擎脚本」
- 关键词:Drools、DMN、决策表、判定表、评分卡、规则语言、业务规则、风控规则、
if-else 规则、中文规则描述、衍生变量、func_xxx、setValue、变量赋值、计算字段、规则树、tansun、policyrulegroup、RULE_GROUP、规则集导出包、决策规则组
- 动作:把规则转成 Word / 导出决策表 / 规则文件转 Excel / 规则转 Drools / 提取衍生变量
- 文件:用户上传
.zip.html.java.drl.groovy.js.py.txt.md
.xml .json .csv .xlsx 等并说明其为规则/决策/衍生变量内容
- 排障:上传规则失败、规则文件损坏、无法识别规则、无法识别衍生变量
执行逻辑(Execution Flow)
严格按以下五步顺序执行;任意一步发现异常,跳转至「第六步 错误处理」。
第一步 · 接收与预处理
- 确认用户已上传文件,记录文件名、扩展名、大小。
- 若用户同时提供了输出模版,记录下来,第四步按其字段映射;否则走默认模版。
- 若用户未上传文件却描述规则,可直接让其粘贴文本或上传,再继续。
第二步 · 调用解析引擎
- 运行
scripts/parse_rule_file.py <文件路径>(纯标准库,零依赖)。 - 脚本产出结构化 JSON,关键字段:
status/is_model/classification
(rule|decision|mixed|derived_variable|decision_tree|unknown)/ reasons / blocks /error / solution。
- 引擎已覆盖的格式与能力:
- 文本类:java / drl / groovy / js / py / txt / md / xml / json / csv / html,
以及中文业务规则描述、=IF() 等公式函数、function 声明。
- 衍生变量:识别可视化规则平台导出的 `function void func_xxx(Map dataMap,
Map metaMap, RuleHelper ruleHelper, DroolsRuleLog droolsRuleLog) 形态,提取变量名、返回类型、判断条件、ruleHelper.setValue` 赋值(目标字段 / 计算表达式 /输入字段引用)。
- 规则树 XML 引擎包(tansun policyrulegroup 等):识别
RULE_GROUP.xml
(每条规则含 EVALS/ACTIONS 序列化的 JSON 条件树与动作)、RULE_MANAGE.xml(规则集元数据:名称/编码/版本)、RULE_DATAPARAMS.xml(变量定义)、RULE_REFERENCE_DATA.xml(输入/输出字段语义)、RULE_VERSIONINFO.xml(内含 Drools 编译产物 RULE_CONTENT)。自动把条件树渲染为中文(变量 + 运算符 + 值)、把 variableAssign 动作渲染为「赋值 目标 ← 值」,并提取规则集概览(名称/编码/版本、输入字段、输出字段)。zip 包整体按一个规则集解析,避免逐文件合并导致元数据/字段语义丢失。
- 决策树 XML 引擎包(tansun 等同源引擎):识别
RULE_TREE_NODE.xml(RULE_TREE_NODE
节点通过 PID 建立父子树,中间节点 IS_LEAF=false 的分支条件藏在 NODE_HTML,叶子节点 IS_LEAF=true 的结论藏在 RESULT_JSON——两者均为 HTML 实体转义的JSON 条件树 / variableAssign 动作,与规则树共用一套格式)。引擎自动按 PID 重建分支分层、把条件树渲染为中文、把 variableAssign 与 method(如「多取小」函数调用)渲染为结论赋值,分类为 decision_tree。RULE_TREE_PARAM.xml 给出决策树最终输出参数、RULE_REFERENCE_DATA.xml 给出输入/输出字段语义。
- Excel 决策表:
.xlsx/.xlsm用纯标准库解析单元格(无需 openpyxl),
自动识别含「条件/动作/等级」表头的决策表并逐行提取。
- HTML 决策表:抽取
<table>并结构化,表头含决策表特征时识别为决策。 - 压缩包:zip 自动解包,逐个解析包内所有规则文本/表格文件并合并结果
(结果在 inner_parses 列表)。
- 模型文件拒识:明确模型扩展名直接拒;
.bin/.model等模糊扩展名需魔数
二次确认,降低误拒合法二进制。
- 解析脚本只做「确定性尽力而为」的提取;语义理解由本步骤后的 LLM 完成。
第三步 · 识别判定
- 依据脚本的
classification与reasons,结合references/rule_patterns.md
判定内容为「规则 / 决策 / 衍生变量 / 决策树 / 混合 / 无法识别」。
- 决策树优先定性(强制):一旦识别为
decision_tree,转换输出开头必须先说明
「这是决策树(Decision Tree),按若干维度逐层分流、最终落到叶子授信/决策方案」,并点明其分支维度(取自 rule_set_meta.dt_branch_fields)与叶子方案数。这与「规则树 /普通规则」的关键区分在于强调路径分流。convert_to_report.py 已自动在「决策树结构」章节插入该定性说明(JSON 主交付中则体现于 classification=decision_tree与 decision_tree 字段归类)。
- 对
blocks中每条候选做语义归并:- 规则/决策:明确「触发条件」与「执行动作」,用中文自然语言表述,保留关键原文片段。
- 衍生变量:明确「变量名 / 返回类型 / 判断条件 / 目标字段 / 计算表达式 / 引用的输入字段」,
用中文自然语言表述。
- 衍生变量优先定性(强制):一旦识别为衍生变量,转换输出的开头必须先说明
「这是衍生变量(计算字段)加工,而非普通业务规则 / 决策」,并点明其核心目的(如本次 age 变量即「输入只有身份证,输出自动得到年龄」)。这是与规则 / 决策类输出的关键区分,务必先定性再展开明细。convert_to_report.py 已自动在明细前插入该说明。
- 若
classification == unknown:告知用户未识别到规则/衍生变量特征,引用
references/error_solutions.md 第三条,引导补充信息。
第四步 · 转换输出(JSON 为主,Word 为辅)
本技能默认同时产出两份交付物:结构化 JSON 报告(主)+ 可选 中文 Word(辅)。
- 主交付 · 规则 JSON(始终产出):运行
scripts/convert_to_json.py <解析JSON>把结果
整理为纯规则 JSON,顶层字段:source_file / classification(类型字符串)/status / rule_set / rules / derived_variables / decision_tree。
- 只保留规则本身的结构化数据,剔除所有描述/解释类内容(命中特征 reasons、中文标签、
量化指标块 indicators、异常说明 message/solution、文件元信息 meta 等均不输出)。
- 用户明确要求其他格式(Markdown / Excel 决策表 / 具体引擎 DSL 如 Drools、DMN)时,
以该 JSON 为数据源做字段映射即可,无需重新解析。
- 辅交付 · 中文 Word(用户要求或默认一并给出):沿用
scripts/convert_to_report.py <解析JSON>
渲染中文 HTML 报告草稿,再经 tencent-docx / html-to-docx 技能转 .docx(文件概览 / 识别说明 / 规则明细 / 衍生变量明细 / 决策树结构 / 转换结果 / 异常处理)。
- 用户提供了模版 → 严格按用户模版的字段结构映射每条规则/决策后输出;优先映射到 JSON
字段,需要 Word 时再基于 JSON 生成。
- 衍生变量 / 决策树场景:若
classification为derived_variable或decision_tree,
JSON 报告的 derived_variables / decision_tree 已自动归类;转换/引用时务必先给出对应定性说明(详见第三步与 references/report_template.md)。
第五步 · 模型文件拒识
- 若脚本
is_model == true(status=rejected),直接反馈无法识别模型文件,
说明本技能仅支持规则语言,并建议改用专门模型分析工具。不要尝试解析模型内容。
第六步 · 错误处理(贯穿全流程)
- 当
status为error/rejected/ok_unrecognized时,向用户反馈:
先说具体原因,再给可操作解决方案。
- 优先采用脚本
solution字段;更完整的分类参见references/error_solutions.md。 - 常见场景:文件不存在/0字节(上传中断)、ZIP 损坏(BadZipFile)、编码异常
(非 UTF-8/GBK)、压缩包内无可识别文本、网络中断、解析未预期异常。
- 无法判断根因时,主动请用户补充:文件来源、所用规则引擎、期望输出格式。
资源说明
scripts/
parse_rule_file.py— 解析引擎。处理格式识别、zip 多文件解包合并、xlsx/HTML
决策表结构化、公式函数识别、衍生变量识别、文本解码、规则/决策检测与候选块提取、模型文件拒识(模糊扩展名需魔数确认);异常统一收敛为带 solution 的 JSON 报告。用法:python3 scripts/parse_rule_file.py <file> [--extract-dir <dir>]。
convert_to_report.py— 中文 Word 报告生成器(辅交付)。把解析 JSON 渲染为中文结构化
HTML 报告草稿(含文件概览/识别说明/规则明细/转换结果/异常处理),供 html-to-docx 转 Word。用法:python3 scripts/convert_to_report.py <parse.json> [--out report.html] [--title 标题](也可从 stdin 读 JSON)。
convert_to_json.py— 规则 JSON 生成器(主交付,精简纯规则版)。把解析 JSON 整理为
纯规则 JSON(顶层:source_file / classification / status / rule_set / rules /derived_variables / decision_tree),只保留规则结构化数据,剔除描述/解释类内容与indicators 指标块。用法:python3 scripts/convert_to_json.py <parse.json> [--out report.json](也可从 stdin 读 JSON)。
references/
rule_patterns.md— 支持的规则/决策语法模式清单(Drools、if-else、中文规则、
公式函数、Excel/HTML 决策表、DMN、评分卡等),用于语义判定对照。
error_solutions.md— 错误信息与解决方案手册(上传/损坏/识别/解析四类异常)。report_template.md— 默认中文 Word 输出模版结构(用户未指定格式时使用)。
注意事项
- 本技能不内置 OCR;图片扫描件形式的规则需先 OCR 再上传。
- 解析脚本为启发式,复杂嵌套逻辑可能提取不完整 —— 此时由 LLM 基于
raw片段
做语义补全,并在报告中注明。
- 输出一律保持「条件与动作分离」的中文清晰表述,避免直接堆砌源码。