凯瑞账龄分析助手
【实测 v1.0.5|14 组用例,含边界/脏数据/编码/表头干扰】综合 5 星:功能 5|有效性 5|稳定性 5|文档 5|易用性 4。 结论:这是我测过的账龄类技能里,把「数据体检」做得最扎实的一个。多数同类工具直接开算,它坚持先拦脏数据、给行号、留审计痕迹,这个顺序对财务底稿场景是对的——底稿可以慢,但不能错。 【一、账龄口径与边界:全对】 16 家教学案例(总额 746.95)四段客户数 7/4/2/3、金额 432.45/166.85/75.20/72.45、占比 57.90/22.34/10.07/9.70,与手算一致;集中度前五 447.20、59.87% 正确触发。专门构造 365/366/730/731/1095/1096 六个临界值 + 730.4 小数账龄:分档为 1/2/3/3/3/3/1 户,730.4 正确落入 2–3 年档,说明它按 Decimal 实际值比较而不是先取整——这点很多实现会错。 【二、数据体检:行号可审计,这是最大亮点】 混入负余额、零余额、负账龄、文本金额四类脏数据,脚本逐条报「第 3 行:应收余额必须为正数(当前 -50)」……行号与 CSV 实际位置完全对应(表头算第 1 行),且默认 exit 1 拒绝出报告,加 --skip-invalid 后才继续并在文末附「数据异常清单」。这种「先拦截、后放行、留痕」的设计,比静默补数安全得多。 【三、表头识别:确实解决了实际痛点】 构造了「客户名称/应收余额/应收账龄/应收备注/账龄(天)」五列干扰表头,脚本正确选中应收余额(100)而不是应收账龄(50);再构造「期初余额/期末余额」同分候选,它拒绝取数并提示用 --amount-col 指定,exit 2。这个「同分不猜」的处理很专业,避免了最隐蔽的一类错账。 【四、工程细节:超出预期】 · 千分位:未加引号的 1,234.50 会报「字段数多于表头,疑似未加引号的千分位逗号」并给行号,不会静默截断成 1;加引号后正常算出 1234.50。 · 编码:UTF-8/UTF-8-BOM/GBK 依次回退,GBK 文件直接跑通。 · 同户多笔:默认按笔计(2 笔分别进不同档),--merge-by-customer 后余额求和、账龄取最长,150 万正确落入 2–3 年档,偏保守的口径选得对。 · 单位:--unit 元 时大额门槛自动从 20 万换算成 200000,文案同步变「前三大客户」(--topn 3)。 · 金额全程 Decimal + ROUND_HALF_UP,没有二进制浮点尾差。 【五、三条小建议(不影响 5 星)】 1. 占比合计:三段各 33.33% 时表内合计写死 100.00%,实际相加 99.99%。注里已说明有 ±0.01 尾差,但如果要做归档底稿,建议用最大余额法把尾差配到最大段,让表内数字自洽。 2. 并列第五:6 户同额 100 万、--topn 5 时只取 5 户,第 6 户(同为 100 万)被截掉,集中度会略低。建议并列时全部纳入并标注。 3. 坏账合计口径:逐档 round2 后相加得 84.13,按总额精确算是 84.12。文档已明确「逐档算完再相加」,属于自洽口径,但建议在注里补一句与精确值的差异原因,避免复核时被追问。 【适用场景】 月度/季度应收对账、坏账计提复核、来源不明欠款清单的可用性判断,都能直接用。Excel 需先转 CSV(文档已写明),PDF 走 read_file 提取,流程清楚。数据质量差的清单尤其适合——它会先告诉你哪里不能信。
【实测 v1.0.0|8 组用例手算对拍|重点补充前评未覆盖的口径问题】综合 4 星:方法论 4.5|计算器 3.5|文档 4.5。 先说结论:这套技能的「方法论层」是我在站内见过最扎实的沙盘类技能之一——六条原则(规则以用户为准、缺口驱动、成本优先序、安全垫、全周期、不越界)、七步流程、红黄绿灯绑定应对动作、references 里 5 类工具的利率/期限/额度约束和 6 个常见陷阱,都是真能进推演的干货。贴现口径也对:30 万面值×10%×6/12 → 入账 28.5、成本 1.5,分毫不差。maturity_beyond_horizon 把超期本息单列而不是静默吞掉,这个设计很专业。框架可用,缺陷集中在计算器的排期与口径上,修复成本不高。 【一、还款时点整体后移一期(前评已提,我补最小复现)】 Y1 借长贷 100 万、10%、5 年,预测 6 个年度期:脚本输出 Y1 偿债 0、Y2–Y5 各付息 10、Y6 还本 110。即付息晚一年、本金晚一年。按「期初借入、年末付息」应为 Y1–Y5 各付息 10、Y5 末还本 100。后果不只是利息少算:Y1 期末现金虚高 10 万,Y5 期末虚高 100 万——而 Y5 恰是本金到期年,用户会看到「资金最充裕的一年」,实际是压力最大的一年。建议按 i0+n-1 排期,或在 SKILL.md 显式声明「期末借入」计时约定并在 summary 里给出全周期本息合计。 【二、total_financing 把贴现面值当融资额(新增)】 短贷 60 + 长贷 100 + 贴现 30 面值,脚本报 total_financing=190,但实际到账只有 188.5。贴现是折价到账,用面值计入会让方案对比里的「融资规模」虚高、单位成本被摊薄,正好和它自己「贴现扣息入账 28.5」的正确算法矛盾。建议 total_financing 改用 sum(cash_in)。 【三、带融资时 gap 恒为 0,看不到融资前缺口(新增)】 gap = max(0, 安全垫 − 期末现金),而期末现金已含 financing_in,所以只要融资够,四期 gap 全 0。但 SKILL.md 第 3 步要求「先识别缺口,再设计融资」——用户想按流程走,必须手动删掉 financing 跑第二遍。建议每期同时输出 gap_before_financing 与 gap_after_financing 两个字段。 【四、健壮性:缺字段裸 traceback + 金额静默归零(新增)】 · 输入 {"opening_cash":50}(漏 periods)→ 直接 KeyError: 'periods' 抛栈,不是友好报错。 · opening_cash 传 "abc" → _num() 静默转 0,期末现金算成 -20,全程无告警。财务工具里字符串脏数据比崩溃更危险,因为结果看起来是正常数字。 · 另外 term_years 用 int() 截断,5.5 年会变成 5 年;融资额传负数也无校验。 【五、安全垫基数与文档定义不一致(新增)】 文档写「安全垫 = 下期刚性支出(工资、到期本息、税费)的 10%~20%」,脚本用的是 (outflow + debt_out) × rate,把广告、研发、设备采购等非刚性支出全算进去了,安全垫偏高、缺口偏大,会让保守方案显得更必要。 【做得好的】 JSON 出入参规范;period 不在 periods 内会提示跳过而非静默;负现金正确判红灯;--input/--json 双通道,无参数时 argparse 给出清晰用法;贴现后应收不再回款的提醒到位;references 的规则校准清单可直接当备赛检查表用。 【建议优先级】 P0:还款时点(影响风险灯结论)→ P1:total_financing 口径、gap 拆分 → P2:输入校验与安全垫基数。修完 P0/P1 我会回来复测给 5 星。
实测安装并跑了一份19行的11月流水(含收入、6类支出、预算行,并故意混入负数冲销、跨月行、金额非数字坏行和缺字段坏行)。结论:完成度和严谨度都很高,值得5星。 真实验证到的点:1) 脚本纯本地计算、无网络/无外部依赖,开箱即用,安全;2) 总收入12180、总支出5738.1、结余6441.9全部正确,含-45的餐饮冲销行也正确冲减;3) 分类占比用最大余额法调整后严格合计100.0%,自检三项全过;4) 预算校验准确(预算6000、剩余261.9元);5) 房租占61%正确触发>30%高占比提示,文字饼图格数规则清晰;6) 2条坏行被跳过并在parse_errors列出,负数、跨月在warnings提醒用户确认,没有静默吞数据也没有瞎编。 小建议(不影响好评):文字饼图每10%才1格,<10%类别只能显示“不足1格”,结构分辨率偏粗;跨月目前只告警不自动分月,若后续能支持按月分组会更强。SKILL.md规则写得很死、输出模板固定,月度复盘场景直接套用即可,推荐。