经营财务官(operating-finance-officer)
面向企业一号位与财务负责人,把「账上没钱、业财两张皮、预算僵化、资本缺位、合规裸奔」还原为「在哪一层失速、先动哪里、动完怎么复盘」。产出物是一套可复核的诊断结论与引擎组合处方,不是一堆财务知识。
先看这里(五档入口)
| 你现在的情况 | 直接走这里 |
|---|---|
| 不知财务病根在哪 | 跑 --diagnose 六层诊断,一句话定位主断点 |
| 已有断点、想知道动哪个引擎 | 看 §二 断点→引擎对照表,按表选引擎 |
| 想知道某件事该不该做 | 跑对应量化命令(现金流/客户分级/保本点/预算/审批/能力) |
| 想知道现金流安不安全 | 跑 --cash-buffer 现金流安全水位;客户给不给发货跑 --customer-grade |
| 想知道自己这个财务官该练什么 | 跑 --ability-assess 五项能力自评 |
一、决策基准(一条准绳)
经营财务成败的准绳不是报表做得多漂亮,是企业既活得下去、又跑得动。利润是面子、现金流是里子——企业不是死于亏损,是死于「盈利性破产」;资本是乘法、合规是底盘——利润只做加法,资本运作才做乘法,而没有合规底盘,跑得越快死得越惨。这条准绳贯穿全部引擎与复盘,是唯一不可让步的判断依据。
二、断点 → 引擎对照表(诊断后的选配逻辑)
| 主断点 | 优先启动的引擎 | 核心追问 |
|---|---|---|
| L1 战略与资本错配 | 资本运作与价值再造引擎(D) | 资本结构是在支撑战略,还是在拖累战略 |
| L2 业财两张皮 | 业财融合与经营导航引擎(B) | 财务数据,业务听得懂、用得上吗 |
| L3 盈利质量低下 | 现金流与极限生存引擎(A) | 账面有利润但口袋没现金,这是真赚钱吗 |
| L4 预算配置僵化 | 全面预算与资源敏捷分配引擎(C) | 还在用去年的话术,分今年的钱吗 |
| L5 资本运作缺位 | 资本运作与价值再造引擎(D) | 只靠自身利润滚动,没用好外部资本杠杆吗 |
| L6 合规与内控裸奔 | 合规底盘与内控避险引擎(E) | 跑得快,但底裤有没有穿好 |
选配铁律:主攻一个、修补一个、观察一到两个,其余进观察名单。L6 失速分超 3 分无条件一票否决、先补合规底盘;L3 失速分最高先保命(启动引擎A);一年最多同时跑三个引擎,五个全上是经营过载。
三、全部命令(十一条)
入口脚本 scripts/operating_finance_guard.py。命令分三类:诊断(1 条)、判断(6 条)、维护(4 条)。
| 类别 | 命令 | 作用 | 退出码 |
|---|---|---|---|
| 诊断 | --diagnose |
六层 30 题打分(逐题「是/部分/否」自动计分,或直接给六层总分),定位主/次断点,L6 超阈值硬阻断 | 0 / 2 |
| 判断 | --cash-buffer |
13 周现金流滚动(期初余额 + 每周净流滚动推算,或直接给期末余额),三档判定(安全/黄色预警/红色警报),安全水位 1.5 倍刚性支出 | 0 / 2 |
| 判断 | --customer-grade |
客户 A–D 四类分级(逾期天数 + 毛利占比,取更危险档);C/D 判定未通过 | 0 / 2 |
| 判断 | --breakeven |
保本点 / 边际贡献 / 红黄绿灯审批;红灯一票否决 | 0 / 2 |
| 判断 | --budget-allocate |
三池 + 里程碑 3-3-4 分期拨付判定;未达标冻结 | 0 / 2 |
| 判断 | --approval-matrix |
资金支付审批矩阵(1万/10万/100万/董事会四档红线),信息性输出恒通过 | 0 |
| 判断 | --ability-assess |
经营财务官五项能力自评;缺子项/混给/越界报错 | 0 |
| 维护 | --schema |
机读契约 JSON | 0 |
| 维护 | --audit |
数字一致性核对 | 0 / 1 |
| 维护 | --self-test |
自检 | 0 / 1 |
| 维护 | --version |
版本号 | 0 |
命令均接受 --json 输出机读结果(机读结果统一带 mark 与 exit 字段)。结果标记三态词汇,全命令一致:
- ✓ 通过——照结论执行(退出码 0);
- ⚠ 预警——附条件执行或需预案,暂不阻断(退出码 0);
- ✗ 未通过——硬阻断或判定未通过(退出码 2)。
退出码语义:0=通过或预警;2=硬阻断或判定未通过;1=仅自检/一致性核对失败。缺字段 AI 主动问,不让用户猜格式。上面这张表是给 AI 与维护者看的执行契约,不是给用户背的。
四、单一事实源(数字口径,自检钉住)
本技能所有「自称数字」由一个脚本常量区和 references/09-数字台账.md 双源钉住,自检与 --audit 任一处漂移即红:
- 引擎 5 个(A–E);定位矩阵 6 层(L1–L6),每层 5 题,共 30 题诊断;
- 工具卡 6 张(工具 01–06);命令 11 条;references 10 份;
- 客户四类(ABCD);审批四档红线(1 万 / 10 万 / 100 万 / 董事会);安全水位 1.5 倍刚性支出;现金流预警线 = 安全水位 ÷ 1.5(即刚性支出 × 1.0);
- 五项能力;复盘三级(月度/季度/年度);里程碑 3-3-4。
五、文件索引(references 10 份)
| 编号 | 内容 |
|---|---|
| 00 | 经营财务失速诊断矩阵(地基,六层 30 题) |
| 01 | 引擎A 现金流与极限生存 |
| 02 | 引擎B 业财融合与经营导航 |
| 03 | 引擎C 全面预算与资源敏捷分配 |
| 04 | 引擎D 资本运作与价值再造 |
| 05 | 引擎E 合规底盘与内控避险 |
| 06 | 复盘操作系统(月度/季度/年度) |
| 07 | 经营财务官能力模型(五项自评量表) |
| 08 | 工具卡全集(6 张) |
| 09 | 数字台账(所有数字口径单一事实源) |
六、交接与转介
- 融资条款博弈、估值定价 → 转
capital-strategy-officer/valuation-pricing-officer; - BP 全文撰写 → 转
tourongwan-bp-designer; - 上市合规专项整改 → 转
ipo-escort; - 投资尽调 → 转
due-diligence-officer; - 财务三张表建模 → 转
financial-model-officer; - 转介时出具交接单:断点结论、已做诊断、待承接方回答的问题。
七、自检与版本
自检 --self-test 覆盖六组:常量单一事实源(T)、命令功能真实调用(A)、容错负向(N)、真实子进程回归——按命令行整包调用验证 --json 必有输出且可解析、退出码按语义、mark/exit 字段齐备(R)、文档一致性精确锚点(D),全部通过方为可用。数字台账(references/09)是本技能的唯一数字事实源,任何数字改动须同步脚本常量区并跑 --audit。
八、完整操作示例
示例 1:一号位月度体检(诊断 → 选引擎 → 查现金流)
第一步,跑六层诊断(失速分来自 references/00 逐层打分):
$ python3 scripts/operating_finance_guard.py --diagnose '{"L1":3,"L2":4,"L3":2,"L4":4,"L5":1,"L6":1}'
六层失速分:…
⚠ 诊断结论: 当前最致命的财务断点是 L2(业财两张皮)、L4(预算配置僵化);L6 得分 1,未触发一票否决。优先启动 L2(业财两张皮)、L4(预算配置僵化)对应引擎。
主断点: L2(业财两张皮)、L4(预算配置僵化) → 引擎B 业财融合与经营导航、引擎C 全面预算与资源敏捷分配
第二步,按 §二 选配铁律:主攻 L2 对应引擎B,修补 L4 对应引擎C,其余进观察名单。第三步,顺手验现金流(当月刚性支出 50 万):
$ python3 scripts/operating_finance_guard.py --cash-buffer '{"weekly_balances":[120,95,80,110],"rigid_monthly":50}'
安全水位:75.0(刚性支出 × 1.5);预警线:50.0(刚性支出 × 1.0)
最低周期末余额:80(第 3 周)
✓ 结论: 安全:未来 4 周最低余额 80 不低于安全水位 75.0,无需启动极限生存模式。
三件事一次说清:先动哪个引擎、现金流撑几周、要不要进入极限生存模式。
示例 2:销售要给逾期客户发货(客户分级 → 红灯否决)
$ python3 scripts/operating_finance_guard.py --customer-grade '{"overdue_days":120,"margin_pct":18}'
级别 | 逾期天数 | 贡献毛利占比 | 处置 …
逾期天数 120 天 → 档 C;贡献毛利占比 18% → 档 B
✗ 客户级别: C · 危险客户(系统锁单,停止发货)
✗ 判定未通过:该客户已被锁单或移交法务(退出码 2)。
退出码 2、标记 ✗:业务再大腕也发不了货,ERP 强制锁单;要恢复须先清欠降到 B 档以内再复跑本命令。
九、常见问答
- Q:现金流判定为什么是三档而不是两档? A:两档会漏掉「还没断、但已跌破安全水位」的中间地带。三档 = 安全(≥ 水位 1.5 倍刚性)/ 黄色预警(跌破水位、未破刚性线,须做预案)/ 红色警报(跌破刚性线本身,极限生存)。预警线 = 安全水位 ÷ 1.5。
- Q:
--cash-buffer必须给满 13 周吗? A:不强制。两种给法:① 直接给weekly_balances(未来各周期末余额数组,任意非空);② 给opening_balance(期初余额)+weekly_net(每周净流,固定给一个数、逐周波动给数组),命令逐周滚动推算期末余额,默认推 13 周(weeks可调)。周数越少判断越短视。 - Q:
--diagnose怎么逐题作答? A:给answers:{"answers":{"L1":["是","部分","否","否","是"], …,"L6":[…]}},每层 5 题,命令按「是=1/部分=0.5/否=0」自动汇总成层分再定位断点;也可直接给六层总分{"L1":2,…}。逐题与总分不能混给。 - Q:客户两个维度分档冲突听谁的? A:内置规则取更危险的一档(逾期 120 天 + 毛利 18% = C 不是 B)。冲突不用人工裁决,命令已裁决。
- Q:
--breakeven不给fixed_cost会怎样? A:只判红黄绿灯与边际贡献率,不算保本销售额;要保本点就把固定成本给上。 - Q:能力自评给总分还是子项? A:二选一:
a1(0–25 总分)或a1_1…a1_5(各 0–5)。混给、缺子项、子项越界都会报错,不会静默按 0 算。 - Q:L6 正好 3 分,一票否决吗? A:不否决。判据是「失速分 > 3」即达到 4 分才触发;3 分属高危但仍在「修补」档,进观察名单加密复评。
十、错误用法修正指南
| 报错或现象 | 原因 | 怎么改 |
|---|---|---|
诊断输入须为 JSON 对象 |
--diagnose 后没接 JSON 或格式错 |
参照 §八 示例,键 L1–L6、值 0–5 |
缺 L3 层失速分 |
六层只给了部分 | 六层(L1–L6)都要给,每层 0–5 |
须提供 safety_line,或提供 rigid_monthly |
现金流判定缺阈值 | 给 safety_line,或给当月刚性支出自动 × 1.5 |
margin_pct …须为 -100–100 的数 |
毛利占比超界(如 150) | 用百分数 0–100(负毛利用负数) |
margin_redline …须为 0–1 之间的比例 |
红线写成 20(百分数) | 写 0.20,不写 20 |
prev_met 须为布尔值 |
写成字符串或数字(如 yes、1) | 用 true / false(JSON 布尔字面量) |
总分(a1)与子项分同时给出 |
混给两种计分 | 二选一,删掉另一种 |
得分不全:…缺 2 个子项 |
只给了部分子项分 | 补满 5 个子项,或直接给总分 |
| 退出码 2 但没看到 ✗ | 只看了退出码没看机读字段 | 机读看 mark/exit 字段,人读看 ✗ 行 |