bom-consumption-variance-check-freelisted
Install: claude install-skill chenqg618/compliance-skills
# BOM用量与损耗差异核对(免费版)
> **完全本地运行**:引擎已经打包在本技能里(`engine/` 目录)。
> 核对过程不需要联网、不需要 API Key、**没有调用次数上限**。
## 什么时候用
**谁会在什么时候用**:制造业的**成本会计每月结账时必须核一遍,年度盘点审计还要再核一遍**。
因为生产工单与物料清单(BOM)放在一起,每一条用量差异都能用表上的数字算出来对错:
- 标准用量 = 单位用量 × 产出数量(BOM 定额,单位用量里已经含了定额损耗)
- 用量差异 = 实际领料 − 退料 − 标准用量(正数 = 超耗,负数 = 少耗)
- 损耗率 = 用量差异 ÷ 标准用量
**超耗不查就是成本黑洞**:偷料、报废未报、串料、退料没冲减,全都藏在这三条算式后面;
而"这笔差异该算到哪个工单/产品头上"正是车间与财务每月吵架的那件事。纯算术,
但料号一多、工单一多,人眼极易错。
## 这个免费版查什么
引擎逐条执行下面这 7 项(**本版本不执行的检查项会如实列在结果的 `scope.checks_not_run` 里**):
1. **标准用量勾稽复算**:标准用量 = 单位用量 × 产出数量
2. **用量差异勾稽复算**:用量差异 = 实际领料 − 退料 − 标准用量
3. **损耗率勾稽复算**:损耗率 = 用量差异 ÷ 标准用量
4. **合计行逐列复核**:标准用量、实际领料、退料、用量差异 四列的合计是否等于各行之和
5. **重复物料行检测**:同一工单同一物料出现多行
6. **关键字段空缺与占位符检测**
7. **单位用量与产出数量非正检测、数量与单价为负检测**
每条结论都带**原文行号与出处**(如「第 2 行(工单 WO-2606-001/产品 电机外壳/物料 A1001)」),
可被第三方用同一份输入复算;**材料不足时不给结论**,会明确列出还缺什么。
## 和已有的核对有什么不同
- `inventory-cost-flow-check` 核的是**成本流转与计价**(发出/结存单价、结转与计价方法);
- `inventory-check` 核的是**数量盘点**(账面数量与实物是否一致);
- 本能力核的是**用量差异**:同一张工单上「标准用量(BOM 定额)vs 实际领料 − 退料」,
并按工单/产品归集差异。三者看的是三件事,同一批材料可以三个都跑。
## 怎么用
```bash
node scripts/run.mjs --sample # 先看内置样例
node scripts/run.mjs --input 你的工单明细.json # 跑自己的材料
node scripts/run.mjs --input 你的工单明细.json --json
```
入参写法(两种都行):
- `{"text": "工单号\t产品名称\t…\t替代登记单号\nWO-2606-001\t…"}`;
- 直接把工单领料明细(**含表头**)从 Excel 复制成文本贴进来,Tab 分隔最稳。
表头要能认出:工单号、产品名称、物料编码、物料名称、BOM归属工单、单位用量、产出数量、标准用量、
实际领料、退料、用量差异、损耗率、损耗率上限、单价、是否替代料、替代登记单号。
其中 **BOM归属工单 = 该物料按 BOM 应投的工单**(和本行工单不一致就是串料)。
## 常见错法(这张表里真的会有人这么填)
1