凭证检查
会计分录测试
基于自定义规则的会计分录风险排查引擎,支持特征提取和多层规则筛选
JET(Journal Entry Testing)是一款智能化的会计分录审计引擎,基于用户自定义的配置表自动对序时账进行全量风险排查。支持日期跨期分析、大额整数监测、异常时间筛选等高级审计逻辑。
快速开始
- 将序时账文件放入指定文件夹
- 打开
input/JET配置表.xlsx,填写全局设置、特征定义和规则筛选 - 运行程序
- 在
output/JET测试结果/中查看结果,首页为目录页,可点击跳转
配置表结构
配置文件路径:input/JET配置表.xlsx,包含三个 Sheet。
Sheet 1:全局设置
| 参数项 | 说明 | 示例 |
|---|---|---|
| 文件或文件夹路径 | 数据源位置,可以是文件夹或单个文件 | input/data/ |
| 公司列名 | 多公司时指定区分公司的列名,单公司留空 | 公司名称 |
| 未匹配是否输出空表 | 是 则无命中也生成空 Sheet | 是 |
| 多主体时是否分开输出 | 是 则每个公司输出一个 Excel | 否 |
Sheet 2:特征定义
定义从原始数据中提取的信息,提取后的列可在规则中引用。
| 列名 | 说明 |
|---|---|
| 辅助列名称 (ID) | 给提取的特征起名,必须唯一,后续在规则中引用 |
| 计算工具 (算子) | 选择计算逻辑(见算子列表) |
| 来源列名 | 原始数据中的列名,多列用逗号分隔 |
| 参考值/参数 | 某些算子需要的额外参数 |
支持的算子
| 分类 | 算子名称 | 功能 | 参数 |
|---|---|---|---|
| 日期类 | 日期_提取月份 | 从日期列提取月份(1-12) | 无 |
| 日期类 | 日期_提取小时 | 从时间列提取小时(0-23) | 无 |
| 日期类 | 日期_判断周末 | 判断日期是否为周末(是/否) | 无 |
| 日期类 | 日期_计算月差 | 计算两列日期相差月份数 | 无,需填两列来源列 |
| 数值类 | 数值_求余数 | 计算金额除以某数的余数 | 如 10000(判断整万) |
| 文本类 | 文本_提取后几位 | 提取数字最后 N 位 | 如 3(提取后3位) |
| 文本类 | 文本_计算长度 | 计算字符个数 | 无 |
| 逻辑类 | 逻辑_对比两列相同 | 判断两列是否一致(是/否) | 无 |
| 逻辑类 | 逻辑_行内容重复 | 判断整行是否重复(是/否) | 无,无需填写来源列 |
| 统计类 | 统计_组内计数 | 统计某值出现的次数 | 无 |
| 统计类 | 统计_分组求和差额 | 检查借贷平衡 | 无 |
注意: 数值类算子会自动忽略值为 0 的列。多列来源列用逗号分隔。
Sheet 3:规则筛选
定义审计规则,每一行代表一条规则,生成的 Excel Sheet 将以规则名称命名。
| 列名 | 说明 |
|---|---|
| 规则名称 | 规则名(如"大额整万"),将作为输出 Sheet 名 |
| 是否执行 | 填 是 运行,填 否 或留空跳过 |
| 其他列 | 可以是原始列名或特征名,填写筛选条件 |
逻辑: 同一行不同列的条件是**"且"(AND)关系,同一列内多个值是"或"(OR)**关系(正向筛选时)。
筛选语法
数值比较
适用于数字类型的列(金额、月份、小时等)。
| 符号 | 含义 | 示例 | 解释 |
|---|---|---|---|
> | 大于 | >10000 | 大于 10,000 |
>= | 大于等于 | >=5 | 大于等于 5 |
< | 小于 | <0 | 小于 0 |
<= | 小于等于 | <=10 | 小于等于 10 |
= | 等于 | =0 | 等于 0 |
| 纯数字 | 隐式等于 | 100 | 等于 100 |
!= | 不等于 | !=0 | 不等于 0 |
, | 复合(或) | >22,<7 | 大于 22 或小于 7 |
文本匹配
适用于摘要、科目名称、制单人等文本列。
| 符号 | 含义 | 示例 | 解释 |
|---|---|---|---|
| (无) | 包含 | 餐饮 | 包含"餐饮" |
^ | 开头是 | ^6601 | 以"6601"开头 |
# | 精确等于 | #张三 | 完全等于"张三" |
! | 不包含 | !系统自动 | 不包含"系统自动" |
!^ | 开头不是 | !^1 | 不以"1"开头 |
, | 列表(或) | 张三,李四 | 包含"张三"或"李四" |
特殊值
| 写法 | 含义 |
|---|---|
是 | 列值等于"是" |
否 | 列值等于"否" |
[空] | 列值为空或空字符串 |
![空] | 列值不为空 |
高级组合
| 组合方式 | 示例 | 逻辑 |
|---|---|---|
| 正向列表 | 6601,6602 | 是 6601 或 6602 |
| 反向列表 | !^1,!^2 | 不以 1 开头且不以 2 开头 |
| 混合 | 6xxx,!6001 | 包含"6xxx"但不包含"6001" |
关键提示: 如果想筛选文本特征(如"尾数后3位")为 999 或 950,请在输入时前面加单引号
'999,950强制为文本格式,否则 Excel 会将其转为数字导致匹配失败。
输出文件
输出路径:output/JET测试结果/
| Sheet | 内容 |
|---|---|
| 目录 | 汇总页,含跳转链接,显示每条规则的疑点行数 |
| 汇总 | 所有规则的命中数据合并展示 |
| 规则1/规则2/... | 每条规则命中的具体数据,含 公司名称 和 涉及规则 列 |
运行前校验
程序在运行前会自动执行严格校验:
- 检查特征定义中的来源列名是否存在于数据中
- 检查规则中引用的列(含特征列)是否有效
- 如果校验失败,程序会立即终止并输出详细错误信息
常见问题
Q:报错"校验失败,引用列无效"
- 检查规则中使用的列名是否已在特征定义中定义,或来源列名是否与数据表头一致
Q:文本特征匹配失败
- 确保 Excel 中该单元格格式为文本(加单引号前缀
')
Q:未生成空表
- 在全局设置中将"未匹配是否输出空表"设为
是