AI核对型 AI 工具

货运破损理赔与扣款核对(免费版)

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

什么时候用

谁会在什么时候用:发货方(货主)的财务 / 物流成本岗 / 应付会计,

在每月与承运商对账、承运商从应付运费里直接扣掉破损理赔款之后,

把这张《货运破损理赔与承运商扣款明细表》核一遍才能确认本期运费结算。

理赔金额算错一档、扣款多扣一笔、同一票重复录两行,正是每月都要和承运商吵的几件事。

这张表会逐项核对什么:

每条结论都带原文行号与运单号 / 理赔单号,可被第三方用同一口径复算;

材料不齐时不给结论,会明确列出还缺什么。

这个免费版查什么

  1. 理赔金额复算(货值 × 赔付比例 − 免赔额 = 理赔金额)
  2. 扣款金额不得超过理赔金额(多扣检测)
  3. 同一承运商同一期间同一运单号重复行检测
  4. 赔付比例超过合同赔付上限检测
  5. 关键字段缺失、为占位符或为负数检测

(检查项由引擎的 CHECKS_GIVEN 导出,跑 --sample 会打印实际执行了哪些;

本版本不执行的 5 项列在 CHECKS_WITHHELD 里,不做也不假装做。)

数字会做归一化:12,000.00、千分位、带货币符号的写法、(12000)(会计负数)、60% 都被认成同一个口径

(60% 折成 0.60;比例列写 0.6 或 60% 都行,写 60 表示 6000%,本工具不会替你猜)。

表头里的空格与括号会被忽略,所以「货值(元)」和「货值」都认。

怎么用

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

入参就是含表头的一张表({"text": "理赔期间\t承运商编码\t运单号\t…"}):

从 Excel 或 TMS 导出的对账表里直接复制成文本(Tab 分隔最稳)贴进去即可。

表头缺列会明确告诉你缺了哪一列;缺一列就不给结论,不会拿 0 替你假设"这一票不赔"。

非破损理赔的承运商 / 期间请把「货值 / 理赔金额 / 扣款金额 / 免赔额」都填 0:

填 0 表示"确实没有",留空表示"不知道",这两者不能混。

退出码

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

出参

run.mjs --json(以及引擎 run() 返回值里的 result)的形状:

{
  "status": "success",
  "service_type": "FREIGHT_LOSS_CLAIM_CHECK",
  "scope": {
    "checks": [...],              // 本次实际执行的检查项
    "checks_not_run": [...],      // 本版本未执行的检查项(= CHECKS_WITHHELD)
    "rows": 6, "carriers": 2, "periods": 2,
    "totals_row": true, "totals_rows": 1,
    "goods_value_total": 65000, "claim_amount_total": 36300,
    "deduct_amount_total": 32300, "damaged_qty_total": 17,
    "paid_in_total": 32300, "outstanding_total": 4000,
    "statement_claim_total": 36300,
    "tolerance": 0.01, "executed_locally": true, "network_used": false
  },
  "findings": [
    { "level": "P0", "category": "理赔金额复算不符", "line": 2, "amount": 1200,
      "message": "承运商「SH-A 华东承运商」运单 YD2026050002 / 理赔单 LP2026050002 的理赔金额是 7000.00,按 货值 12000.00 × 赔付比例 50% − 免赔额 200.00 = 5800.00,相差 1200.00。",
      "advice": "…" }
  ],
  "summary": { "rows": 6, "carriers": 2, "periods": 2, "total": 0, "p0": 0, "p1": 0, "p2": 0,
               "verdict": "NO_ISSUE_FOUND", "omitted": 0 },
  "checks_executed": [...], "checks_withheld": [...],
  "checks_given": [...], "checks_out_of_scope": [...],
  "note": "…", "disclaimer": "…"
}

没有 result,因此不会有任何"未发现问题"的结论。

常见错法(本产品专属)

  1. 货值口径混用:同一张表里一部分行按销售价、一部分行按成本价或申报价算 ——

货值差一截,赔款就跟着差一截。本工具逐行复算并报出差额,但不会替你认定该用哪个口径

(那要以运输合同为准),请先把口径列填清楚再复算。

  1. 赔付比例写成 60 而不是 0.6 或 60%:比例列写 0.6 或 60% 都认;写成 60 意思是 6000%,

赔款会被算成货值的 60 倍,整行当场离谱。本工具不会替你猜你的意思。

  1. 免赔额只扣了一部分或根本没扣:免赔额是合同约定由货主自担的部分,

常见错法是"算赔款时忘了减免赔额",或者"同一票扣了两次免赔额"。这一行内部就对不上

(货值 × 赔付比例 − 免赔额 ≠ 理赔金额)。

  1. 赔付比例超过合同上限还照算:上限是这一票赔款的天花板(按票 / 按货值档 / 按品类),

调价或换合同档之后直接套用旧比例,就会算出高于上限的赔款;本工具按超出部分折算金额点出来。

  1. 扣款金额大于理赔金额:承运商从应付运费里扣走的钱超过了核定赔款,属于多扣;

常见错法是按报损金额扣、而不是按核定理赔金额扣,或者免赔额没有在扣款里体现。

  1. 同一张运单在同一个承运商同一个期间录了两行:重复粘贴 / 重复导单时,

赔款与扣款一起算了两遍。确属同一票分两段定损的,请拆成两行并各写清扣款事由与不同理赔单号。

  1. 该填 0 的格子留空:本期没有破损理赔的承运商把金额列留空,会让整行复算不出来。

留空就是"不知道",本工具宁可报缺格,也不用 0 替你假设。

这个免费版不包含

以下检查项不在本版本范围内,调用时也不会执行(列在引擎的 CHECKS_WITHHELD 里):

同名工具的完整档是另一个独立商品(条款与条件以它自己的商品页为准);

两档的差别就是上面这些,没有别的。

使用次数与完整档

本免费版每次运行结束后会向服务端做一次匿名次数统计:只发送本包标识和一个不含任何材料的匿名安装标识(由主机名与用户名做短哈希得到),不发送你的材料、不写任何文件。

核对本身全部在本机用 Node 标准库完成,不调用任何模型、不连接 TMS 或财务系统。

需要完整档时(可选)

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

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

边界(请务必知道)

本工具不做引擎 CHECKS_OUT_OF_SCOPE 里列的那些判断:货值该按销售价还是成本价、赔付比例与免赔额

是否符合运输合同、破损是否真实发生、承运商扣款是否真的已经从运费里扣到、往来对账与税额怎么处理

(那些以运输合同、现场凭证、运费结算单与银行流水为准)。

装到本地或在线用

· SkillHub(免费版):https://www.skillhub.cn/skills/user_ef162806/freight-loss-claim-check-free

· 全部免费工具:https://chenqg618.github.io/compliance-skills/

完整档(离线、无次数上限):SkillPay 买断 ¥9.9,跑多少次都不再收费;免费档与完整档的检查项差别见上面的说明。

怎么装:
https://chenqg618.github.io/compliance-skills/

免费版会明确列出哪些检查没有执行,不会让你以为已经全查过。