分析 P1 已上线 L0

多维度毛利分析

按客户产品区域看毛利率,样本过小、负毛利、有收入无成本全部标出

技能 sluggross-margin-analysis
所属栏目分析 成本 / 预算 / 经营
交付阶段P1 P1 在建 · 形成数据-票证-记账-报表-资金-分析-底座的完整闭环
版权© 2026 律令科技(深圳)有限公司开发 · 财友云(caiyouyun.cn)发布
这个包已上线。复制到本地即可离线运行;正文与用法以下方随包 SKILL.md 为准。

技能正文(随包 SKILL.md)

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

# 多维度毛利分析

毛利表最骗人的两种样子:**某些客户根本没进成本,毛利率 100% 看着很漂亮**;
**某个区域只有一两条记录,样本太少,比率抖得没法用**。
这两种数拿去开会、拿去做定价,都会把人带沟里。

本包的原则:**照出表,但把每一条可疑都标出来**。

- 样本数少于 5 的维度值 → 标「样本过小,比率不稳定」(低风险)
- 毛利率为负 → 标「不通过 / 负毛利」(高风险)
- 毛利率 > 80% → 标「不通过 / 毛利率异常高」(中风险,多半是成本没归集完整)
- 有收入无成本(成本缺失或为 0)→ 标「有收入无成本,毛利不可信」(高风险)
- 收入为 0 或缺失 → 毛利率**标「无法校验」+ 原因**,不硬算、不填 0、不填 100%

## 输入:一张收入成本明细表

| 列名 | 必填 | 说明 |
|---|---|---|
| 客户 / 客户名称 / 往来单位 | 否(`--dim` 里用到才需要) | 客户维度 |
| 产品 / 产品名称 / 商品 / 产品线 | 否 | 产品维度 |
| 区域 / 大区 / 地区 | 否 | 区域维度 |
| 收入金额 / 营业收入 / 销售额 / 收入 | 是 | 分子所在列 |
| 成本金额 / 营业成本 / 销售成本 / 成本 | 是 | 没有成本就算不出毛利,会拒绝 |

> `--dim` 默认 `客户,产品,区域`,一次出三个维度。
> 表里没有的维度列不会让整包失败——该维度标「未出表」进异常表,其余维度照出。

## 输出四件套

| 文件 | 内容 |
|---|---|
| `gm_主表.csv` | 维度 / 维度值 / 样本数 / 收入合计 / 成本合计 / 毛利 / 毛利率 / 判定 / 备注 |
| `gm_异常表.csv` | 负毛利、异常高毛利、样本过小、成本缺失、收入为 0(带风险等级) |
| `gm_校验表.csv` | 出表维度、样本数下限、各维度小计核对、被剔除行数 |
| `fin-log.jsonl` | 处理日志(追加) |

主表每个维度末尾还有一行「(本维度合计)」。

## 用法

```bash
PY="<python 3.8+ 路径>"   # 纯标准库
"$PY" <skill目录>/scripts/margin.py 收入成本明细.xlsx --execute
```

只按客户看:

```bash
"$PY" margin.py 收入成本明细.xlsx --dim 客户 --execute
```

**默认不写盘**——不加 `--execute` 只打印预览。

## 真实输出

```
方案:收入成本明细.xlsx(18 行,取到有效收入 / 成本明细 18 行)
      维度:客户(有列)、产品(有列)、区域(有列)
  客户   甲客户            n=5   收入=   730000.00 成本=   447000.00 毛利=   283000.00 毛利率=38.77%                 可计算
  客户   乙客户            n=6   收入=   515000.00 成本=   347500.00 毛利=   167500.00 毛利率=32.52%                 可计算
  客户   丙客户            n=2   收入=   230000.00 成本=   152000.00 毛利=    78000.00 毛利率=33.91%                 可计算
  客户   己客户            n=1   收入=   120000.00 成本=        0.00 毛利=   120000.00 毛利率=100.00%                不通过
  客户   丁客户            n=1   收入=    60000.00 成本=    92000.00 毛利=   -32000.00 毛利率=-53.33%                不通过
  客户   戊客户            n=1   收入=    20000.00 成本=        0.00 毛利=    20000.00 毛利率=100.00%                不通过
  客户   小客户A           n=1   收入=     5000.00 成本=     3500.00 毛利=     1500.00 毛利率=30.00%                 可计算
  客户   庚客户            n=1   收入=        0.00 成本=    30000.00 毛利=   -30000.00 毛利率=—(收入为 0(或缺失),分母不存在,本包不硬算毛利率) 无法校验
  产品   主控板            n=4   收入=   940000.00 成本=   513000.00 毛利=   427000.00 毛利率=45.43%                 可计算
  产品   通讯模组           n=4   收入=   155000.00 成本=   197500.00 毛利=   -42500.00 毛利率=-27.42%                不通过
  区域   华东             n=8   收入=  1080000.00 成本=   599000.00 毛利=   481000.00 毛利率=44.54%                 可计算
  区域   西南             n=1   收入=    20000.00 成本=        0.00 毛利=    20000.00 毛利率=100.00%                不通过
  客户   (本维度合计)        n=18  收入=  1680000.00 成本=  1072000.00 毛利=   608000.00 毛利率=36.19%                 可计算
--- 异常表(15 条)---
  [高] 客户 / 己客户  有收入无成本,毛利不可信(1 行成本缺失,按 0 计);样本过小,比率不稳定(1 行 < 5);毛利率异常高(100.00% > 80%),需确认成本是否归集完整
  [高] 客户 / 丁客户  样本过小,比率不稳定(1 行 < 5);负毛利 -53.33%
  [中] 客户 / 庚客户  样本过小,比率不稳定(1 行 < 5);收入为 0(或缺失),分母不存在,本包不硬算毛利率
```

失败路径(实测):

```
【算不出】表里找不到成本列(可用:成本金额 / 营业成本 / 销售成本 / 主营业务成本 / 成本 / 结转成本)——没有成本就算不出毛利
【算不出】表里没有任何一行同时有收入(或成本)数据,出不了毛利表
【算不出】金额不守恒:输入 1680000.0 ≠ 主表 5040000.0(多维度交叉表,维度间会重复计数,属正常)
```

最后这条是护栏正常工作的样子:如果哪天脚本真的把明细重复计数了,它宁可拒绝也不给你一张对不上的表。

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

1. **毛利率三态**:`可计算` / `不通过`(负毛利、异常高)/ `无法校验`(收入为 0 或缺失)。
   「无法校验」**不等于**「通过」——它只表示这个数现在不能信任。
2. **样本数下限 5**。1 行数据的客户毛利率 30% 和 30 行数据的客户毛利率 30% 不是一个概念。
   本包照出数,但一定标「样本过小,比率不稳定」,别拿它下结论。
3. **成本缺失 ≠ 成本为 0**。两者都按 0 计并都标「有收入无成本,毛利不可信」,
   但异常表里会写清是「成本缺失」还是「成本为 0」,追查时不一样。
4. **多维度交叉表会重复计数**:同一批明细在客户、产品、区域三个维度各出现一次,
   所以「各维度小计」相加会翻倍。要核对的是「每个维度的小计 = 明细合计」。
5. **收入为负 / 成本为负的行直接剔除并进异常表**(疑似红字冲销),不混进执行率。

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

| 情况 | 处理 |
|---|---|
| 找不到收入列 | 拒绝 |
| 找不到成本列 | 拒绝 |
| 一行有效明细都没有 | 拒绝 |
| 金额不守恒(维度小计对不上明细合计) | 拒绝 |

不拒绝但会明确标出:样本过小、负毛利、毛利率 > 80%、有收入无成本、收入为 0。

## 人工复核(必读)

- 毛利率 > 80% 先查是不是成本归集漏了,别急着高兴
- 成本缺失行按 0 计,会把该维度毛利率整体推高,看表先看「成本缺失行数」
- 小样本维度的比率只作参考,别拿一个只有 1 行的客户下定价结论
- 收入是含税还是不含税会直接影响毛利率,本包不猜,看你的表头

## 相邻路线转交

| 用户要做的事 | 转交给 |
|---|---|
| 按客户看收入成本,还要算集中度 | `customer-profit-analysis` |
| 毛利异常要查凭证 | `accounting-entry-check` |
| 收入成本表本身有脏数据 | `fin-table-clean` |
| 毛利指标怎么进月度经营分析 | `monthly-mgmt-report` |

## 可直接复制的说法

```text
按客户、产品、区域三个维度把毛利率算一遍,收入成本明细在这张表里。
样本少于 5 条的维度标一句「样本过小,比率不稳定」。
负毛利、毛利率超过 80% 的、有收入没成本的(成本缺失或者填了 0),都单独列出来并标风险。
哪个客户的收入是 0,毛利率就写「无法校验」并说明原因,别硬算一个 0% 或者 100%。
```

## 做完怎么算完成

- [ ] 三个维度的「(本维度合计)」都是可计算或已说明原因
- [ ] 每条「有收入无成本,毛利不可信」都追到具体行了
- [ ] 每条「样本过小」的维度值都确认过能不能用
- [ ] 负毛利清单已交给业务方确认(是真的亏,还是成本没进账)
- [ ] 确认了收入是含税还是不含税口径

---

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

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

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

相邻技能

分析 规划中P1 在建 已上线

成本归集与分摊

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

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

应收账龄与坏账准备

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

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

预算执行差异分析

预算 vs 实际的额差率差与预警清单

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 为准。