物业公共能耗分摊核对(免费版)
完全本地运行:引擎已经打包在本技能里(
engine/目录)。 核对过程不需要联网、不需要 API Key、没有调用次数上限。
什么时候用
谁会在什么时候用:物业项目经理、物业会计、片区财务。每个月出账单之前都要做一遍 —— 先把公共区域的电和水(公共照明、电梯、水泵、绿化)抄总表、按面积或户数摊到各楼栋 / 各户, 然后才发账单、才上公示栏。月底补抄、季度复核、街道检查要交台账时也用它。
什么时候必须停一下:这张表算错只有两个方向 —— 少摊(钱收不回来,物业自己贴)或多摊(业主在群里截图、拒缴、投诉到街道)。 两个方向都会在催缴单、公示栏和投诉件上被翻出来,所以发出账单前值得机械核一遍。
这张表能核出什么:公共能耗抄表与分摊明细表的逐行算术、合计勾稽、比例合计、重复与空缺。
每条结论都带原文行号,可被第三方用同一口径复算; 材料不足时不给结论,会明确列出还缺什么。
这个免费版查什么
免费版执行 6 项检查:
| # | 检查项 | 判据 |
|---|---|---|
| 1 | 总表读数差与用量不符 | 本期读数 − 上期读数 ≠ 本期用量 |
| 2 | 分摊额复算不符 | 分摊额 ≠ 分摊能耗量 × 分摊单价 |
| 3 | 各户分摊合计与公共总费用不符 | 同一「期间 + 费用项目」下各户分摊额 / 分摊能耗量合计 ≠ 公共总费用 |
| 4 | 分摊比例合计不等于100% | 同一组的分摊比例合计 ≠ 100% |
| 5 | 重复房号、空缺列与占位符 | 关键列空着 / 填「待填」等占位符;同一组同一楼栋出现两行 |
| 6 | 分摊额超过公共总费用 | 单户分摊额 > 该组公共总费用(逐行上限) |
本版本不包含(会如实列在输出的 checks_not_run 里,不会被默认值顶替):
- 跨楼栋 / 跨期间汇总台账(按期间、按楼栋两个维度的汇总视图)
- 按多摊金额排序的处理清单(多摊在前、少摊在后,可直接拿去改账)
- 差异归因:总表读数 / 损耗分摊 / 单价口径 / 基数口径 逐类排查
- 损耗分摊额勾稽与 分摊口径 ↔ 分摊基数 口径一致性
跑 node scripts/run.mjs --sample --json 会打印本次实际执行了哪些检查项。
怎么用
node scripts/run.mjs --sample # 先看样例(干净样例 0 问题)
node scripts/run.mjs --input 你的材料.json # 跑自己的材料
node scripts/run.mjs --input 你的材料.json --json # 机器可读
入参写法(把表头和若干行一起复制进来,Tab 分隔最稳):
{"text": "所属期间\t费用项目\t楼栋\t上期读数\t本期读数\t本期用量\t分摊能耗量\t分摊单价\t公共总费用\t分摊基数\t分摊口径\t分摊比例\t分摊额\n2026-06\t公共照明\t1号楼\t1800.00\t2400.00\t600.00\t600.00\t6.00\t7200.00\t500.00\t建筑面积㎡\t50.00%\t3600.00"}
出参(--json)
| 字段 | 含义 |
|---|---|
status |
success 已执行检查 / insufficient_input 材料不足 |
result.scope.rows |
解析出的明细行数 |
result.scope.checks |
本次实际执行的检查项(免费版 6 项) |
result.scope.checks_not_run |
本版本没有执行的检查项(4 项,如实列出) |
result.scope.shared_total / apportioned_total |
公共总费用合计 / 分摊额合计(同一组的总额只算一次) |
result.findings[] |
每条结论:line(原文行号)/ level(P0 / P1)/ category / message |
result.summary |
total / p0 / p1 / verdict(NO_ISSUE_FOUND / NEEDS_REVIEW / ERROR_FOUND) |
| 退出码 | 0 已执行 / 1 缺入参 / 3 材料不足 / 4 文件读不到 / 9 未预期错误 |
常见错法(本产品专属)
- 只核了分摊额,没回核总表读数差:分表用量抄错一位,全组比例都跟着错,但分摊额自己乘自己是"平"的。 本工具第 1 项就是拿 本期读数 − 上期读数 和本期用量对。
- 分摊比例加起来不是 100%:常见于漏抄一户、或把某户比例从 30% 手改成 20% 却忘了补回去。 第 4 项按「期间 + 费用项目」分组算合计,差 0.05 个百分点以上就报。
- 公共总费用在每一行都写了一遍,合计时被加了 N 次:所以本工具去重后再加,
scope.shared_total是去重口径;你自己另算一遍时要注意别把 3 行 × 7200 加成 21600。 - 同一户出现两行:多半是复制上一行改数没改完,第二行是"清零版"。 第 5 项按 期间 + 费用项目 + 楼栋 认重复。
- 单户分摊额超过了整组公共总费用:常见于把"元"当成"分"填、或把合计值填进了单户行。 第 6 项逐行守住这个上限。
不包含什么
- 不判断公共总费用本身真不真实:物业自用电(办公室、门岗、广告位、员工宿舍)有没有混进公共能耗,以供电 / 供水公司账单和物业账为准。
- 不判断分摊方式是否合法有效:按建筑面积 / 按户数 / 按人数 / 阶梯、各业态不同系数,以物业服务合同与管理规约为准。
- 不判断空置房、未售房、开发商产权房、公共部位该不该分摊、优惠口径是多少。
- 不做跨楼栋 / 跨期间汇总台账、不做按多摊金额排序的处理清单、不做差异归因(这些是完整档的能力)。
- 不读物业收费系统 / Excel / 电表照片:需要你先导出或抄成文本贴进来。
需要完整档时(可选)
本免费版是完整可用的核心产出,本版本不包含下面这些项:
- 跨楼栋 / 跨期间汇总台账(按期间、按楼栋两个维度的汇总视图)
- 按多摊金额排序的处理清单(多摊在前、少摊在后,可直接拿去改账)
- 差异归因:总表读数 / 损耗分摊 / 单价口径 / 基数口径 逐类排查
- 损耗分摊额勾稽(本期用量 × 损耗率)与 分摊口径 ↔ 分摊基数 口径一致性
同名工具的完整档是另一个独立商品(条款与条件以它自己的商品页为准);两档的差别就是上面这些,没有别的。
边界(请务必知道)
本工具只核这张表内部的算术与勾稽:表里给的总额、基数、单价、比例以你填的为准。
材料不足(空文本 / 只有表头 / 缺必需列 / 类型不对)时不给结论,也不会输出「未发现问题」——
未执行的检查项会如实列在 scope.checks_not_run 里,不会被默认值顶替。
