
AI 写的支出整理代码,能正确处理重复记录和退款吗?
“帮我算一下花了多少钱”并没有说明哪些交易应该计入支出。两笔金额相同的咖啡可能都是实际购买,转账也可能只是把钱转到自己的另一个账户。我们先明确这些区别,再运行代码核对。
排除1行重复记录和1行已确认的本人账户间转账,另有4行暂缓处理。因此,51人民币元不是全部支出的最终确认金额。
先明确问题,再计算总额
账户转出的钱不一定都是消费。把钱转入储蓄账户会改变余额,却不能说明买食品或日用品花了多少。退款也需要明确对应哪一笔购买。
本例的问题是:在这份资料中,把已确认的购买和手续费相加,再减去可关联到原购买的退款,结果是多少?因此排除本人账户间转账,并单独保留待核实记录。如果改问“本月现金流”,就需要重新定义规则。
AI 实际做了什么
AI 编程助手编写了分类规则和 JavaScript。我们实际运行程序,并与单独计算的核对值进行比较。下面的工具在浏览器中执行相同规则,访问页面时不会调用 AI 模型。
资料是模拟交易,不是真实银行流水。本例没有验证银行连接、收据识别或根据描述自动理解交易的能力。交易类型及转账账户归属被视为输入中已确认的信息。这也不是 ChatGPT、Gemini 与 Claude 的实测对比。
影响结果的四个判断
两笔咖啡都保留。P2与P3均为5人民币元,但交易ID不同,所以共计10人民币元。P4的两行ID、类型、金额和描述完全相同,按本例规则只计一次。前提是ID在同一账本中唯一;混合不同银行的数据可能破坏这个前提。
转账排除,手续费计入。T1已明确标记为本人账户间转账,金额100人民币元。F1的1人民币元手续费则属于支出。代码并没有根据收款人姓名识别账户归属。未分类的转账可能是货款,需要另行确认。
有依据的退款才扣减。R1的20人民币元关联到P4的50人民币元购买,可以计入部分退款。R2的3人民币元找不到原购买,因此待核实。它可能是上月购买的退款;找不到关联不代表退款是假的。
不在冲突金额中随意选一个。两行P5使用相同ID,金额却分别为8和9人民币元。选择先出现的或更小的金额都缺乏依据,所以两行都暂缓计入。4行待核实不等于现实中有4笔独立交易。
同时核对金额和行数
购买:10 + 5 + 5 + 50 = 70人民币元。
手续费:+1。已关联退款:−20。
已确认净支出:51人民币元。
原始12行全部有去向:计入6行(其中包含1行退款)、重复排除1行、转账排除1行、待核实4行。待核实部分包括类型未知1行、无法关联的退款1行和P5冲突2行。金额碰巧正确,并不能证明处理时没有遗漏记录。
忽略类型,把所有正数金额直接相加会得到270人民币元。这是单独计算的简单求和对照值,不是AI实际答错的记录。它把退款、转账、重复和未确认记录全部加在一起,并不回答本例的净支出问题。
执行检查包括:倒置输入顺序后仍为51人民币元;金额相同但ID不同的购买都保留;同ID冲突的记录都待核实;累计退款超过原购买金额时暂缓扣减;负数和小数金额被拒绝。这些检查不代表已经验证所有银行、币种、分期付款或结算时点。
如何应用到自己的资料
1. 明确需要的是转出总额、现金流还是净购买支出。
2. 保留原始文件,在副本上操作。删除分析不需要的姓名、账号,同时保留行标识。
3. 确认各列含义、金额正负号、币种和期间。
4. 接受合计前,先检查处理规则与待核实记录。
5. 运行代码,同时核对金额与行数。
6. 下个月复用前,检查文件格式和ID含义是否变化。
本页要求准备好的JSON文件,不直接读取银行CSV或Excel,也不会自动转换任意流水。如果用AI转换格式,转换结果本身也必须与原始资料核对。
适用范围与限制
如果每次资料格式相同、交易类型定义清楚,可复用的代码可能有帮助。规则验证后,可以重复执行,而不必每次把所有行发送给语言模型。本例没有测量实际节省的时间或成本。
描述不清的支出、混合账户与币种、跨期退款,都需要更多依据和规则。有时准确的待核实清单比看似明确的总数更有用。由于未确认项可能包含退款,已确认小计也不一定是最终支出的下限。
亲自运行并查看每一行的判断
| 行 | ID | 原金额 | 计入金额 | 判断依据 |
|---|
可修改使用的提示词
请把这些记录作为单一账户的人民币元交易账本处理。保留原始行和ID,不要猜测未知交易类型。只有ID和主要字段完全相同的重复记录才可排除。同一ID的值存在冲突时,该ID的全部行都待核实。排除已确认的本人账户间转账,计入手续费。退款需核对原购买和累计退款金额后才能扣减。逐行说明计入、排除或待核实的理由,把已确认支出与未确认记录分开。提供可执行代码,并独立核对总额和行数。如果列含义或金额正负号不清楚,先说明缺少哪些依据。
输入格式
amount必须是非负人民币元整数。这是独立设置的人民币模拟示例,不是韩元示例的汇率换算。为便于展示规则,金额使用整元,本工具暂不支持角、分等小数金额。退款的related字段指向购买的id。支持的type:purchase(购买)、fee(手续费)、refund(退款)、transfer(已确认的本人账户间转账)、unknown(类型未知)。同一账本中的ID必须保持一致。
[{"id":"P1","type":"purchase","amount":10},
{"id":"R1","type":"refund","amount":2,"related":"P1"}]