费用与预算技能包(免费版)
完全本地运行:引擎已经打包在本技能里(
scripts/engine/)。 核对过程不需要联网、不需要 API Key、没有调用次数上限、不写任何文件。
什么时候用
谁会在什么时候用:企业财务、管理会计、费用岗、代账公司在每月费用入账与经营分析会之前。 费用底稿从来不是一张表:预提费用与到票冲销、费用预算执行差异、部门费用预算执行、报销单合规预检、 租金账单与押金结算、物流仓储与操作费、设备维保与备件领用、承运司机运费结算、运费对账、 车队油耗与运费、物业费与滞纳金、物业公共能耗分摊、物业公共收益公示与分成、长期待摊费用摊销 —— 每一张都有自己的勾稽关系,逐张手核既慢又容易漏。
这个包做的事只有一件:--input <客户目录>(每个子目录 = 一个客户 / 一套材料),
一次跑完所有客户,每个客户一行结论。
这个免费版查什么
下面 14 项,每个客户都跑一遍(检查项名字与引擎 CHECKS_GIVEN 逐条一致):
- 预提费用与到票冲销核对
- 费用预算执行差异核对
- 部门费用预算执行核对
- 报销单合规预检
- 租金账单与押金结算核对
- 物流仓储与操作费核对
- 设备维保与备件领用费用核对
- 承运司机运费结算核对
- 运费对账
- 车队油耗与运费核对
- 物业费与滞纳金核对
- 物业公共能耗分摊核对
- 物业公共收益公示与分成核对
- 长期待摊费用摊销核对
引擎里的 CHECKS_WITHHELD(本免费版不执行的项)会逐条打印出来 ——
「跨客户汇总台账」「跨客户风险排序处理清单」「跨客户共性问题归类」「费用台账导出」——
它们是"未执行的检查项"的说明文本,不是实现。
另外,每个成员检查包自己没做的子检查(SUB_CHECKS_WITHHELD,本包合计 70 项)也在结果里
scope.sub_checks_not_run 如实列出 —— 两个档位都没实现它们,不会因为「买了完整档」就让买家以为这些项被跑了。
怎么用
node scripts/run.mjs --sample # 单客户样例(内置)
node scripts/run.mjs --sample-batch # 3 个客户的批量样例(干净 / 有硬伤 / 没交材料)
node scripts/run.mjs --input 客户目录 # 批量:每个子目录 = 一个客户
node scripts/run.mjs --input 客户目录 --json # 机器可读
客户目录怎么放(每个子目录里放该客户的一套费用与预算材料,每项用 === 检查项 === 分段,Tab 分隔最稳):
客户目录/
豫州商贸有限公司/费用与预算材料.txt
中岳建材有限公司/费用与预算材料.txt
也可以把 14 张表拆成 14 个文件放进同一个子目录 —— 引擎会自己认表头找对应的那一项。
templates/sample.json 是引擎自己的样例,可以直接 --input 它先跑通一遍。
退出码:0 已执行检查 / 1 缺少入参 / 3 材料不足 / 4 入参读不到或无法解析 / 9 未预期错误。 材料不足(一个客户的材料都没有、材料为空或只有几行、认不出任何一张表)时, 本工具不做任何认定、也不给任何结论,打印缺什么并以退出码 3 结束 —— 不会把"没查"说成"通过"。
结论怎么读
- 每个客户一行:
[结论] 客户名|问题 N 项(P0/P1/P2)|每一项:通过 / 有问题(n) / 未执行; - 有价值的是问题明细:每条都带
客户 + 检查项 + 来源文件:行号 + 类别 + 具体数字, 第三方可以拿同一份材料复算; - 报销单合规预检那一项,它的样例本身就是一份同一张发票号出现两次的报销底稿,
所以
--sample会照实报出这 1 条 P0(这是该项的真实结论,不是误报);其余 13 项在各自样例上是 0 条发现。
需要完整档时(可选)
本免费版是完整可用的核心产出,本版本不包含下面这些项:
- 跨客户汇总台账(全部客户 × 全部 14 项检查合并成一张总表)
- 跨客户风险排序处理清单(按 P0/P1/P2 排序,带客户名与原文文件行号)
- 跨客户共性问题归类(同一问题命中 2 个及以上客户时合并成一条共性项)
- 费用台账导出(Markdown 与 CSV 文本,直接用于月度费用复核说明)
同名工具的完整档是另一个独立商品(条款与条件以它自己的商品页为准);两档的差别就是上面这些,没有别的。
边界(请务必知道)
- 不做会计判断:这笔费用该不该报、该不该资本化、预提/摊销年限是否合理, 属于会计师/审计师与公司制度的判断,本工具不回答;
- 不代替审计程序、不代替发票真伪查验,也不出具鉴证意见或审计意见;
- 不判断预算额度定得合不合理、超支要不要调整预算(那是预算编制与审批的事);
- 不读取财务软件 / 费控系统 / ERP 的导出文件 —— 需要你先导出成文本,每个客户一个目录;
- 不判断费用科目、部门归属、分摊口径是否正确,只核你给的表内数字与表间勾稽关系。
常见错法
- 把 14 项的材料全塞进一个文件却不分段:引擎按
=== 检查项 ===分段找每一项的表; 不分段时只有第一段能被认出,其余 13 项会如实标成「未执行」并报一条「材料只覆盖了一部分」, 不是"查过了没问题"。 - 一个客户一个目录:
--input指向的目录里,每个子目录 = 一个客户。 把所有客户的表放进同一个子目录,会被当成一个客户,跨客户的差异与汇总也就无从谈起。 - 以为「未执行」=「通过」:某客户只交了 3 张表,那 3 项之外的 11 项是没有核, 结论里写的是「未执行」,并且会单独报一条覆盖缺口。
- 表头行被删掉:只贴数据行不贴表头,该项直接变成「未执行」(引擎认不出列的角色)。
- 把"运费对账"和"车队油耗与运费"两张表合成一张:它们都含"运费"字样,合成一张会让两张表
各认一段、结论挂错检查项;一张表一个
=== 检查项 ===段,或者一个文件一张表。 - 拿
--sample的输出当自己的结论:样例只是让你确认「跑得通、格式对」, 真正的结论必须来自你自己的材料。
