# 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） |
