826 lines
47 KiB
Markdown
826 lines
47 KiB
Markdown
# 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 月:
|
||
|
||
```sql
|
||
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. 利润口径
|
||
|
||
本报告采用:
|
||
|
||
```text
|
||
门店贡献利润估算 = 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. 应建立的一级指标树
|
||
|
||
```text
|
||
门店贡献利润
|
||
├── 实收
|
||
│ ├── 账单数
|
||
│ ├── 客单价
|
||
│ ├── 餐段与渠道结构
|
||
│ └── 优惠与活动增量
|
||
├── 食材成本
|
||
│ ├── 标准/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-626` 和 `server/src/routes/data.ts:649-650` 对门店日优惠率、日客单价直接使用 `avg()`。这会让低消费日与高消费日、低单量门店与高单量门店获得相同权重,汇总结果不等于真实公司比率。
|
||
|
||
统一公式应为:
|
||
|
||
```text
|
||
优惠率 = sum(优惠额) / sum(消费额)
|
||
客单价 = sum(实收) / sum(账单数)
|
||
```
|
||
|
||
餐段接口的客单价也应按汇总实收除以汇总账单计算。所有比率禁止“平均的平均”,除非页面明确展示的是“门店平均值”且同时给出分布。
|
||
|
||
### 3. 利润高估
|
||
|
||
`server/src/routes/data.ts:503-558` 和 `server/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/simulated`、`verified_by`、`verified_at`、`evidence_url`、`finance_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** | | | 需去重后确认 |
|
||
|
||
机会金额不能由任务负责人自行填报后直接计入成果。财务确认规则应为:
|
||
|
||
```text
|
||
确认收益 = 基线单位成本/费率 × 实际业务量 - 整改后实际成本/费用
|
||
```
|
||
|
||
同时扣除收入损失、替代成本、额外投入,并以同口径、同范围、同营业天数进行比较。同一笔收益只能归属一个项目。
|
||
|
||
---
|
||
|
||
## 十、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. 利润桥页面
|
||
|
||
统一展示:
|
||
|
||
```text
|
||
实收
|
||
- 食材成本(标准成本 + 采购价差 + 用量差 + 盘点/报损差)
|
||
- 人工
|
||
- 租金
|
||
- 能源
|
||
- 平台佣金
|
||
- 其他门店费用
|
||
= 门店贡献利润
|
||
```
|
||
|
||
再单独展示“门店贡献利润 -> 总部及其他费用 -> 财务净利润”的待补项目,禁止混称。
|
||
|
||
### 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_fact`、`analytics.v_store_daily`
|
||
- 门店费用与贡献:`analytics.mv_store_operating_expense_monthly`
|
||
- 库存倒挤成本:`analytics.mv_store_theoretical_actual_cost_april`
|
||
- 菜品成本:`analytics.v_dish_cost_analysis_latest_summary`
|
||
- SKU ABC:`analytics.v_dish_sku_abc_april`
|
||
- 会员复购:`analytics.mv_store_repeat_summary_monthly`
|
||
- 门店主数据:`analytics.dim_store`
|
||
- 任务与验收:`analytics.store_task`、`analytics.task_monthly_review`
|
||
|
||
### 2. 关键代码证据
|
||
|
||
- 利润接口跨范围及缺失值按 0:`server/src/routes/data.ts:503-558`
|
||
- 营收接口缺少结束日期:`server/src/routes/data.ts:570-655`
|
||
- 优惠率与客单价使用未加权平均:`server/src/routes/data.ts:625-626`、`server/src/routes/data.ts:649-650`
|
||
- 费用接口使用跨月收入及 `COALESCE`:`server/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 个标签字段**
|
||
|
||
```sql
|
||
-- 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` 桥接表**
|
||
|
||
```sql
|
||
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-C:6 家灰色成本口径修复
|
||
|
||
**现状数据:**
|
||
|
||
| 门店 | 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 修复脚本框架:**
|
||
|
||
```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) |
|