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

826 lines
47 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 |