分析 P1 已上线 L0

客户盈利分析

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

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

技能正文(随包 SKILL.md)

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

# 客户盈利分析

「哪个客户赚钱」这个问题,答案错一次就可能丢一个的客户,也可能白折腾半年去优化一个本来就在亏钱的客户。

本包按客户把收入、成本、毛利、毛利率算出来,再盯住四个常见坑:
**亏损客户、毛利过度集中、有收入无成本、样本太少**。

其中最要紧的一条:**成本没归集到的客户,绝不按 0 成本算毛利率**。
0 成本算出来的 100% 毛利率看着漂亮,实际是「收入里一分钱成本都没分摊」的假象——
按这个数字去砍客户,砍掉的可能正是毛利最高的那个。

## 输入 / 输出

### 输入:1 张客户明细表

| 列 | 必须 | 认这些列名 |
|---|---|---|
| 客户 | 建议 | 客户 / 客户名称 / 往来单位 / 单位名称 |
| 收入 | **必须** | 收入 / 营业收入 / 销售额 / 订单金额 / 不含税收入 |
| 成本 | **必须** | 成本 / 营业成本 / 销售成本 / 业务成本 / 采购成本 |

第一行是表头,之后每行一个客户;同一个客户出现多行会**按客户名合并**。
收入列找不到、成本列找不到,本包直接拒绝执行——
没有成本就做不了盈利分析,硬算只会得到一个假的 100% 毛利率。

### 输出(进 `_out/`,源文件一个字节都不动)

| 文件 | 内容 |
|---|---|
| `cp_主表.csv` | 客户 / 收入 / 成本 / 毛利 / 毛利率 / 收入占比 / 毛利占比 / 状态 / 风险(末行合计) |
| `cp_异常表.csv` | 成本缺失、收入非正、成本为负、亏损客户、集中度 / 样本不足标记(带风险等级) |
| `cp_校验表.csv` | 样本数、集中度阈值、毛利集中度、金额守恒、人工复核声明 |
| `fin-log.jsonl` | 处理日志(追加) |

主表末尾有「【合计】N 户」一行,收入、成本、毛利三列都能与逐户相加对上。

## 用法

```bash
PY="<python 3.8+ 路径>"   # 纯标准库,无需 pip install
"$PY" <skill目录>/scripts/cust_profit.py 客户毛利明细.xlsx --execute
```

调集中度过载阈值(默认毛利 Top1 > 50% 就标风险):

```bash
"$PY" cust_profit.py 客户毛利明细.xlsx --top1 40 --execute
```

先预览、确认无误再落盘:

```bash
"$PY" cust_profit.py 客户毛利明细.xlsx
# [预览模式] 未写盘。确认无误后加 --execute 执行。
```

## 真实输出样例

实测(7 行数据:6 户有成本、庚公司成本缺失、己公司毛利为负):

```
方案:cp_客户毛利.xlsx(客户列「客户」→ 收入列「收入」,成本列「成本」,7 行)

--- 客户盈利(有效 6 户 / 总行 7)---
  甲公司            收入     310,000.00  成本     180,000.00  毛利     130,000.00  毛利率   41.94%  风险 低
  乙公司            收入      96,000.00  成本      52,000.00  毛利      44,000.00  毛利率   45.83%  风险 低
  丙公司            收入      62,000.00  成本      40,000.00  毛利      22,000.00  毛利率   35.48%  风险 低
  丁公司            收入      42,000.00  成本      30,000.00  毛利      12,000.00  毛利率   28.57%  风险 低
  戊公司            收入      22,000.00  成本      16,000.00  毛利       6,000.00  毛利率   27.27%  风险 低
  己公司            收入      15,000.00  成本      18,000.00  毛利      -3,000.00  毛利率    -20.00%  风险 高
  【合计】6 户        收入     547,000.00  成本     336,000.00  毛利     211,000.00  毛利率      38.57%  风险 —

  收入合计 547,000.00 元 / 成本合计 336,000.00 元 / 毛利合计 211,000.00 元(毛利率 38.57%)

  毛利集中度过载:Top1 客户「甲公司」毛利占比 61.61%,超过阈值 50.0%,其余 5 户合计只占 38.39%

--- 异常表(3 条)---
  [高 ] 庚公司   成本缺失(第 8 行):有收入 8,000.00 元无成本,毛利率不可信,本包不按 0 成本计算毛利率,本行不进毛利汇总
  [高 ] 己公司   毛利为负(-3,000.00 元,毛利率 -20.00%):本客户在亏钱,先查定价与成本口径
  [中 ] 【集中度】甲公司  毛利集中度过载:Top1 客户「甲公司」毛利占比 61.61%,超过阈值 50.0%,其余 5 户合计只占 38.39%
```

校验表里的守恒行:

```
主表金额合计 | 547000.0
异常表金额合计 | 8000.0
守恒差异(入-主-异) | 0.0
```

失败路径实测(坏数据,全部走「排除 + 说明原因」,不吐假数):

```
# 收入全为 0
【算不出】「cp_坏_收入为0.xlsx」里没有一行能同时满足「收入为正数 + 成本是有效数字」,主表为空(3 行全部进了异常表)
建议:修好上面这几行的收入 / 成本后重跑;收入为 0 或负、成本缺失 / 为负的行都不参与汇总

# 收入为负 / 成本为负 / 收入缺失
【算不出】「cp_坏_金额为负.xlsx」里没有一行能同时满足「收入为正数 + 成本是有效数字」,主表为空
  (3 行全部进了异常表:甲公司 收入非正(-100,000.00 元);乙公司 成本为负(-20,000.00 元);丙公司 收入缺失)

# Top1 毛利占比 97.61% → 高风险
  [高 ] 【集中度】甲公司  毛利集中度过载:Top1 客户「甲公司」毛利占比 97.61%,超过阈值 50.0%,其余 2 户合计只占 2.39%
  [中 ] 【样本】      有效客户数 3 < 5,全部毛利率比率不稳定,不做客户级结论

# 缺成本列
【算不出】「cp_坏_缺成本列.xlsx」里找不到成本列(试过:成本、营业成本、销售成本、业务成本、采购成本、结转成本)
建议:补一列「成本」后再跑;本包不会把「没有成本」当成 0 成本
```

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

| 情况 | 本包做法 |
|---|---|
| 找不到收入列 | 拒绝执行并列出认得的列名 |
| 找不到成本列 | 拒绝执行——没有成本就做不了毛利,不按 0 成本算 |
| 某行收入缺失 / 不是数字 | 进异常表「收入缺失」,不参与汇总 |
| 某行收入为 0 / 为负 | 进异常表「收入非正」,疑似红字冲销或收入未确认 |
| 某行成本缺失 | 进异常表、**高风险**、单列,不按 0 成本算毛利率 |
| 某行成本为负 | 进异常表「成本为负」,疑似冲销或方向填反 |
| 有效客户数为 0 | 拒绝执行(全部行都被排除) |
| 毛利 Top1 占比 > `--top1` | 进异常表;≥ 90% 标高风险 |
| 有效客户数 < 5 | 全部比率加「样本不足,比率不稳定」,异常表 [中] |

## 关键设计

1. **成本缺失 ≠ 0 成本**。成本空的客户既不算毛利率,也不进毛利汇总,单独进异常表标高风险。
2. **集中度看毛利,不看收入**。收入占比高但毛利占比低的客户,可能只是「走量不赚钱」;
   毛利 Top1 占比 > 50%(默认 `--top1`)就标风险,≥ 90% 标高风险——
   这种结构下丢一个大客户,公司毛利会直接塌掉。
3. **样本不足就说实话**。有效客户数 < 5 时,所有客户比率都加「比率不稳定」标注:
   3 户算出来的毛利率波动很大,拿它做客户决策风险很高。
4. **亏损客户照常进主表**。它能看到亏损额和亏损比例,异常表里再标一条高风险提示,
   两处都留痕,避免「只看主表没注意风险列」。
5. **金额守恒**:主表收入 + 异常表(被排除行的)收入 = 输入有效收入,差异超 0.01 元即拒出;
   亏损客户与集中度标记行的收入只算一次,不重复计入。
6. **按客户名合并**。同一客户多行会累加,避免拆散后 Top1 集中度失真。

## 人工复核(必读)

- 收入是**不含税**口径还是含税?两者算出来的毛利率能差好几个点,务必先在校验表口径里确认
- 成本是否包含运费、包装、售后等?口径不一致会让亏损客户名单整体跑偏
- 关联方交易要单独看,毛利率异常高可能是内部划转,不是真实盈利
- 集中度标「中」不代表不该做业务,只是提示结构风险,是否要拓客户由业务判断
- 「样本不足」不是错误,是提醒别拿 2~4 户的毛利率下结论
- 主表里的客户名如果来自不同系统(简称 / 全称混用),会拆成两家客户,先统一命名

## 相邻路线转交

| 用户要做的事 | 转交给 |
|---|---|
| 多维度毛利分析(按产品 / 区域) | `gross-margin-analysis` |
| 应收欠款集中度与信用评级 | `ar-aging` |
| 管理层一页摘要 | `exec-summary` |
| 经营会议四页要点卡组 | `business-review-deck` |
| 成本怎么分摊到客户 | `cost-allocation` |

## 可直接复制的说法

```text
按客户把收入、成本、毛利、毛利率各算一遍,出一张按客户盈利表并给合计行。
重点看四类:亏损客户(毛利为负)、毛利集中度(Top1 毛利占比超过 50% 要标出来)、
有收入没成本的用户、以及有效客户数不足 5 户的情况。
成本没归集到的客户单独列进异常表并标高风险,不要按 0 成本给我算毛利率。
收入为 0、为负或者成本为负的行,写清原因后排除,不要参与汇总。
毛利集中度如果只有一个客户占比过半,请在校验表里说明其余客户合计占比。
```

## 做完怎么算完成

- [ ] 主表合计行的收入 / 成本 / 毛利与逐户相加对得上
- [ ] 校验表「守恒差异(入-主-异)」为 0.00
- [ ] 每个「成本缺失」的客户都已追到原因(真没成本数据,还是没归集)
- [ ] 亏损客户已逐户查到亏损原因(定价?成本口径?还是客户本身不赚钱)
- [ ] 毛利集中度超阈值的,已确认是客户结构问题还是分摊口径问题
- [ ] 收入 / 成本的口径(含税?哪些费用算成本?)已与财务确认
- [ ] 客户名在不同系统里的简称 / 全称已统一,没有被拆成两家

---

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

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

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

相邻技能

分析 规划中P1 在建 已上线

成本归集与分摊

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

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

多维度毛利分析

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

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

应收账龄与坏账准备

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

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

预算执行差异分析

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

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

本量利与盈亏平衡

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

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

经营分析素材生成

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

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

费用报销汇总

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

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

进销存差异检查

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

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

部门费用与降本分析

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

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

管理层一页摘要

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

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

发票查重

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

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

发票台账

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

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