分析 P2 已上线 L0

预算执行差异分析

实际与预算逐项比对出差异额、差异率、执行率,超支与欠执行分开看,预算为 0 不硬凑

技能 slugbudget-execution
所属栏目分析 成本 / 预算 / 经营
交付阶段P2 P2 长尾 · 长尾与进阶分析,按 P0/P1 数据裁剪
版权© 2026 律令科技(深圳)有限公司开发 · 财友云(caiyouyun.cn)发布
这个包已上线。复制到本地即可离线运行;正文与用法以下方随包 SKILL.md 为准。

技能正文(随包 SKILL.md)

> **本地运行,零网络、免 API Key、数据不出电脑。**
> 四项诚实承诺:① 算不出就说算不出,绝不编造数字;② 高危动作强制人工确认;③ 幂等断点,绝不重复副作用;④ 全程留痕可审计。

# 预算执行差异分析

月度预算执行最怕两件事:**超支的没被点出来**,以及**预算列填了 0 之后算出一个无穷大的执行率**。
本包把这两件事都按死:

- **差异额 = 实际 − 预算**,正数超支、负数欠执行,两类分开出表,不为凑一个类目把方向混在一起
- **执行率 = 实际 / 预算**,超过 120%(重大超支)与低于 50%(重大欠执行)分别标高风险,提醒复核预算本身是否下达有误
- **预算为 0 一律不算**——差异率、执行率都写「—(预算为 0,无法计算…)」,绝不用 `inf`、也不用 1 或 0 凑数,同时进异常表提示「先确认是零预算还是漏填预算」
- 预算缺失、实际缺失、金额取到负数,这三类行**不进主表、进异常表**,原话写明「该行未出表」

## 输入:一张预算执行表

| 列名 | 必填 | 说明 |
|---|---|---|
| 费用项目 / 科目 / 预算科目 / 项目 | 是 | 这一行说的是哪个科目 |
| 预算数 / 预算金额 / 预算额 | 是 | 下达的预算数 |
| 实际数 / 实际发生额 / 实际金额 | 是 | 实际执行数 |
| 部门 / 责任中心 / 成本中心 | 否 | 归口部门,仅用于异常表定位 |

> 预算与实际都允许为 0,但**同一行两者不能同时为 0**(那种行没有比较意义,会被剔除并进异常表)。
> 收入类科目(如「主营业务收入」)也能跑:收入低于预算同样是「欠执行」,口径统一,不需要另开一套。

## 输出四件套

| 文件 | 内容 |
|---|---|
| `be_主表.csv` | 费用项目 / 部门 / 预算 / 实际 / 差异额 / 差异率 / 执行率 / 类型(超支 · 超支(重大)· 欠执行 · 欠执行(重大)· 持平 · 实际有支出,预算为 0 · 合计超支 / 合计欠执行) |
| `be_异常表.csv` | 重大超支、重大欠执行、预算为 0 有支出、金额缺失、金额为负(带风险等级) |
| `be_校验表.csv` | 预算 / 实际守恒差异、剔除行数、口径说明 |
| `fin-log.jsonl` | 处理日志(追加) |

## 用法

```bash
PY="<python 3.8+ 路径>"   # 纯标准库
"$PY" <skill目录>/scripts/budget.py 预算执行表.xlsx --execute
```

**默认不写盘**——不加 `--execute` 只打印预览。核对过差异方向再写盘。

```bash
"$PY" budget.py 预算执行表.xlsx --out-dir _out --operator 张三 --execute
```

## 真实输出

```
方案:预算执行表.xlsx(9 行,取到有效预算 / 实际行 9 行)
  销售费用-差旅          预算=    80000.00 实际=    96000.00 差异=    16000.00 差异率=20.00%  执行率=120.00%  超支(重大)
  销售费用-招待          预算=    50000.00 实际=    48000.00 差异=    -2000.00 差异率=-4.00%   执行率=96.00%   欠执行
  管理费用-工资          预算=   360000.00 实际=   366000.00 差异=     6000.00 差异率=1.67%    执行率=101.67%  超支
  管理费用-审计          预算=    60000.00 实际=    60000.00 差异=        0.00 差异率=0.00%    执行率=100.00%  持平
  管理费用-咨询费         预算=        0.00 实际=    45000.00 差异=    45000.00 差异率=—(预算为 0,无法计算差异率)  执行率=—(预算为 0,无法计算执行率)  实际有支出,预算为 0
  研发费用-材料          预算=   200000.00 实际=    68000.00 差异= -132000.00 差异率=-66.00%  执行率=34.00%   欠执行(重大)
  研发费用-外协          预算=   150000.00 实际=   210000.00 差异=    60000.00 差异率=40.00%   执行率=140.00%  超支(重大)
  财务费用-手续费         预算=    12000.00 实际=        0.00 差异=  -12000.00 差异率=-100.00% 执行率=0.00%    欠执行(重大)
  主营业务收入           预算=  1500000.00 实际=  1680000.00 差异=   180000.00 差异率=12.00%  执行率=112.00%  超支
  (合计)             预算=  2412000.00 实际=  2573000.00 差异=   161000.00 差异率=6.67%   执行率=106.67%  合计超支
```

失败路径(实测,异常表原话摘录):

```
--- 异常表(7 条)---
  [高] 销售费用-差旅 / 销售部  超支(重大):实际超出预算,执行率 120.00%(差异 16000.00 元,执行率 120.00%)
  [中] 管理费用-工资 / 财务部  超支:实际超出预算,执行率 101.67%(差异 6000.00 元,执行率 101.67%)
  [高] 管理费用-咨询费 / 财务部  实际有支出,预算为 0:预算为 0 却有实际支出 45000.00 元,本包不输出无穷大的差异率;请先确认是零预算还是漏填预算
  [中] 研发费用-材料 / 技术部  欠执行(重大):执行率仅 34.00%,预算可能下达错误或业务未发生(差异 -132000.00 元,执行率 34.00%)
  [高] 研发费用-外协 / 技术部  超支(重大):实际超出预算,执行率 140.00%(差异 60000.00 元,执行率 140.00%)
  [中] 财务费用-手续费 / 财务部  欠执行(重大):执行率仅 0.00%,预算可能下达错误或业务未发生(差异 -12000.00 元,执行率 0.00%)
  [中] 主营业务收入 / 销售部  超支:实际超出预算,执行率 112.00%(差异 180000.00 元,执行率 112.00%)
```

## 关键设计(容易踩的坑)

1. **预算为 0 是三态,不是除零**。
   预算 = 0 时,差异率与执行率**不做除法**,直接写 `—(预算为 0,无法计算差异率)`;
   若此时实际还有支出,类型记为「实际有支出,预算为 0」并标高风险。合计行同理:预算合计为 0 就写「预算合计为 0」。
2. **超支与欠执行不合并成一个类目**。「类型」列按差异额正负与执行率阈值同时判定,
   所以「预算 0、实际 45000」这类既不是超支也不是标准超支的行会单独成一类,不会被 ArithmeticError 吞掉。
3. **重大超支的阈值是执行率不是差异率**。执行率 > 120% 记重大超支(高),
   执行率 < 50% 记重大欠执行(中)——后者按中风险是因为「预算没花出去」往往是预算下达错误,不是业务问题。
4. **缺失 / 负数一律剔除出主表**。预算缺失、实际缺失、金额取到负数的行进异常表并写明「该行未出表」,
   主表不含它们,所以「输入 = 主表 + 异常」的守恒断言成立。
5. **收入类科目同表处理**。收入低于预算算欠执行,不做反向取数,避免口径两套。

## 「拒绝权」:什么情况下拒绝执行

| 情况 | 处理 |
|---|---|
| 表里没有任何一行同时有预算和实际金额 | 拒绝输出:`【算不出】表里没有任何一行同时有预算和实际金额,算不出差异` |
| 缺少必须的列(费用项目 / 预算 / 实际) | 拒绝输出并列出可识别的别名 |
| 文件路径不存在 | 拒绝输出:`【算不出】找不到文件` |
| 单行预算缺失 / 实际缺失 | **不拒绝整表**,该行进异常表并写明「该行未出表」 |
| 单行金额为负 | 该行进异常表,写明疑似红字冲销 |

> 注意区分:**空表拒绝整包**,单行坏数据只剔除该行。前者是「没法算」,后者是「这一行算不了」。

## 人工复核(必读)

- 差异率的分母是**预算**,不是上期实际;重述预算后所有差异率会变,需重跑
- 「预算为 0 却有支出」必须先人工判断:是做了零预算决策,还是预算漏填
- 重大超支也可能是预算本身下达错了(比如少下了一个月),先看预算源头再看执行
- 本表只做预算 / 实际比对,**不涉及会计期间的收入成本配比**,跨期提前确认的费用不在本包口径内
- 差异分析结果不改动任何预算数与实际数

## 相邻路线转交

| 用户要做的事 | 转交给 |
|---|---|
| 超支科目怎么压下去、出降本方案 | `dept-cost-analysis` |
| 预算数本身从哪来、口径怎么定 | `budget-execution` 上游的预算编制流程(人工) |
| 费用报销超预算的逐笔明细 | `expense-summary` |
| 差异结果要写成管理层摘要 | `exec-summary` |

## 可直接复制的说法

```text
把这张预算执行表跑一下差异分析,超支和欠执行要分开列,别混在一张表里。
差异额 = 实际 − 预算,正的是超支、负的是欠执行。
预算为 0 的科目,差异率和执行率直接写「预算为 0,无法计算」,不要给我一个无穷大或者用 1 凑的数。
预算缺失或实际缺失的行,单独进异常表说明「该行未出表」,不要静默丢掉。
执行率超过 120% 和低于 50% 的单独标出来,我要看是预算下错了还是真的花超了。
```

## 做完怎么算完成

- [ ] 校验表里的「预算守恒差异」「实际守恒差异」都是 0.00
- [ ] 所有「预算为 0」的行都人工确认过(零预算决策 or 漏填)
- [ ] 主表行数 + 剔除行数 = 输入行数,没有静默丢行
- [ ] 差异率 / 执行率列里没有出现 `inf`、`nan` 或空值代替的假数
- [ ] 重大超支与重大欠执行两个方向的条目都已看过

---

本 Skill 采用 BUSL-1.1 许可(源码可见,可自由使用)。

版权所有 © 2026 律令科技(深圳)有限公司(@lexord-technology)。
本技能由律令科技(深圳)有限公司开发,**财友云(caiyouyun.cn)**发布与展示。

允许个人及企业内部免费使用、复制、修改,包括内部生产环境。
未经书面许可,不得将本 Skill 或其修改版作为商业服务对外销售、转售或提供托管服务。
各版本发布之日起 4 年后自动转为 Apache License 2.0。详见随包 `LICENSE.md`。

相邻技能

分析 规划中P1 在建 已上线

成本归集与分摊

按工时/产量/面积/收入等动因分摊,输出分摊过程表

L0 · 成本 / 预算 / 经营
分析 规划中P1 在建 已上线

多维度毛利分析

按产品/客户/区域/月份拆解毛利与贡献边际

L0 · 成本 / 预算 / 经营
分析 规划中P1 在建 已上线

应收账龄与坏账准备

账龄分段、坏账计提测算、客户风险排序

L0 · 成本 / 预算 / 经营
分析 规划中P2 长尾 已上线

本量利与盈亏平衡

盈亏平衡点、安全边际、敏感性与情景测算

L0 · 成本 / 预算 / 经营
分析 规划中P2 长尾 已上线

经营分析素材生成

月度经营分析的数字、结论与图表数据源一次产出

L0 · 成本 / 预算 / 经营
分析 规划中P1 在建 已上线

费用报销汇总

按部门/项目/费用类型三维汇总,本期-上期-变动额-变动率,未审批与缺发票不入正式汇总,超预算单列

L0 · 成本 / 预算 / 经营
分析 规划中P1 在建 已上线

进销存差异检查

理论期末=期初+入库-出库,与系统/盘点/账面三方比对,负库存与异常单价优先,按影响金额排序

L0 · 成本 / 预算 / 经营
分析 规划中P2 长尾 已上线

部门费用与降本分析

按部门/项目/供应商汇总增长贡献,区分一次性与持续性费用,识别单价上涨/重复采购/供应商集中

L0 · 成本 / 预算 / 经营
分析 规划中P2 长尾 已上线

管理层一页摘要

一句话结论+5 个核心指标+3 个关键变化+风险影响+待决策事项,事实/假设/建议三段分开,每个结论带数据依据

L0 · 成本 / 预算 / 经营
分析 规划中P1 在建 已上线

客户盈利分析

按客户算收入成本毛利毛利率,亏损客户与成本缺失单列标高风险,不按 0 成本算毛利

L0 · 成本 / 预算 / 经营
票证 规划中P0 计划 已上线

发票查重

按发票号码+代码+金额+日期组合查重,拦住重复报销与重复入账

L0 · 发票 / 票据
票证 规划中P0 计划 已上线

发票台账

进销项发票台账,按月/客户/税率汇总,导出 CSV

L0 · 发票 / 票据
本页内容由本地构建生成于 2026-09-27。技能正文以随包 SKILL.md 为准。