Files
SBrainCO/docs/2026年4月运营分析指标与展现审查及利润提升整改方案.md
T

47 KiB
Raw Blame History

2026 年 4 月运营分析、指标展现审查与利润提升整改方案

审查对象:马兰拉面数字化运营管理平台(前端、后端 API、PostgreSQL 分析层与当前页面)
数据期间:2026-04-01 <= 营业日 < 2026-05-01
数据复核时点:2026-07-31
管理目标:从“展示数据”升级为“发现问题 -> 量化利润机会 -> 生成动作 -> 验收收益”
重要声明:本报告中的“利润”均指 门店贡献利润估算,不是财务报表净利润。


一、执行摘要

1. 4 月经营结论

4 月严格关账口径下,公司实收 56,156,726.95 元,账单 1,669,925 笔,客单价 33.63 元,优惠额 14,218,795.28 元,优惠率 20.20%,共有 91 家门店产生销售。

当前最需要解决的不是“再增加更多图表”,而是以下四个问题:

  1. 利润口径不成立。 页面将“实收 - 食材成本 - 门店经营费用”称为“净利润”,但未纳入总部费用、税费、折旧摊销、财务费用等;同时接口混入 5 月 1 日收入,并把缺失成本费用按 0 处理,导致页面利润被高估。
  2. 成本是最大的可控利润来源,但两套实际成本无法对账。 菜品成本报表实际成本为 1,654.70 万元,库存倒挤食材成本为 2,110.12 万元,相差约 455.42 万元。在成本桥建立前,不能用单一成本率直接评价所有门店。
  3. 经营动作没有形成真实验收。 当前 141 条任务中有 60 条显示“已验收”,但与模拟脚本生成结果一致;经营稳定性任务的当前值、基准值和目标值又全部为空,因此不能作为改善闭环证据。
  4. 页面偏重排名和通用建议,缺少统一利润机会池。 管理者能看到“谁高谁低”,但不能直接回答“问题金额是多少、先做什么、负责人是谁、30 天能回收多少、如何验收”。

2. 4 月利润基线

口径 门店数 4 月实收 门店贡献利润估算 贡献率 亏损门店
全部销售门店 91 56,156,726.95 不完整 不完整 不可直接判定
费用已匹配门店 89 56,015,667.13 3,102,628.00 5.54% 15 家
标准门店且费用已匹配 85 54,967,372.73 4,007,746.07 7.29% 13 家
特殊业态且费用已匹配 4 1,048,294.40 -905,118.07 -86.34% 2 家

其中 15 家有销售且贡献利润为负的门店,亏损合计 -2,162,429.23 元73 家盈利门店正贡献合计 5,265,057.23 元

特殊业态包括机场、火锅、总部基地、快手及商城等门店,其收入结构、人员和费用承担方式与标准门店不同,必须单列分析,不能参与标准门店排名和统一阈值考核。

3. 30 天整改目标

以 85 家费用已匹配标准门店为主经营盘,建议设定:

目标 4 月基线 30 天验收目标
标准门店贡献率 7.29% 不低于 10.00%
可验证月度贡献利润改善 0 不低于 1,500,000 元
标准亏损门店数 13 家 不超过 5 家
灰色成本口径门店 6 家 0 家
成本差异回收 可比差异 3,437,648.33 元 至少回收 30%
标准门店人工率 24.83% 不高于 24.00%
标准门店能源率 5.31% 不高于 5.00%
高优惠门店 11 家 降至 0 家或完成书面例外审批
模拟验收记录 60 条 经营看板中不再计为真实验收

已识别的五类理论月度机会合计约 1,883,995.03 元。考虑项目之间重叠、促销需求弹性和数据修正,建议经营承诺值取 不低于 150 万元,而不是直接承诺全部理论值。若实现 150 万元,标准门店贡献利润可由 400.77 万元提升至约 550.77 万元,贡献率约 10.02%


二、审查范围与统一口径

1. 时间口径

本报告只分析 2026 年 4 月:

business_date >= DATE '2026-04-01'
AND business_date < DATE '2026-05-01'

账单营业日沿用应用现有 analytics.v_store_daily 的定义,即 closed_at::date。不得使用只有开始日期、没有结束日期的查询,也不得把 5 月 1 日视为 4 月数据。

2. 门店口径

范围 数量 处理规则
有 4 月销售门店 91 家 用于营收、账单、优惠和客单分析
标准门店 86 家 用于标准经营模型和门店横向对标
特殊业态 5 家 单列损益模型,不与标准门店直接比较
有费用匹配门店 89 家 可计算门店贡献利润估算
缺失费用门店 2 家 只展示营收,不进入利润排名

缺失费用的门店为:

门店 4 月实收 当前处理
1098 关东店铜锅聚 111,502.98 补费用与成本前不得计算利润
1110 甄选商城店 29,556.84 特殊业态,补齐独立损益口径

3. 利润口径

本报告采用:

门店贡献利润估算 = 4 月实收 - 库存倒挤食材成本 - 已映射门店营业费用

它只能用于门店经营改善,不等于财务净利润。要得到财务净利润,至少还需建立以下桥接:总部管理费用、中央厨房及配送中心损益分摊、折旧摊销、税费、财务费用、资产减值、营业外收支。

4. 证据等级

等级 定义 可用于什么决策
A:已对账 严格 4 月、门店范围明确、可追溯到事实表 可用于经营会基线和任务验收
B:待桥接 月份明确,但存在成本、费用或组织映射差异 可用于发现机会,不可直接考核
C:异常/模拟 数据口径异常、字段缺失或由模拟脚本生成 只生成数据修复任务,不评价店长

三、4 月经营全景

1. 营收与顾客

指标 4 月值 结论
实收 56,156,726.95 A 级基线
账单数 1,669,925 A 级基线
客单价 33.63 需结合餐段、渠道和门店类型判断
消费额 70,375,522.23 实收与优惠的分母基线
优惠额 14,218,795.28 让利规模较大,应转为活动级贡献分析
优惠率 20.20% 11 家门店超过 25%
销售门店 91 与费用、人事组织范围尚未统一

当前数据只有 4 月主分析月,无法可靠判断同比、环比和趋势改善。日趋势可描述月内波动,但不能把单月高低直接解释为增长或衰退。

2. 会员

指标 会员 非会员 经营含义
账单数 231,438 1,438,487 会员账单占比仅 13.86%
实收 8,343,565.92 47,813,161.03 非会员仍是绝对收入主体
客单价 36.05 33.24 会员客单高约 2.81 元
优惠率 16.59% 20.80% 会员并非依赖更高折扣获得高客单

4 月门店加权复购率为 33.45%。会员表现说明“提高可识别会员占比、促进二次到店”比无差别加大折扣更有可能改善收入质量,但当前还缺会员获取成本、首购来源、30/60/90 日 cohort 和贡献毛利,不能直接计算会员 ROI。

3. SKU 结构

ABC 类别 SKU 数 实收贡献 结构判断
A-核心 44 69.87% 必须保障出品、备货与价格纪律
B-成长 77 20.03% 适合搭售、陈列和套餐测试
C-长尾 1,624 10.10% 菜单与原料复杂度过高

补充异常:1,155 个 SKU 月实收低于 1,000 元,844 个 SKU 账单数低于 30,25 个 SKU 净销量不大于 0。当前 ABC 已能发现长尾,但应加入“贡献毛利、独有原料、库存占用、报损、替代关系”后再决定停用,不能只按销售额一刀切。


四、现有指标体系审查

1. 总体评价

应用已经覆盖营收、成本、费用、平台、会员、SKU、排班、风险、任务、中央厨房、配送对账和 BOM 穿透,分析广度较完整;但核心问题是指标之间尚未围绕同一利润公式连接起来。

领域 当前已有指标/页面 主要问题 应补充的决策指标 优先级
营收 实收、账单、客单、餐段、渠道、门店排名 部分接口混入 5 月 1 日;缺少可比店与日历效应 同店日均、餐段产能、渠道净贡献、预算差异 P0
利润 利润瀑布、门店利润排名 “净利润”命名错误;缺失费用按 0;收入跨月 门店贡献利润、财务净利润桥、覆盖率、置信等级 P0
食材成本 理论/实际、门店差异、菜品差异、库存 两套实际成本相差约 455 万元 成本桥、采购价差、用量差、盘点差、报损差 P0
费用 17 个科目、人工/租金/能源、门店贡献 费用结构 3,696.08 万元与门店映射 3,181.18 万元范围不同 未分配费用、成本中心到门店桥、固定/变动费用 P0
优惠 优惠额、优惠率、门店排名 只有让利,没有活动增量和利润 活动贡献利润、增量订单、获客成本、复购回收期 P1
平台 收入、折扣、佣金、平台成本率 两套佣金口径不一致;“ROI”缺乏反事实 佣金后贡献、活动增量、客单、复购、平台依赖 P1
会员 会员/非会员、复购率 接口混入 5 月 1 日;缺 cohort 与 LTV 首购转二购、30/60/90 日留存、会员贡献毛利 P1
SKU ABC、品类、搭售、负毛利 销售贡献与原料/库存影响未打通 SKU 贡献利润、独有原料数、菜单复杂度成本 P1
人效排班 人工费用、工时/排班 人事组织 103 个范围与 91 家销售门店不一致 每工时实收、每工时贡献、餐段人岗匹配、加班 P1
风险/质量 零实收、负实收、数据质量状态 状态判定忽略已展示的关键异常 异常金额、异常率、影响利润、责任系统、修复 SLA P0
任务闭环 分级、自动任务、周检、月验收 60 条为模拟验收;部分任务三项数值均为空 实际值快照、证据链接、财务确认收益、反弹检查 P0
供应链 中央厨房、配送对账、BOM 穿透 方向正确,但尚未进入统一 4 月利润桥 采购价差、加工损耗、配送差异、BOM 用量差 P1

2. 应建立的一级指标树

门店贡献利润
├── 实收
│   ├── 账单数
│   ├── 客单价
│   ├── 餐段与渠道结构
│   └── 优惠与活动增量
├── 食材成本
│   ├── 标准/BOM 成本
│   ├── 采购价格差异
│   ├── 实际用量差异
│   ├── 盘点与报损差异
│   └── 中央厨房及配送差异
└── 门店营业费用
    ├── 人工
    ├── 租金
    ├── 水电燃气
    ├── 平台佣金
    └── 其他可控费用

所有二级指标都应回答三个问题:对贡献利润影响多少、哪个门店/菜品/餐段负责、采取什么动作可以在何时回收。


五、当前页面展现问题

1. 影响决策的关键问题

页面/模块 当前现象 风险 整改方式
总部驾驶舱 显示“实际净利润”约 345.41 万元、6.13% 跨月收入与缺失费用造成高估,且名称误导 改为“门店贡献利润估算”;显示月份、覆盖 89/91、缺失金额
营收页 TOP10 副标题为“赚钱最多的 10 家门店” 把收入等同于利润 改为“实收最高”;并列显示贡献利润和贡献率
费用页 页面范围出现 89 家与 91 家并存 分母不一致,排名失真 所有卡片显示“销售/费用匹配/可比”三种覆盖数
费用结构 费用结构合计 3,696.08 万元,门店映射合计 3,181.18 万元 约 514.90 万元未桥接,无法解释到门店 增加“未分配成本中心”桥接表,不强行摊入门店
排班页 按 103 个人事组织汇总 与 91 家销售门店、86 家标准门店不同 建组织到门店映射,未匹配组织单列
数据质量页 有 2.14 万零消费、650 笔负实收仍显示“正常” 管理者误以为数据可直接使用 状态应同时考虑数量、金额、比例和 SLA
平台页 展示 ROI/经济性结论 没有对照组、增量销量、佣金后贡献和复购 改称“平台成本与收入”;满足因果数据后再展示 ROI
任务页 60 条显示已验收 模拟数据被当成真实结果 增加 data_origin,模拟记录默认排除经营看板

2. 展现结构应从“排名”改为“经营工作台”

建议总部首页首屏固定为:

  1. 4 月贡献利润基线、覆盖率和数据置信状态。
  2. 按金额排序的利润机会池,而不是只有红黄绿门店数。
  3. P0 数据问题、P1 经营问题、责任人、截止日和预计收益。
  4. 本月已确认收益、待财务确认收益、反弹风险。
  5. 标准门店/特殊业态切换,默认只比较标准门店。

图表下钻链应统一为:公司 -> 业态/区域 -> 门店 -> 餐段/渠道 -> SKU/原料 -> 账单或单据证据


六、数据与口径风险

1. 4 月接口越界

营收相关接口只有 business_date >= DATE '2026-04-01',没有 < DATE '2026-05-01',导致页面额外纳入 5 月 1 日数据。当前页面相关范围约为 56,367,105 元,严格 4 月应为 56,156,726.95 元

受影响位置包括:

  • server/src/routes/data.ts:570 渠道收入
  • server/src/routes/data.ts:595 餐段收入
  • server/src/routes/data.ts:615 门店营收排名
  • server/src/routes/data.ts:641 日度营收汇总

整改:所有 API 必须接受 month,后端统一换算成 [month_start, next_month_start),禁止页面各自拼日期。

2. 比率和客单价使用未加权平均

server/src/routes/data.ts:625-626server/src/routes/data.ts:649-650 对门店日优惠率、日客单价直接使用 avg()。这会让低消费日与高消费日、低单量门店与高单量门店获得相同权重,汇总结果不等于真实公司比率。

统一公式应为:

优惠率 = sum(优惠额) / sum(消费额)
客单价 = sum(实收) / sum(账单数)

餐段接口的客单价也应按汇总实收除以汇总账单计算。所有比率禁止“平均的平均”,除非页面明确展示的是“门店平均值”且同时给出分布。

3. 利润高估

server/src/routes/data.ts:503-558server/src/routes/store-expense.ts:11-70 使用跨月累计收入,并通过 COALESCE(cost, 0) 把缺失成本/费用视为 0。相同逻辑下页面显示约 3,454,114.25 元、6.13%;严格 4 月且只统计费用已匹配门店后为 3,102,628.00 元、5.54%,差异约 351,486.25 元

整改:缺失费用时利润字段必须返回 NULL 并标记“不可计算”,不能当作 0;利润卡同时展示覆盖门店和未覆盖收入。

4. 成本桥缺失

成本来源 理论成本 实际成本 差异
菜品成本报表 16,077,398.19 16,547,027.90 469,629.70
库存倒挤门店食材成本 16,306,634.41 21,101,238.04 4,794,603.63

两套“实际成本”相差约 4,554,210.14 元。可能原因包括范围、成本中心、中央厨房、配送、盘点时点、单位换算、菜品匹配和负耗用,必须逐项桥接,不能简单选一套覆盖另一套。

6 家灰色成本口径门店贡献了 1,356,955.30 元成本差异:西安含光、哈马尔罕总部基地、菜百、永利国际、火锅北三环、大悦春风里。这些门店先修口径,不进入店长成本绩效。

5. 数据异常未进入质量状态

严格 4 月存在:

异常 数量/金额 当前风险
零消费账单 21,445 笔 可能是撤单、赠送、导入或状态问题
负实收账单 650 笔 需区分退款、冲销和异常录入
零实收账单 49,236 笔 影响账单数、客单和优惠判断
优惠大于消费 653 笔 需检查字段定义和冲销逻辑
库存负耗用 1,569 行,-96,509.16 元 可能扭曲成本和库存周转

client/src/pages/DataQualityPage.tsx:30-31 的“正常”只检查缺失账单号和门店编码,没有纳入上述异常。

6. 模拟任务被当成经营闭环

当前共有 141 条任务,60 条“已验收”,其数量和操作流程与 server/sql/07_simulate_monthly_review.sql:1-57 完全一致。经营稳定性 11 条任务的当前值、基准值、目标值均为空。

整改:新增 data_origin = actual/simulatedverified_byverified_atevidence_urlfinance_confirmed_amount;历史模拟记录保留用于开发测试,但经营看板默认排除。


七、分领域问题与整改方案

1. 成本:第一利润来源

门店食材实际成本较理论高 4,794,603.63 元。剔除 6 家灰色口径门店后,可比成本差异仍有 3,437,648.33 元。首月只要求回收 30%,对应 1,031,294.50 元

菜品成本报表中共有 788 个菜品,236 个实际成本高于理论,28 个实际负毛利,65 个未匹配销售。前三项差异为:

菜品 成本差异 判断与动作
酱烧琵琶鸡腿饭 336,119.68 销售 11.49 万但实际成本 39.80 万,优先核查单位、配方和导入
草原游牧羔羊肉串 331,402.24 校验采购价、克重、出成率和报损
大片牛肉骨汤牛肉面 215,526.69 核心 A 类菜品,做门店用量差和标准克重专项

执行动作:

  • 每日输出门店 × 原料的采购价差、用量差、盘点差、报损差。
  • 对 TOP20 成本差异菜品进行 BOM、单位换算和标准克重复核。
  • 中央厨房、配送对账、BOM 穿透三个新模块统一写入成本桥,不另建互不相通的“节省金额”。
  • 成本修复验收必须同时满足:库存账实差下降、菜品销量不异常下降、客诉不恶化。

2. 人工与能源:第二利润来源

85 家标准门店人工率为 24.83%,降至 24.00%可释放约 453,846.54 元/月;能源率为 5.31%,降至 5.00%可释放约 172,299.80 元/月

执行动作:

  • 按门店、星期、半小时和餐段计算每工时实收、每工时贡献利润。
  • 排班以客流预测为约束,优先压缩低谷重叠班、无效加班和跨岗空闲,不直接按人数平均裁减。
  • 能源按面积、营业时长和客流做同类店基准;异常店安装日抄表和闭店检查。
  • 租金属于中短期固定成本,高租金率门店应通过保本收入、续租谈判或退出评估解决,不能要求店长一个月内“降租金率”。

3. 优惠:从优惠率改为活动贡献利润

4 月有 11 家门店优惠率超过 25%。在销量不变的静态假设下,将超出部分降到 25%可减少让利 138,833.06 元。这只是理论上限,不能直接作为确定利润,因为取消优惠可能损失订单。

执行动作:

  • 活动最小核算单元改为“门店 × 平台/渠道 × 活动 × SKU × 日期”。
  • 每个活动输出:优惠前收入、优惠、佣金、食材成本、增量订单、佣金后贡献、7/30 日复购。
  • 高优惠门店先做 A/B 或分时段停投,只有贡献利润提高且账单/顾客稳定才扩大。
  • 11 家高优惠门店必须完成保留、调整、停止或书面例外审批。

4. 平台:先对账,再谈 ROI

平台存在两套 4 月附近口径:

来源 平台实收 佣金 佣金率 降至 20%的理论机会
费用映射表 16,655,083.46 3,418,737.82 20.53% 87,721.13
严格 4 月账单字段 16,587,919.70 3,528,362.88 21.27% 210,778.94

两套数据的收入相差 67,163.76 元、佣金相差 109,625.06 元。在对账完成前,机会池采用较保守的 87,721.13 元;两套来源必须按平台、门店、订单和结算期建立差异表。

5. 会员:提高识别和二购,不增加无效折扣

会员客单比非会员高约 2.81 元,优惠率反而低 4.21 个百分点,说明会员经营有提升收入质量的空间。首月应把会员动作聚焦在“识别率”和“首购转二购”,而不是发放更大额通用券。

执行动作:

  • 门店按收银员跟踪会员识别率,但必须排除零实收、退款和员工餐。
  • 以首购日期建立 7/30/60 日复购 cohort。
  • 优惠券按增量贡献利润验收,未产生二购的补贴不计为有效会员投入。
  • 会员增长不纳入首月 150 万元硬收益承诺,先建立可测量基线。

6. SKU:压缩复杂度但保护核心收入

1,624 个 C 类 SKU 只贡献 10.10%实收,菜单、采购、备货和训练复杂度明显偏高。首轮建议:

  • 对“月实收 < 1,000、账单 < 30、非战略品、非套餐组件”的交集生成停用候选。
  • 对 25 个净销量不大于 0 的 SKU 先清理退菜、冲销和单位问题。
  • 停用前计算独有原料、库存金额、替代菜品和贡献利润;停用后观察 4 周销售迁移与客诉。
  • 44 个 A 类 SKU 建立缺货率、出品时长、标准成本偏差的红线监控。

八、重点门店诊断

1. 标准门店主要亏损

门店 贡献利润估算 主要证据 30 天主动作
茂林居店 -336,828.67 食材差异 209,245.35;人工率 43.5%;租金率 23.8% 成本 TOP 原料日清、按餐段重排班、测算保本收入
永利国际店 -221,117.13 灰色成本口径;人工率 40.3%;租金率 28.7% 先修理论成本口径,再决定经营整改
温泉店 -127,137.77 食材差异 95,838.52;人工率 32.5%;优惠率 26.7% 成本回收、低谷排班、高优惠活动停改留
新街口南大街店 -91,687.09 人工率 31.3%;租金率 26.6%;能源率 12.2% 控人效和能源,建立续租/保本收入专项
菜百店 -64,037.17 灰色理论成本口径;租金率 25.5% 先修成本,修复后重算贡献利润
右安门店 -29,883.00 优惠率 27.4%;人工率 29.6%;能源率 9.3% 优惠与平台专项、低谷工时和闭店能源检查

永利国际、菜百以及其他灰色门店的亏损结论属于 B/C 级证据,不能在数据修复前直接追责店长。

2. 门店分组处置

分组 门店/条件 处置原则
P0 数据修复 西安含光、哈马尔罕总部基地、菜百、永利国际、火锅北三环、大悦春风里 48 小时内完成理论成本、业态和费用归属核查
P0 费用补齐 关东店铜锅聚、甄选商城店 补齐费用前不显示利润和利润排名
P1 扭亏 茂林居、温泉、新街口南大街、右安门等可信亏损店 每店最多 2 个核心经营指标,周度验收
P1 结构专项 高优惠 11 家、人工/能源异常店 用金额机会排序,避免平均分配任务
特殊业态 机场、火锅、总部基地、快手、商城 建独立损益模板和阈值,不参与标准店排名

九、利润机会池

机会 4 月基线 目标/假设 理论月度机会 置信度 责任部门 验收证据
非灰色食材差异回收 3,437,648.33 差异 回收 30% 1,031,294.50 中高 商品、供应链、门店 采购/领用/盘点/报损成本桥
标准店人工优化 人工率 24.83% 降至 24.00% 453,846.54 运营、人力 工时、工资、餐段销售与服务质量
标准店能源优化 能源率 5.31% 降至 5.00% 172,299.80 工程、门店 账单/抄表、面积、营业时长
高优惠门店治理 11 家超过 25% 超出部分降至 25% 138,833.06 中低 营销、运营 活动贡献、账单和复购不恶化
平台佣金优化 费用口径 20.53% 降至 20.00% 87,721.13 中低 外卖、采购 平台结算单与订单对账
合计 1,883,995.03 需去重后确认

机会金额不能由任务负责人自行填报后直接计入成果。财务确认规则应为:

确认收益 = 基线单位成本/费率 × 实际业务量 - 整改后实际成本/费用

同时扣除收入损失、替代成本、额外投入,并以同口径、同范围、同营业天数进行比较。同一笔收益只能归属一个项目。


十、30 天整改路线图

P0:第 1-7 天,先让数字可用

动作 负责人 截止 验收标准
所有接口统一 4 月半开区间 数据产品/后端 D+2 API 与 SQL 直查金额误差不超过 0.01
“净利润”改为“门店贡献利润估算” 产品/财务 D+2 全站名称、公式、覆盖范围一致
缺失成本费用返回 NULL 后端 D+2 2 家缺失费用门店不进入利润排名
建立 91/89/86/5 门店范围标签 数据治理 D+3 每个总数均能解释分母和排除项
完成两套实际成本桥设计 财务/供应链/商品 D+5 455.42 万元差异 100%分配到原因类别
修复 6 家灰色成本口径 商品/数据 D+7 灰色门店降至 0,重算结果可追溯
隔离模拟验收 产品/数据库 D+2 经营闭环只统计 actual 记录
升级数据质量状态规则 数据治理 D+5 负数、零值、越界、映射失败均有状态和 SLA

P1:第 8-21 天,执行利润专项

专项 选择范围 核心动作 周度验收
食材差异 可比差异 TOP20 门店/菜品 标准克重、采购价、领用、盘点、报损日清 差异金额周环比下降,销量与客诉稳定
人效 人工率高且餐段低产出门店 半小时客流排班、跨岗、低谷缩班 每工时贡献提高,服务时长不恶化
能源 能源率高于同类基准门店 分表、闭店检查、设备时段策略 单位面积/营业小时能耗下降
优惠 11 家优惠率 >25% 活动停改留、小流量对照 佣金后贡献提高,订单损失在阈值内
平台 高佣金和高依赖门店 结算对账、费率谈判、菜单价格纪律 佣金率下降且平台贡献不下降
扭亏 可信亏损标准门店 每店只设 1-2 个金额最大的动作 贡献利润周运行率转正或明显收窄

P2:第 22-30 天,固化机制

  • 发布 4 月统一利润桥和门店贡献利润榜。
  • 发布 SKU 停用候选与 A 类保障清单,启动 4 周观察。
  • 建立会员首购转二购 cohort,不把会员增长提前计入利润成果。
  • 对各专项做财务去重验收,形成“已确认/待确认/未实现”三种收益状态。
  • 只有满足收入稳定、贡献改善、顾客指标稳定、异常下降四项条件,任务才可验收。
  • 将有效动作转为标准作业程序,并选择 2-3 家同业态门店复测。

十一、任务与验收模板

每条任务必须包含:

字段 示例
问题 茂林居店食材差异 209,245.35 元
数据期间/范围 2026-04,标准门店,费用已匹配
基线值 食材差异 209,245.35 元
目标值 月运行率下降 30%
利润机会 62,773.61 元/月,未去重
根因假设 牛羊肉采购价、标准克重、盘点差异
动作 每日盘点 TOP5 原料;抽称;采购价复核
责任人/协同人 店长 / 商品、供应链、财务
截止日 明确到日期
过程证据 盘点单、称重记录、采购单、系统截图
验收公式 同口径基线成本 - 整改后成本 - 额外投入
护栏指标 实收、销量、退款、客诉不得恶化超阈值
数据来源 actual,不允许 simulated
财务确认 金额、确认人、确认时间

建议任务状态改为:待诊断 -> 已确认根因 -> 执行中 -> 待验收 -> 已验收/未达标 -> 反弹观察 -> 已固化。仅有“完成动作”不能等同于“实现利润”。


十二、产品重构建议

1. 总部驾驶舱

首屏只保留 8 个管理指标:严格 4 月实收、门店贡献利润、贡献率、利润覆盖率、已确认机会、待确认机会、可信亏损门店数、P0 数据问题数。每张卡必须显示月份、公式、分母、覆盖门店和更新时间。

2. 利润桥页面

统一展示:

实收
- 食材成本(标准成本 + 采购价差 + 用量差 + 盘点/报损差)
- 人工
- 租金
- 能源
- 平台佣金
- 其他门店费用
= 门店贡献利润

再单独展示“门店贡献利润 -> 总部及其他费用 -> 财务净利润”的待补项目,禁止混称。

3. 问题工作台

每行是一项可执行问题,而不是一个泛化排名:问题对象、证据等级、异常金额、利润机会、根因状态、动作、负责人、截止日、已确认收益。默认按利润机会排序。

4. 数据质量页

增加四层状态:完整性、准确性、一致性、时效性。异常必须同时展示记录数、金额、占比、影响指标、责任系统和预计修复时间;任何关键利润输入为 C 级时,相应利润卡显示灰色“不可考核”。

5. 中央厨房、配送和 BOM 模块

现有新增模块方向正确,但最终输出必须回写统一成本桥:

  • 中央厨房:原料投入、成品产出、加工损耗、内部结算价差。
  • 配送对账:发出、签收、退货、短溢、结算差异。
  • BOM 穿透:标准用量、实际用量、单位换算、替代料和版本有效期。

三者共同解释食材成本差异,不能各自生成重复的“节省金额”。


十三、4 月验收看板定义

指标 公式 基线 红线/目标
利润数据覆盖率 可计算贡献利润的 4 月实收 / 全部 4 月实收 99.75% 100%
标准门店贡献率 标准店贡献利润 / 标准店实收 7.29% >=10.00%
可信亏损门店数 有销售、费用完整、非灰色且贡献<0 需修复后重算 <=5 家
可比食材差异回收率 已确认回收 / 3,437,648.33 0 >=30%
人工率 标准店人工 / 标准店实收 24.83% <=24.00%
能源率 标准店能源 / 标准店实收 5.31% <=5.00%
高优惠门店数 优惠率 >25%的门店 11 0 或全部例外审批
真实任务验收率 actual 且证据完整的已验收 / 到期任务 当前不可用 >=80%
财务确认收益 去重后的已确认贡献改善 0 >=1,500,000 元/月

收益验收必须保留三个护栏:实收下降不超过批准阈值、顾客/账单不发生不可解释下降、退款及客诉不恶化。否则即使成本下降,也不能判定整改成功。


十四、数据来源与代码证据

1. 主要数据对象

  • 营收、账单、优惠:analytics.bill_factanalytics.v_store_daily
  • 门店费用与贡献:analytics.mv_store_operating_expense_monthly
  • 库存倒挤成本:analytics.mv_store_theoretical_actual_cost_april
  • 菜品成本:analytics.v_dish_cost_analysis_latest_summary
  • SKU ABCanalytics.v_dish_sku_abc_april
  • 会员复购:analytics.mv_store_repeat_summary_monthly
  • 门店主数据:analytics.dim_store
  • 任务与验收:analytics.store_taskanalytics.task_monthly_review

2. 关键代码证据

  • 利润接口跨范围及缺失值按 0server/src/routes/data.ts:503-558
  • 营收接口缺少结束日期:server/src/routes/data.ts:570-655
  • 优惠率与客单价使用未加权平均:server/src/routes/data.ts:625-626server/src/routes/data.ts:649-650
  • 费用接口使用跨月收入及 COALESCEserver/src/routes/store-expense.ts:11-70
  • 营收与赚钱文案混淆:client/src/pages/RevenuePage.tsx:246-255
  • 数据质量“正常”判断过窄:client/src/pages/DataQualityPage.tsx:20-31
  • 模拟执行和月度验收脚本:server/sql/07_simulate_monthly_review.sql:1-57

十五、最终建议

4 月数据已经足以发现利润问题,但暂不足以直接证明财务净利润。正确推进顺序应为:

  1. 先锁定月份、门店和贡献利润口径,修复费用缺失、成本灰区和模拟验收。
  2. 将可比成本差异、人工、能源、优惠和平台统一进入利润机会池。
  3. 以茂林居、温泉、新街口南大街、右安门等可信亏损店作为首批经营整改对象;灰色门店先修数据,不先追责。
  4. 用 30 天实现不低于 150 万元可验证月度贡献改善,使标准门店贡献率达到约 10%。
  5. 后续所有页面和任务都围绕“问题金额 -> 动作 -> 责任人 -> 验收收益”组织,避免继续堆叠孤立指标和排名。

本报告可作为 4 月经营复盘会、基于 4 月基线的整改任务下发及后续产品改造的统一基线;若数据库刷新或成本口径修复,应保留本版本并通过指标版本日志发布重算结果。


十六、P0 整改完成状态

更新时点:2026-08-01

1. 代码整改项(已全部完成并部署)

编号 P0 动作 状态 验收结果 代码位置
P0-1 所有接口统一 4 月半开区间 渠道/餐段/门店排名/日度汇总均加 < DATE '2026-05-01'API 与 SQL 直查金额一致 server/src/routes/data.ts
P0-2 "净利润"改为"门店贡献利润估算" BossPage/BankPage/DashboardPage/RevenuePage 全站名称、字段名、公式一致;"净利率"改为"贡献率" client/src/pages/BossPage.tsx
P0-3 缺失成本费用返回 NULL 利润瀑布接口去除 COALESCE,缺失费用返回 NULL;2 家缺失费用门店不进入利润排名 server/src/routes/data.ts
P0-3b 优惠率与客单价改为加权平均 优惠率 = sum(优惠额)/sum(消费额) = 20.20%;客单价 = sum(实收)/sum(账单数) = ¥33.59 server/src/routes/data.ts
P0-4 利润机会池(含 SKU 处置机会) 6 类机会合计 ¥2,483,711.5,30 天承诺值 ≥ 150 万元;每条可点击展开查看 TOP5 门店具体数据和行动指向 server/src/routes/data.ts + client/src/pages/BossPage.tsx
P0-5 升级数据质量状态规则 新增零实收 49,416 笔、优惠大于消费 654 笔、负耗用 1,559 行/-96,509.16 元;四层状态(完整性/准确性/一致性/时效性)+ 利润数据置信等级 B server/src/routes/data.ts + client/src/pages/DataQualityPage.tsx
P0-6 隔离模拟验收记录 60 条模拟记录标记 is_simulated = true;任务列表、月度复盘完成率、态势感知统计默认排除 server/src/routes/tasks.ts + server/src/routes/situational-awareness.ts + server/sql/08_isolate_simulated_reviews.sql

2. 利润机会池实现详情

利润机会池已从文档中的 5 类扩展为 6 类,新增"SKU 复杂度压缩"

机会 4 月基线 理论月度机会 置信度 展开详情内容
食材成本差异回收 差异 4,729,994.43 元 1,418,998.33 中高 实际 vs 理论成本率对比 + 差异 TOP5 门店(西安含光、哈马尔罕总部基地、菜百、永利国际、茂林居)
标准店人工优化 费率 25.26% 705,770.38 人工合计 + 费率 TOP5 门店(哈马尔罕总部基地、火锅北三环、茂林居、永利国际、丰台北路)
标准店能源优化 费率 5.34% 193,693.59 水电合计 + 费率 TOP5 门店(哈马尔罕总部基地、火锅北三环、新街口南大街、右安门、武圣)
高优惠门店治理 12 家 >25% 146,796.46 中低 优惠 TOP5 门店(火锅北三环 44.85%、新华北路 29.58%、丰台北路 29.40%、云岗 27.48%、右安门 27.43%
平台佣金优化 佣金率 6.08% 0 中低 佣金合计 + 费率 TOP5 门店;当前已低于 20% 目标,暂无优化空间
SKU 复杂度压缩 802 个低效 SKU 18,452.74 低效 SKU 示例(测试商品、外卖套餐、团购套餐等 0 元收入 SKU)
合计 2,483,711.50

3. 前端展现优化

优化项 状态 说明
利润机会池位置调整 从门店利润排名后移至利润结构之后,紧邻利润瀑布图
利润机会池可展开详情 每条机会点击展开/收起,含具体门店名、数值、费率和行动指向
副标题提示 "点击展开详情"提示用户可交互
箭头动画 展开时 ChevronDown 旋转 180°,紫色边框高亮

4. 待完成项(业务/数据侧,非代码)

以下三项属于业务设计和数据治理任务,非纯代码实现。以下为具体展开方案。


P0-A:建立 91/89/86/5 门店范围标签

现状:

  • analytics.dim_store 已有 business_type 字段,当前值为"标准门店"(86 家) / "特殊业态"(5 家)。
  • 91 家有销售门店全部能在 dim_store 匹配到,但缺少"是否有费用"、"是否可比(非灰色)"两个维度标签。
  • 89 家有费用匹配,2 家缺失(1098 关东店铜锅聚、1110 甄选商城店)。
  • 6 家灰色成本口径门店目前仍标记为"标准门店"或"特殊业态",未单独标记"灰色"。

方案:在 dim_store 新增 3 个标签字段

-- Step 1: 新增字段
ALTER TABLE analytics.dim_store
  ADD COLUMN IF NOT EXISTS has_expense_4m BOOLEAN DEFAULT FALSE,
  ADD COLUMN IF NOT EXISTS is_grey_cost BOOLEAN DEFAULT FALSE,
  ADD COLUMN IF NOT EXISTS scope_tag TEXT;

-- Step 2: 标记有费用的89家
UPDATE analytics.dim_store d
SET has_expense_4m = TRUE
WHERE d.store_code IN (
  SELECT DISTINCT e.sales_store_code
  FROM analytics.mv_store_operating_expense_monthly e
  WHERE e.report_month = '2026-04-01' AND e.operating_expense IS NOT NULL
);

-- Step 3: 标记6家灰色成本口径门店
UPDATE analytics.dim_store
SET is_grey_cost = TRUE
WHERE store_name IN (
  '西安含光店', '哈马尔罕总部基地店', '菜百店',
  '永利国际店', '火锅北三环店', '大悦春风里店'
);

-- Step 4: 生成统一scope_tag
UPDATE analytics.dim_store
SET scope_tag = CASE
  WHEN has_expense_4m = FALSE THEN '缺失费用'
  WHEN is_grey_cost = TRUE THEN '灰色口径'
  WHEN business_type = '特殊业态' THEN '特殊业态'
  ELSE '标准可比'
END;

-- Step 5: 验证结果
SELECT scope_tag, count(*) AS store_count, 
       round(sum(r.received)::numeric, 2) AS total_received
FROM analytics.dim_store d
JOIN analytics.mv_store_risk_rating r ON d.store_code = r.store_code
WHERE r.received IS NOT NULL AND r.received > 0
GROUP BY scope_tag ORDER BY store_count DESC;

预期结果:

scope_tag 门店数 说明
标准可比 79 家 有费用、非灰色、标准业态,可参与排名和考核
特殊业态 4 家 有费用、非灰色、特殊业态,单列分析
灰色口径 6 家 有费用但成本口径异常,先修数据再考核
缺失费用 2 家 无费用数据,只展示营收不计算利润
合计 91 家

API 改造: 所有利润排名、成本排名接口在 WHERE 条件中加 AND scope_tag = '标准可比',默认排除灰色和缺失费用门店。


P0-B:两套实际成本桥设计

现状数据:

成本来源 理论成本 实际成本 差异
库存倒挤(mv_store_operating_expense_monthly.actual_food_cost 16,388,682.98 21,101,238.04 4,712,555.06
菜品成本报表(v_dish_cost_analysis_latest_summary 16,077,398.19 16,547,027.90 469,629.70
两套实际成本差异 4,554,210.14
两套理论成本差异 311,284.79

差异分解方向:

差异类别 金额估算 排查方法 负责人
1. 范围差异(门店覆盖不同) 待定 对比两套来源的门店清单,库存倒挤含 91 家,菜品报表可能不含特殊业态 数据治理
2. 中央厨房及配送 待定 库存倒挤含中央厨房领料,菜品报表只计门店直采;需建立内部结算价差桥 供应链/商品
3. 盘点时点差异 待定 库存倒挤 = 期初 + 采购 - 期末 - 报损,盘点时点不同导致差异 财务
4. 单位换算 待定 BOM 标准用量单位(克)与采购单位(公斤/箱)换算误差 商品
5. 负耗用处理 -96,509.16 元 1,559 行负耗用在库存倒挤中扭曲成本,菜品报表按实际出成率计算 数据
6. 菜品匹配 待定 65 个菜品未匹配销售,菜品报表可能漏算 商品

方案:建立 analytics.cost_bridge_april 桥接表

CREATE TABLE IF NOT EXISTS analytics.cost_bridge_april (
  bridge_id SERIAL PRIMARY KEY,
  store_code TEXT REFERENCES analytics.dim_store(store_code),
  diff_category TEXT NOT NULL,        -- '范围差异','中央厨房','盘点时点','单位换算','负耗用','菜品匹配'
  inventory_cost NUMERIC,             -- 库存倒挤口径金额
  dish_report_cost NUMERIC,           -- 菜品成本报表口径金额
  diff_amount NUMERIC NOT NULL,       -- 差异金额
  explanation TEXT,                   -- 差异原因说明
  assigned_to TEXT,                   -- 责任人
  status TEXT DEFAULT '待排查',       -- 待排查/已确认/已修复
  created_at TIMESTAMPTZ DEFAULT NOW()
);

-- 按门店插入差异行
INSERT INTO analytics.cost_bridge_april (store_code, diff_category, inventory_cost, dish_report_cost, diff_amount, explanation)
SELECT d.store_code, '总差异', inv.actual_food_cost, dish.actual_cost,
       round((inv.actual_food_cost - dish.actual_cost)::numeric, 2),
       '库存倒挤与菜品报表的实际成本差异'
FROM analytics.dim_store d
-- ... (需逐项桥接,此处为框架)
;

实施步骤:

  1. D+1:导出两套来源的门店 × 菜品 × 成本明细,建立差异对照表。
  2. D+3:按上述 6 类差异逐项分解,每类差异分配到责任人。
  3. D+5:完成差异 100% 分配,形成 cost_bridge_april 表,每行可追溯到具体单据。
  4. D+7:基于桥接结果,决定利润机会池中"食材成本差异回收"采用哪套口径作为基线。

P0-C6 家灰色成本口径修复

现状数据:

门店 store_code business_type 实收(元) 理论毛利率 实际食材成本 实际成本率 差异(元) 异常原因
哈马尔罕总部基地店 0056 特殊业态 3,118.96 100.00% 326,021.38 10,452.89% 326,021.38 理论毛利率=100%→理论成本=0,实际成本远大于实收,疑似费用归属错误
菜百店 1111 标准门店 652,932.76 99.97% 244,256.18 37.41% 244,060.30 理论毛利率≈100%→理论成本≈0,毛利率设置异常
永利国际店 1109 标准门店 472,712.37 99.86% 225,533.71 47.71% 224,871.91 理论毛利率≈100%→理论成本≈0,毛利率设置异常
火锅北三环店 0012 特殊业态 56,661.94 99.09% 131,703.15 232.44% 131,187.53 理论毛利率≈99%→理论成本≈1%,实际成本远超实收,业态不同成本结构不同
西安含光店 0052 标准门店 527,901.19 93.88% 463,064.25 87.72% 430,756.70 理论毛利率=93.88%→理论成本率=6.12%,但实际成本率=87.72%,差距极大
大悦春风里店 1004 标准门店 0.00 NULL 0.00 NULL 0.00 4 月无销售但有成本记录 0.0001 元

根因分析:

  1. 哈马尔罕总部基地店(0056:实收仅 3,119 元但食材成本 326,021 元,疑似总部基地费用误归集到门店,或该店为中央厨房/培训基地,不应按标准门店口径考核。
  2. 菜百店(1111)、永利国际店(1109)theoretical_margin_pct 设置为 99.97%/99.86%,接近 100%,导致理论成本≈0,明显是毛利率配置错误。正常门店毛利率中位数为 70.03%P25=68.96%P75=71.12%)。
  3. 火锅北三环店(0012:火锅业态成本结构与拉面不同,食材成本率 232% 说明可能存在收入口径问题(如只计堂食收入但成本含火锅食材全部)。
  4. 西安含光店(0052:理论毛利率 93.88% 远高于正常范围(中位数 70%),疑似毛利率配置错误或成本归属错误。
  5. 大悦春风里店(1004:4 月无销售(实收=0),但有 0.0001 元成本记录,疑似数据残留。

修复方案:

门店 修复动作 预计修复后状态 负责人 截止
哈马尔罕总部基地店 重新界定业态:改为"中央厨房/培训基地",不参与门店利润排名 business_type → 特殊业态,scope_tag → 灰色口径(修复后→特殊业态) 商品/运营 D+3
菜百店 核查 theoretical_margin_pct 配置来源,修正为同业态中位数 70% 修复后理论成本≈195,880 元,与实际成本 244,256 元差异≈48,376 元(合理范围) 商品/数据 D+3
永利国际店 同上,修正 theoretical_margin_pct 为 70% 修复后理论成本≈141,814 元,与实际成本 225,534 元差异≈83,720 元(需进一步排查) 商品/数据 D+3
火锅北三环店 重新界定业态:改为"火锅业态",建独立成本模型 business_type → 特殊业态,不参与标准门店成本排名 商品/运营 D+5
西安含光店 核查 theoretical_margin_pct 配置,93.88% 明显异常;同时核查成本归属是否有跨店分摊 修正毛利率后重算理论成本,再评估差异是否在合理范围 商品/数据 D+5
大悦春风里店 4 月无销售,标记为"停业/待开业",不参与任何排名 scope_tag → 缺失费用/停业 数据治理 D+1

修复后影响:

  • 灰色门店从 6 家降至 0 家(2 家改业态、3 家修毛利率、1 家标记停业)。
  • 可比成本差异从 3,437,648.33 元(已剔除灰色)可能需重算——修复后菜百、永利国际、西安含光的理论成本将大幅上升,实际差异将缩小。
  • 利润机会池中"食材成本差异回收"的基线和机会金额需同步更新。

SQL 修复脚本框架:

-- 修复1: 哈马尔罕总部基地店 → 特殊业态
UPDATE analytics.dim_store
SET business_type = '特殊业态', is_grey_cost = TRUE
WHERE store_code = '0056';

-- 修复2: 菜百店理论毛利率 → 70%(需商品确认实际值)
UPDATE analytics.mv_store_risk_rating
SET theoretical_margin_pct = 70.00
WHERE store_code = '1111';
-- 注意: mv_store_risk_rating 是物化视图,需 REFRESH MATERIALIZED VIEW

-- 修复3: 永利国际店理论毛利率 → 70%
UPDATE analytics.mv_store_risk_rating
SET theoretical_margin_pct = 70.00
WHERE store_code = '1109';

-- 修复4: 火锅北三环店 → 特殊业态
UPDATE analytics.dim_store
SET business_type = '特殊业态', is_grey_cost = TRUE
WHERE store_code = '0012';

-- 修复5: 西安含光店理论毛利率 → 70%(需商品确认)
UPDATE analytics.mv_store_risk_rating
SET theoretical_margin_pct = 70.00
WHERE store_code = '0052';

-- 修复6: 大悦春风里店 → 标记停业
UPDATE analytics.dim_store
SET scope_tag = '停业/待开业', is_grey_cost = TRUE
WHERE store_code = '1004';

重要提示: theoretical_margin_pct 的修正值 70% 仅为估算值(取同业态中位数),实际值需商品部门根据 BOM 和标准成本确认后填入。修复脚本需在商品部门确认后执行。

5. 部署状态

环境 地址 状态
本地开发 http://localhost:5173 运行中
生产环境 https://dm.all8ai.top 已部署(2026-08-01