360 Secure SkillHub
360 安全技能中心

软件服务商账单与用量核对(免费版)

本地运行的确定性账单核对工具:对含表头的账单与用量明细逐行复算金额,对照计费数量与用量或席位,检测超合同单价、重复计费、合计行勾稽和关键字段缺失,按原文行号输出分级结论;材料缺列时不给结论。

chenqg618
chenqg618
热度 17.26
最近更新 2026-09-20 21:45:36
分类:数据依赖:代码执行 / 读写文件应用场景:财务 / 数据处理 / 报告撰写

安装技能

复制下面的话术发给你的 Agent,它会通过 secure-skills 检索并安装该技能。

执行命令安装此 skill: npx secure-skills-cli add saas-vendor-invoice-check-free
Metadata
slug
saas-vendor-invoice-check-free
displayName
软件服务商账单与用量核对(免费版)
version
1.0.5
summary
把软件服务商发来的账单与用量明细表逐行核一遍 —— 账单金额复算、计费数量与用量或席位对照、合计行勾稽、重复计费、超合同单价、关键字段空缺,每条结论都带原文行号。
tags
["软件服务商账单与用量核对","软件服务商账单与用量明细表","席位费","用量计费","对账"]
license
Proprietary
name
saas-vendor-invoice-check-free
display_name
软件服务商账单与用量核对(免费版)
display_name_en
SaaS Vendor Invoice Check (Free)
description
把软件服务商账单与用量明细表逐行核一遍(账单金额复算、计费数量与用量或席位对照、合计行勾稽、重复计费、超合同单价、关键字段空缺),每条结论都引用原文行号。不需要注册、不需要 API Key,材料不出本机。触发词包括 软件服务商账单与用量核对、账单和用量对不上、席位费多算了、服务商多收钱、账单金额算错了。
description_zh
把软件服务商账单与用量明细表逐行核一遍(账单金额复算、计费数量与用量或席位对照、合计行勾稽、重复计费、超合同单价、关键字段空缺),每条结论都引用原文行号。不需要注册、不需要 API Key,材料不出本机。触发词包括 软件服务商账单与用量核对、账单和用量对不上、席位费多算了、服务商多收钱、账单金额算错了。
description_en
A deterministic checker for a software vendor bill and usage detail sheet. It recomputes each line, compares billed quantity with usage or seats, ties out the total row, finds duplicate charges and prices above the contract price, and reports blank key fields. Every finding cites the source line. No registration, no API key, the material never leaves your machine.
category
business-ops
author
WorkBuddy 开放平台开发者
allowed-tools
Read, Bash

软件服务商账单与用量核对(免费版)

完全本地运行:引擎已经打包在本技能里(engine/ 目录)。 核对过程不需要联网、不需要 API Key、没有次数上限。

什么时候用

谁会在什么时候用:采购、财务、IT 资产管理员,在每月服务商出账、季度用量复盘、续费谈判 这几个固定节点上,都得把这张「软件服务商账单与用量明细表」核一遍才能往下走。 席位费多算、用量口径对不上、账单金额算错,正是每次都要和服务商来回拉扯的几件事。

这张表会逐项核对什么:

  • 账单金额 = 计费数量 × 单价 × 账期月数 − 折扣,逐行复算
  • 计费数量与用量 / 席位数对照(按用量计费的对用量,按席位计费的对席位数)
  • 账单单价高于合同单价时,按差额算出本期多收了多少
  • 同一服务商同一服务编号同一账单月份重复计费
  • 合计行各列 = 各明细行逐列相加
  • 关键字段缺失或为占位符(留空表示「不知道」,与填 0 是两回事)

每条结论都带原文行号与服务编号,可被第三方用同一口径复算; 材料不齐时不给结论,会明确列出还缺什么。

这个免费版查什么

免费版执行 6 项:

  1. 账单金额逐行复算(账单金额 = 计费数量 × 单价 × 账期月数 − 折扣)
  2. 计费数量与用量 / 席位数核对(按用量计费的对用量,按席位计费的对席位数)
  3. 超出合同单价检测(账单单价 > 合同单价 ⇒ 按差额算出多收金额)
  4. 同一服务商同一服务编号同一账单月份重复计费检测
  5. 合计行与明细行勾稽(合计行各列 = 各明细行逐列相加)
  6. 关键字段缺失或为占位符检测

数字会做归一化:12,000、千分位、1,240、(120)(会计负数)都被认成同一个口径 (0.5% 折成 0.005)。表头是完全相等匹配的,所以「单价」不会把「合同单价」抢走、 「用量」不会把「计费数量」抢走、「账期月数」不会把「合同账期月数」抢走。

怎么用

node scripts/run.mjs --sample                 # 先看样例
node scripts/run.mjs --input 你的材料.json     # 跑自己的材料
node scripts/run.mjs --input 你的材料.json --json

入参就是含表头的一张表({"text": "账单月份\t服务商\t服务项目\t…"}): 从 Excel 或服务商账单复制成文本(Tab 分隔最稳)贴进去即可。 表头缺列会明确告诉你缺了哪一列;缺一列就不给结论,不会拿 0 替你假设「这个月没用量」。

没有用量 / 没有席位请填 0:填 0 表示「确实没有」,留空表示「不知道」,这两者不能混。

退出码

码 含义
0 已执行检查
1 没给入参
3 材料不齐 —— 此时不给结论(既不说「对」,也不说「错」)
4 入参文件读不到或无法解析
9 未预期错误

出参

{
  "status": "success",
  "service_type": "SAAS_VENDOR_INVOICE_CHECK",
  "scope": { "checks": ["…6 项…"], "checks_not_run": ["…5 项…"], "rows": 7, "vendors": 3,
             "periods": 3, "totals_row": true, "usage_total": 1770000, "seats_total": 295,
             "bill_qty_total": 1770295, "discount_total": 1200, "bill_total": 209400,
             "tolerance": 0.01, "executed_locally": true, "network_used": false },
  "findings": [ { "level": "P0", "category": "账单金额复算不符", "line": 2, "amount": 100,
                  "message": "…", "advice": "…" } ],
  "summary": { "rows": 7, "vendors": 3, "periods": 3, "total": 0, "p0": 0, "p1": 0, "p2": 0,
               "verdict": "NO_ISSUE_FOUND" },
  "checks_executed": ["…6 项…"],
  "checks_withheld": ["…5 项…"],
  "checks_out_of_scope": ["…"]
}
  • findings[].line 是原文行号(含表头,从 1 起),amount 是这条结论涉及的金额;
  • findings[].level:P0 算术错 / P1 口径可疑 / P2 提示;
  • 材料不齐时返回的是 {"status": "insufficient_input", "missing": [...], "advice": "…"}, 没有 result,因此不会有任何「未发现问题」的结论。

常见错法(本产品专属)

  1. 拿服务商系统的口径当用量:计费数量用的是对计费系统的量,不是我们这边的 用量报表与席位台账 —— 离职账号没停用、测试 Key 算了钱、失败请求也算钱, 账单上的计费数量凭空多出一截。免费版把它和「用量 / 席位数」摆在一起逐行对照, 按单价折算,先让你看清差额有多大。
  2. 单价调价前后混用:服务商涨价后按新价计费,而合同期内应沿用旧价。 账单单价高于合同单价时,免费版按 计费数量 × 差额 × 账期月数 算出本期多收了多少。
  3. 改了一格忘了改账单金额:明细里数量或折扣动过、账单金额忘了刷新, 整行就复算不平。逐行复算能一眼看出是哪一行。
  4. 明细改对了、合计行忘了重算:合计行是财务据以付款与入账的金额, 明细单改过之后合计没跟着刷新,或者明细里漏了整份服务。
  5. 留空与填 0 混用:没有用量填 0 是「确实没有」,留空是「不知道」。 本工具不会替你猜 —— 关键格留空就直接报缺,绝不按 0 算出一个「本期没问题」。

这个免费版不包含什么

免费版不做下面这些完整档才有的判断(它们会如实列进 checks_withheld,不会用默认值编造):

  • 折扣列异常检测(折扣为负 ⇒ 实付超过应收;折扣超过无折扣计费额 ⇒ 折后金额为负)
  • 账期边界检测(账期月数不是 1~12 的整数;同一服务编号的账期重叠 ⇒ 同一时段被计了两次)
  • 同一服务商同一账单月份同一服务项目出现多个服务编号(疑似重复订购)
  • 差异归因(把无折扣计费额差异拆成 数量差异 / 单价差异 / 账期差异 三类)
  • 跨服务商 / 跨账单月份汇总台账与按多收金额排序的处理清单

需要完整档时(可选)

本免费版是完整可用的核心产出,本版本不包含下面这些项:

  • 折扣列异常检测(折扣为负 ⇒ 实收大于应收;折扣超过无折扣计费额 ⇒ 折后金额为负)
  • 账期边界检测(账期月数不是 1~12 的整数;同一服务编号的账期重叠 ⇒ 同一时段被计了两次)
  • 同一服务商同一账单月份同一服务项目出现多个服务编号(疑似重复订购,席位与用量被收两遍)
  • 差异归因(把无折扣计费额差异拆成 数量差异 / 单价差异 / 账期差异 三项,给出三项合计与逐行明细)
  • 跨服务商 / 跨账单月份汇总台账与按多收金额排序的处理清单(按服务商 × 账单月份汇总账单金额与多收金额,逐条带原文行号)

同名工具的完整档是另一个独立商品(条款与条件以它自己的商品页为准);两档的差别就是上面这些,没有别的。

边界(请务必知道)

本工具不做引擎 CHECKS_OUT_OF_SCOPE 里列的那些判断:单价与折扣是否符合合同约定、 用量统计口径(去重规则 / 失败请求算不算 / 测试 Key 算不算 / 跨月切分点)对不对、 席位台账对不对、这些服务该不该续费、账单是否已开票或已付款 (那些以采购合同、服务商计费系统、我方用量报表与银行流水为准)。

  • 只核表内勾稽与两组两列对照:合同单价、合同账期月数、用量、席位数一律以你填的为准;
  • 「没报问题」不等于「没有问题」:超出上述 6 项的检查,本版本不执行,且会如实列出未执行项;
  • 材料不齐时不给结论,也不会用默认值编一个「本期没问题」出来;
  • 每条结论都带原文行号与服务编号,可由第三方用同一份输入复算。