用途:把只有 description_raw(原始描述字符串)与带符号 amount_cents(金额,分)的交易,整理成干净的商户名、分类与子分类、is_recurring 布尔候选值以及置信度。
主要能力:先按规则做确定性的廉价匹配,只对剩余未匹配交易回退到大模型推断;对大模型高置信结果提出可学习的新规则,供规则表使用;检测经常性交易候选;输出置信度与审计字段。
工作流程:1) 归一化描述,仅用于匹配,生成 description_normalized(转大写、剥离 SQ /TST/PAYPAL * 等前缀、剥离尾部地理位置与电话、合并空格、去掉描述内日期数字),绝不覆盖 description_raw。2) 按优先级遍历规则,匹配子串为不区分大小写的子串包含;多个命中时取最具体(最长匹配)者,来源记为 rule,置信度 1.0。3) 未匹配交易交由大模型分类,类别必须限定在传入的 taxonomy 内,不得臆造,输出 category.subcategory 与干净商户名,来源记 llm,置信度 0.6–0.9。4) 检测经常性候选(同一账户近 90 天内出现 ≥3 次、金额 ±10% 内、有规律周期;或规则显式设置)。5) 评分置信度:规则匹配子串长度 ≥8 为 1.00,长度 4–7 为 0.92,大模型强信号 0.85,弱信号 0.65,无法归类高于 uncategorized 为 0.30;低于 0.5 标记 uncategorized.unknown 并待复核。6) 对置信度 ≥0.85 且同一归一化子串覆盖 ≥3 笔交易的结果,生成建议规则放入 rules_proposed。
输入:transactions 数组(含 id、description_raw、amount_cents、account_id、date、account_type)、taxonomy、rules,以及可选的 account_type_hints。默认分类法覆盖 housing、food、transportation、health、personal、kids、entertainment、travel、financial、income、savings_investment、uncategorized 等分支。规则格式含 match、merchant、category、subcategory、is_recurring、priority、added_on、source;人工规则默认优先级 200,学习规则默认 100,较高优先级胜出。
输出:categorized、rules_proposed、warnings、summary(总量、规则命中、大模型分类、未分类数量与比例)。
限制:必须逐字节保留 description_raw;不得发明分类;需账户类型感知;内部转账应在账户间净额为零,单边分类需标记;批次新交易未分类比例超过 5% 视为质量信号;建议规则不得包含个人身份信息,如含姓名的描述应脱敏或跳过。经常性交易的正式提升由 recurring-charge-detector 技能负责。具体安装与运行命令未提供。