Files
ledgerly-docs/dev/rule-engine.md
T
rosercode 923d6db5c0 docs: 同步汇账最新功能,新增智能查数、账单关系等文档
对照 ledgerly 自文档上次更新以来的全部改动,补充新功能文档、修正品牌与版本残留,并新增下载与安装页;配图已重新截取并上传 OSS,本地截图目录不纳入版本管理。

变更内容:
- 新增「智能查数」「账单关系」两个使用文档页,并登记侧边栏与总览
- 设置页扩充为八个面板(账号安全、数据库实时进度、外观、导航等)并改为即时保存
- 收支记录补充关系列、批量操作、AI 搜索浮窗、可配置分页与「账单详情」弹窗
- 统计面板补充饼图/渠道图下钻与筛选双向联动;规则管理补充批量删除
- AI 能力补充智能查数与关系命名;新增下载与安装页
- 开发文档同步:AI 13 类调用、数据模型 24 张表、API、前端偏好、构建部署
- 统一「汇账 Ledgerly」品牌与「设置/日志」菜单文案,版本号对齐 0.1
- 截图脚本新增账单详情等场景并更新登记

说明:
- download.md 的 OSS 下载链接保持待发布产物回填,暂不调整
- 已通过 npm run docs:build 与 npm run typecheck:scripts
2026-09-26 21:57:38 +08:00

2.7 KiB
Raw Blame History

规则引擎

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

数据模型

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

匹配逻辑

RuleServiceImpl.matchBatch 的核心流程:

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

应用位置

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

列表查询与分页

  • GET /api/rule/list:返回当前用户全部规则(按优先级排序),供内部复用。
  • GET /api/rule/page:分页查询,支持 keyword(匹配规则名称或关键词)、enabled、type 筛选,返回 PageResult<RuleVO>。
  • DELETE /api/rule/batch:批量删除(body { ids });先按 userId 过滤归属,清理规则-标签关联后删除,返回实际删除数。

AI 生成规则

AiRuleServiceImpl 依据用户勾选的已打标签记录生成规则建议:

  • 输入字段为记录的类型、备注、交易渠道、已有分类与标签(不含金额与原始账单数据)。
  • 输出规则经 RuleService.create 落库,必要时新建分类/标签,规则默认启用。
  • 去重:以「类型 + 归一化关键词 + 分类 + 排序标签集合」为签名;与已有规则或同批已创建规则重复时跳过(apply 返回实际创建数),建议阶段则标记 duplicate 供前端禁止勾选。

校验

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

相关文档