Skip to content

规则引擎

规则引擎用于在账单导入与新建记录时,按条件自动应用分类与标签。

数据模型

  • t_rulenameenabledsort_order(优先级,越小越优先)、type(限定收支类型,可空)、keyword(关键词)、min_amount / max_amount(金额区间)、category_id(目标分类)。
  • t_rule_tag:规则与标签的多对多关联。

匹配逻辑

RuleServiceImpl.matchBatch 的核心流程:

  1. 一次性加载当前用户已启用的规则,按 sort_orderid 升序排序;预加载规则标签与引用分类。
  2. 拼接匹配文本 = 交易对方 + 商品名称 + 备注,统一转小写。
  3. 逐条判断是否命中:
    • 类型:规则指定了 type 且与记录类型不一致则跳过。
    • 关键词:包含匹配(忽略大小写)。
    • 金额区间min_amount ≤ amount ≤ max_amount(含边界,任一为空表示不限制)。
  4. 命中后:
    • 分类:取首个命中且与记录类型一致的规则分类。
    • 标签:取所有命中规则标签的并集(去重)。
  5. 返回结果与入参一一对应。

应用位置

场景行为
账单解析预览展示命中的规则名与建议分类/标签
账单确认导入规则建议分类优先于面板默认分类;标签与默认标签合并去重
新建/编辑记录不自动应用,但可借助 AI 推荐

校验

RuleServiceImpl.validate 会校验:type 白名单、金额下限不大于上限、目标分类归属当前用户且类型一致。保存规则标签时采用全量替换。

相关文档

基于 Spring Boot 3 + Vue 3 的个人收支管理系统