共同成本按分摊标准拆到受益对象,分摊前后必须守恒,差超一分钱拒绝输出
cost-allocationSKILL.md 为准。> **本地运行,零网络、免 API Key、数据不出电脑。**
> 四项诚实承诺:① 算不出就说算不出,绝不编造数字;② 高危动作强制人工确认;③ 幂等断点,绝不重复副作用;④ 全程留痕可审计。
# 成本归集与分摊
共同成本(房租、水电、公共服务费这类没写进任何一个部门的钱)怎么落到部门、项目、产品线上,
是月结时最容易出错也最容易被忽略的一步。**分摊最怕的不是分得不匀,而是分完之后对不上账**:
金额少了、尾差丢了、某个部门被悄悄按 0 分了。
本包把「分摊必须守恒」写成硬约束:
- **分摊前总额 = 各受益对象分摊额之和**,差超过 **0.01 元就拒绝输出**,不给你一个看着像样的错数
- **分摊标准缺失或为 0 的对象单独列出来**,写明「未参与分摊」,绝不静默按 0 分
- 同一维度下同一个受益对象只能有一个分摊标准值;出现两个,本包直接拒绝
- 金额为负、受益对象为空、分摊标准合计为 0,都属于「口径不清」,一律拒绝
## 输入:一张共同成本表
| 列名 | 必填 | 说明 |
|---|---|---|
| 费用项目 / 科目名称 / 成本项目 | 是 | 这一笔共同成本叫什么 |
| 待分摊金额 / 金额 / 发生额 | 是 | 这一笔要分出去多少钱 |
| 分摊维度 / 维度 | 否 | 按什么分:部门 / 项目 / 产品线。缺这一列就默认「部门」 |
| 受益对象 / 分摊对象 / 部门 / 项目 | 是 | 钱最终落在谁头上 |
| 分摊标准值 / 标准值 / 权重 / 人数 / 面积 | 是 | 按什么比例分 |
> 受益对象与分摊标准值**允许重复行**——同一个部门在多个费用行里出现很正常,
> 但同一维度下同一个受益对象的标准值只能有一个值,出现两个就拒绝。
> 填 0 或留空都算「无有效标准」:该对象不进分母,分摊额单独列为 0,并进异常表。
## 输出四件套
| 文件 | 内容 |
|---|---|
| `al_主表.csv` | 分摊维度 / 受益对象 / 分摊标准值 / 分摊比例 / 分摊金额 / 状态 |
| `al_分摊明细.csv` | 费用项目 × 受益对象 的逐笔分摊额(可回原表逐笔核对) |
| `al_异常表.csv` | 标准缺失对象、金额缺失行、口径冲突(带风险等级) |
| `al_校验表.csv` | 分摊前总额、已分摊合计、守恒差异、摊标准口径 |
| `fin-log.jsonl` | 处理日志(追加) |
## 用法
```bash
PY="<python 3.8+ 路径>" # 纯标准库
"$PY" <skill目录>/scripts/allocate.py 共同成本表.xlsx --execute
```
**默认不写盘**——不加 `--execute` 只打印预览。确认分摊额与预期一致后再加 `--execute`。
```bash
"$PY" allocate.py 共同成本表.xlsx --out-dir _out --operator 张三 --execute
```
## 真实输出
```
方案:共同成本表.xlsx(7 行,2 个维度:部门、产品线)
各维度受益对象:部门(4) | 产品线(2)
--- 分摊结果(分摊前总额 294000.00 元)---
部门 销售部 标准=40.0 比例=40.00% 分摊额= 73600.00 已分摊
部门 技术部 标准=40.0 比例=40.00% 分摊额= 73600.00 已分摊
部门 市场部 标准=20.0 比例=20.00% 分摊额= 36800.00 已分摊
部门 新设事业部 标准=缺失 比例=— 分摊额= 0.00 未参与分摊(分摊标准缺失或为 0)
产品线 智联系列 标准=3.0 比例=75.00% 分摊额= 82500.00 已分摊
产品线 云图系列 标准=1.0 比例=25.00% 分摊额= 27500.00 已分摊
--- 守恒校验 ---
分摊前总额 294000.00
已分摊合计 294000.00
守恒差异 0.00 通过
--- 异常表(1 条)---
[高] 部门(1 个对象) / 部门 分摊标准缺失或为 0,未参与分摊;本维度 184000.00 元已全额分摊给其余有标准的对象,该对象分摊额为 0,需补标准后重跑
```
失败路径(实测,全部拒绝输出并给出原因):
```
【算不出】有 1 行金额为负(退货冲销 行2 为 -5000.0 元),疑似红字冲销或方向填反;本包不做冲销分摊
【算不出】维度「部门」下没有任何一个受益对象有有效的分摊标准值,无法分摊
【算不出】维度「部门」下受益对象「销售部」出现了两个不同的分摊标准值:40.0 与 55.0
【算不出】第 1 行「厂房租金」缺少受益对象,本包拒绝按空对象分摊
【算不出】表里找不到分摊标准值列(可用:分摊标准值 / 标准值 / 权重 / 分摊标准 / 标准额 / 人数 / 面积)
```
## 关键设计(容易踩的坑)
1. **守恒是硬断言,不是提示**。先按费用项目逐笔拆到对象,再把同一对象的各行相加;
每笔的尾差落到摊得最多的那一笔上,所以「前 = 各对象之和」必然成立。
一旦差超 0.01 元,`【算不出】`+退出,且**不写主表**。
2. **分摊标准是「对象级」不是「行级」**。同一维度下 A 部门既有标准值 40 又有 55,
本包拒绝——多半是两列口径混了(比如一列是人数列一列是面积列)。
3. **标准缺失的对象不进分母**。本维度总额会全额分给其余有标准的对象,
缺失对象分摊额单列 0.00 并在异常表标高风险;**不是**把它的钱平摊给别人。
4. **多维度各自独立**。部门维度、产品线维度各有各的总额与分母,互不影响。
5. **金额为负一律拒绝**。红字冲销请在凭证层处理干净再跑,本包不替你做冲销分摊。
## 「拒绝权」:什么情况下拒绝执行
| 情况 | 处理 |
|---|---|
| 分摊前总额 ≠ 各对象分摊额之和(差 > 0.01 元) | 拒绝输出 |
| 同一维度同一受益对象出现两个不同的分摊标准值 | 拒绝 |
| 某维度受益对象为空 | 拒绝 |
| 某维度没有任何一个有有效标准的受益对象 | 拒绝 |
| 金额为负 / 分摊标准值为负 | 拒绝 |
| 缺少必须的列(费用项目、金额、受益对象、标准值) | 拒绝 |
## 人工复核(必读)
- 分摊标准值填的是「人数 / 面积 / 预算 / 工时」,不同口径结果完全不同,看表先确认口径
- 分摊标准值是**期初一次性的**,本期中途新增的部门按期末口径填会有偏差
- 未参与分摊的对象要人工确认:是真的不需要分,还是标准值漏填了
- 分摊结果只影响成本归集口径,不改动任何凭证,最终入账科目仍由财务确认
## 相邻路线转交
| 用户要做的事 | 转交给 |
|---|---|
| 成本归集后怎么进账簿 | `accounting-entry-check` |
| 分摊后的成本怎么进损益表 | `financial-statement-build` |
| 多张表合并成一张共同成本表 | `fin-table-merge` |
| 分摊口径与原始数据不一致 | `fin-data-mask` / `statement-cross-check` |
## 可直接复制的说法
```text
把这张共同成本表按部门 / 产品线分摊一下,分摊标准值在最后一列。
分摊前总额必须等于各受益对象分摊额之和,差超过一分钱就拒绝输出,别给我一个凑出来的数。
哪个部门的分摊标准值是空的或者 0,单独列出来告诉我,不要按 0 分摊糊过去。
同一列里如果同一个部门填了两个不同的标准值,直接说口径冲突,不要替我猜。
```
## 做完怎么算完成
- [ ] 校验表里的「守恒差异」为 0.00
- [ ] 每个维度都确认了分摊标准口径(人数 / 面积 / 预算 / 工时)
- [ ] 所有「未参与分摊」的对象都人工确认过(是真不用分,还是标准漏填)
- [ ] `al_分摊明细.csv` 逐笔金额能回到原表的待分摊金额
- [ ] 没有出现「有金额但没受益对象」的行
---
本 Skill 采用 BUSL-1.1 许可(源码可见,可自由使用)。
版权所有 © 2026 律令科技(深圳)有限公司(@lexord-technology)。
本技能由律令科技(深圳)有限公司开发,**财友云(caiyouyun.cn)**发布与展示。
允许个人及企业内部免费使用、复制、修改,包括内部生产环境。
未经书面许可,不得将本 Skill 或其修改版作为商业服务对外销售、转售或提供托管服务。
各版本发布之日起 4 年后自动转为 Apache License 2.0。详见随包 `LICENSE.md`。按产品/客户/区域/月份拆解毛利与贡献边际
账龄分段、坏账计提测算、客户风险排序
预算 vs 实际的额差率差与预警清单
盈亏平衡点、安全边际、敏感性与情景测算
月度经营分析的数字、结论与图表数据源一次产出
按部门/项目/费用类型三维汇总,本期-上期-变动额-变动率,未审批与缺发票不入正式汇总,超预算单列
理论期末=期初+入库-出库,与系统/盘点/账面三方比对,负库存与异常单价优先,按影响金额排序
按部门/项目/供应商汇总增长贡献,区分一次性与持续性费用,识别单价上涨/重复采购/供应商集中
一句话结论+5 个核心指标+3 个关键变化+风险影响+待决策事项,事实/假设/建议三段分开,每个结论带数据依据
按客户算收入成本毛利毛利率,亏损客户与成本缺失单列标高风险,不按 0 成本算毛利
按发票号码+代码+金额+日期组合查重,拦住重复报销与重复入账
进销项发票台账,按月/客户/税率汇总,导出 CSV
SKILL.md 为准。