mcpField
S
statement-reconciler

statement-reconciler

github.com/lyndonkl数据与数据库18747 次安装9 周前更新
代码仓库

关于 statement-reconciler

面向簿记人员和财务数据流程的对账技能,检查期初余额加上带符号交易是否等于期末余额。金额不符时,它会诊断可能的提取错误或期间错误。

主要功能

  1. 01核对期初余额与交易合计是否等于期末余额
  2. 02应用账户类型对应的正负号规则
  3. 03支持配置以美分计的容差
  4. 04诊断符号错误、遗漏、重复和舍入问题
  5. 05返回结构化对账报告

适用场景

  1. 01核验解析后的支票或储蓄账户账单
  2. 02在簿记提交前查找交易提取错误
  3. 03调查信用卡账单余额差异
  4. 04标记未对平的数据以便审核

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/lyndonkl/claude --skill statement-reconciler

安装后在 Claude Code 中输入/statement-reconciler确认已加载。

详细介绍

对账单核对器

目录

概述

无法对平的对账单,说明解析有误。此技能会强制执行一项检查,一次性捕捉解析器的所有故障模式:期初余额 + Σ(交易)= 期末余额。若检查失败,它会诊断原因——缺少交易、符号翻转、重复计入某一行、外币换算产生的舍入误差——以便记账人员在提交脏数据前修复问题或升级处理。

输入约定

调用方提供解析器的输出:

  • account_id、period_start、period_end。
  • opening_balance_cents、closing_balance_cents。
  • transactions — {id, date, amount_cents, description_raw} 数组。
  • tolerance_cents(默认值为 100 = $1.00)。
  • account_type — 会影响符号约定(见下文)。

对账恒等式

对于现金账户和信用账户:

closing_balance_cents = opening_balance_cents + Σ transactions.amount_cents

符号约定:

账户类型流出(例如,购买、付款、取款)流入(例如,存款、收到的付款)
checking / savings负数正数
credit_card(家庭账本视图)购买为负数信用卡付款为正数
credit_card(发卡机构余额视图)正数(余额增加)负数(余额减少)

此技能对现金和信用卡使用家庭账本视图:流出为负数,流入为正数。如果解析器对信用卡使用了发卡机构视图,请先翻转符号再进行对账。

此技能不适用于经纪账户 / 401k / HSA 持仓对账单(这些反映的是某一时点,而非资金流)。请跳过。

工作流

Reconciliation Progress:
- [ ] Step 1: Confirm account_type is in {checking, savings, credit_card, mortgage}
- [ ] Step 2: Sum signed amount_cents
- [ ] Step 3: Compute computed_closing = opening + sum
- [ ] Step 4: Compute diff = closing − computed_closing
- [ ] Step 5: If |diff| <= tolerance, return ok: true
- [ ] Step 6: Else, run diagnostics
- [ ] Step 7: Emit reconciliation report
步骤 1–5

非常简单。大多数对账单在步骤 5 就能通过。

步骤 6 — 诊断

按顺序执行以下检查;第一个能解释差额的诊断优先。

诊断 A — 疑似符号翻转。 如果 |diff| / 2 与任一单笔交易的绝对值相差不超过 $0.50,则该笔交易在提取过程中很可能被翻转了符号。报告:sign_flip_suspect: tx_id_X。

诊断 B — 疑似缺少交易。 如果 |diff| 与对账单上的某条 “Fees” 或 “Interest” 汇总行金额相符,但未提取到对应的单笔交易,则解析器遗漏了该行。报告:missing_transaction_suspect: <amount> <description>。

诊断 C — 重复计入交易。 如果输入中同一组 (date, amount, description) 三元组出现两次,且 |diff| 与该金额相符,则删除其中一笔并重新核对。报告:double_counted: tx_id_X。

诊断 D — 遗漏费用/扣款。 如果 diff 较小(≤ $50)且与常见费用相符,请查找可能遗漏的 “Service Charge” / “Monthly Fee” / “Foreign Transaction Fee” 行。

诊断 E — 舍入误差累积。 如果 |diff| ≤ tolerance × N/100,其中 N 为交易笔数,则可能累积了逐行舍入误差。整数分值通常不会出现这种情况,但外币交易行可能会。报告:rounding_drift_suspect。

诊断 F — 期间不匹配。 如果 period_end 与对账单上打印的期末日期不符,则期初余额或期末余额可能配错了。报告:period_mismatch_suspect。

如果没有任何诊断符合条件,则返回 ok: false 和 diagnostic: "unknown",以便记账人员升级处理。

步骤 7 — 容差策略

默认容差:$1.00(100 分)。

对于发卡机构精确到分进行对账的信用卡对账单,将容差收紧至 0。仅在用户明确要求时才放宽至 $5,并显示精确差额,以便用户了解。

输出约定

{
  "account_id": "acc_chk_001",
  "period_start": "2025-12-15",
  "period_end": "2026-01-14",
  "opening_balance_cents": 1124300,
  "closing_balance_cents": 1247500,
  "transactions_sum_cents": 123200,
  "computed_closing_cents": 1247500,
  "diff_cents": 0,
  "tolerance_cents": 100,
  "ok": true,
  "diagnostic": null,
  "suggestions": []
}

失败示例:

{
  "account_id": "acc_cc_001",
  "period_start": "2025-12-15",
  "period_end": "2026-01-14",
  "opening_balance_cents": 0,
  "closing_balance_cents": -284300,
  "transactions_sum_cents": -283100,
  "computed_closing_cents": -283100,
  "diff_cents": -1200,
  "tolerance_cents": 100,
  "ok": false,
  "diagnostic": "missing_transaction_suspect",
  "suggestions": [
    {
      "type": "missing_transaction",
      "expected_amount_cents": -1200,
      "hint": "statement summary lists 'Foreign Transaction Fee $12.00' but no transaction extracted with that amount",
      "action": "re-parse PDF page 3, look for fee line"
    }
  ]
}

守护规则

  • 绝不擅自放宽容差。 如果差异超过容差,核对器必须检查失败——由记账 Agent 决定是否升级处理或重新解析。
  • 绝不提交无法核对的对账单。 记账 Agent 必须暂存数据,直到核对成功。核对失败时会在 reports/alerts/ 中创建一条记录,绝不会静默丢弃。
  • 经纪账户 / 401k / HSA / 税务表格不在范围内。 持仓对账单和税务表格没有单一的期末余额恒等关系;它们有其他由各自 Agent 负责的一致性检查。
  • 幂等性。 使用相同输入调用核对器两次会产生相同输出。
  • 差异符号的含义。 负的 diff_cents 表示计算出的期末余额高于报告余额(也就是说,我们有交易记录表明现金比对账单所示的更多)——通常是缺少流入,或流出方向符号错误。

评论

支持 Markdown