# 菜品成本分析前端展现方案 > 基于现有架构:侧边栏分组(Layout.tsx) + 路由(App.tsx) + 页面组件(pages/) + 折叠面板(CollapsibleSection) + 数据表格(DataTable) + 图表(recharts) --- ## 整体架构 ### 新增页面路由 在 `App.tsx` 中新增1个页面路由,在 `Layout.tsx` 中新增1个菜单项: ``` /cost-analysis → CostAnalysisPage → "菜品成本分析" → 业务模块组 ``` ### 页面结构 采用**单页面 + Tab切换**的方式,避免新增过多路由。页面顶部为Tab栏,每个Tab对应一个分析维度: ``` 菜品成本分析 ├── Tab: 成本总览 → 模块1 + 模块10 + 模块25 ├── Tab: 菜品盈利分析 → 模块3 + 模块12 ├── Tab: 原料差异分析 → 模块2 + 模块11 ├── Tab: BOM与配方 → 模块4 + 模块23 + 模块20 + 模块21 + 模块22 ├── Tab: 供应链与精简 → 模块5 + 模块6 + 模块7 + 模块13 ├── Tab: 包装耗材 → 模块8 ├── Tab: 数据质量 → 模块9 + 模块14 ├── Tab: 门店成本 → 模块15 + 模块16 + 模块17 + 模块26 └── Tab: 可视化探索 → 模块24 + 散点图 + 热力图 ``` --- ## 各Tab详细设计 ### Tab 1: 成本总览 **包含模块**:模块1(SKU理论与实际成本)、模块10(品类成本对比)、模块25(毛利率偏差分布) **布局**: ``` ┌─────────────────────────────────────────────────────────┐ │ 成本总览 │ ├─────────────────────────────────────────────────────────┤ │ [MetricCard] 理论成本 [MetricCard] 实际成本 │ │ [MetricCard] 成本差异 [MetricCard] 差异率 │ │ [MetricCard] 平均理论毛利率 [MetricCard] 平均实际毛利率 │ │ [MetricCard] 超理论菜品数 [MetricCard] 低毛利菜品数 │ ├─────────────────────────────────────────────────────────┤ │ [CollapsibleSection] 品类成本对比(柱状图 + 表格) │ │ ┌──────────────────────────────────────────┐ │ │ │ BarChart: X轴=品类, Y轴=毛利率 │ │ │ │ 双柱: 理论毛利率 vs 实际毛利率 │ │ │ └──────────────────────────────────────────┘ │ │ DataTable: 品类 | 菜品数 | 理论毛利率 | 实际毛利率 │ │ | 销售额 | 成本差异 | 成本率 │ ├─────────────────────────────────────────────────────────┤ │ [CollapsibleSection] 毛利率偏差分布(饼图 + 表格) │ │ ┌──────────────────────────────────────────┐ │ │ │ PieChart: 严重偏低/偏低/略低/略高/高于理论 │ │ │ └──────────────────────────────────────────┘ │ │ DataTable: 偏差区间 | 菜品数 | 占比 │ ├─────────────────────────────────────────────────────────┤ │ [CollapsibleSection] 成本差异TOP榜(表格,默认展开) │ │ DataTable: 菜品 | 品类 | 理论毛利率 | 实际毛利率 │ │ | 成本差异 | 成本分层 | 销售额 │ │ 成本分层用 Badge 着色: 正常(绿) / 关注(黄) / 整改(橙) │ │ / 紧急(红) / 数据异常(灰) │ └─────────────────────────────────────────────────────────┘ ``` **API端点**: - `GET /api/cost-analysis/overview` → 总览指标 - `GET /api/cost-analysis/category-comparison` → 品类对比 - `GET /api/cost-analysis/margin-deviation` → 偏差分布 - `GET /api/cost-analysis/variance-top?limit=50&order=desc` → 成本差异TOP --- ### Tab 2: 菜品盈利分析 **包含模块**:模块3(菜品盈利与菜单工程)、模块12(菜品定价合理性) **布局**: ``` ┌─────────────────────────────────────────────────────────┐ │ 菜品盈利分析 │ ├─────────────────────────────────────────────────────────┤ │ [CollapsibleSection] 菜单工程矩阵(四象限图) │ │ ┌──────────────────────────────────────────┐ │ │ │ ScatterChart: │ │ │ │ X轴=销量, Y轴=实际毛利率 │ │ │ │ 气泡大小=销售额, 颜色=品类 │ │ │ │ 四象限: 明星/高销低利/低销高利/低销低利 │ │ │ │ 点击气泡 → 弹出菜品详情 │ │ │ └──────────────────────────────────────────┘ │ │ 图例: 🟢明星盈利 🟡高销低利 🔵低销高利 🔴低销低利 │ │ ⚪数据异常 │ ├─────────────────────────────────────────────────────────┤ │ [CollapsibleSection] 菜品盈利明细(表格) │ │ DataTable: 菜品 | 品类 | 销量 | 销售额 | 理论毛利 │ │ | 实际毛利 | 毛利贡献度 | 菜单类型(Badge) │ │ 支持排序: 按销售额/毛利/毛利率 │ │ 支持筛选: 品类下拉 / 菜单类型下拉 │ │ Pagination │ ├─────────────────────────────────────────────────────────┤ │ [CollapsibleSection] 定价合理性(毛利率分布图) │ │ ┌──────────────────────────────────────────┐ │ │ │ BarChart: X轴=毛利率区间, Y轴=菜品数 │ │ │ │ 区间: <0% / 0-30% / 30-50% / 50-70% │ │ │ │ / 70-90% / >90% │ │ │ └──────────────────────────────────────────┘ │ │ DataTable: 低毛利菜品清单(理论<50%且销售额>1000) │ │ 菜品 | 售价 | 理论成本 | 理论毛利率 | 实际毛利率 │ │ | 定价偏离度 | 建议 │ └─────────────────────────────────────────────────────────┘ ``` **API端点**: - `GET /api/cost-analysis/menu-engineering` → 菜单工程矩阵数据 - `GET /api/cost-analysis/profitability?page=1&category=&type=` → 盈利明细 - `GET /api/cost-analysis/pricing?threshold=50` → 定价合理性 --- ### Tab 3: 原料差异分析 **包含模块**:模块2(SKU原料差异贡献)、模块11(物料损耗率分布) **布局**: ``` ┌─────────────────────────────────────────────────────────┐ │ 原料差异分析 │ ├─────────────────────────────────────────────────────────┤ │ [搜索框] 输入菜品名称 → 查看该菜品的原料差异分解 │ ├─────────────────────────────────────────────────────────┤ │ [CollapsibleSection] 菜品原料差异分解(选中菜品后展示) │ │ ┌──────────────────────────────────────────┐ │ │ │ 水平BarChart: 原料名 vs 金额差异 │ │ │ │ 红色=超耗, 绿色=节约 │ │ │ └──────────────────────────────────────────┘ │ │ DataTable: 原料 | 理论用量 | 实际用量 | 数量差异 │ │ | 损耗率 | 金额差异 | 差异贡献度 | 原因分类 │ │ 原因分类(Badge): 份量超标/替代原料/分摊遗漏/门店错位 │ ├─────────────────────────────────────────────────────────┤ │ [CollapsibleSection] 物料损耗率分布(饼图) │ │ ┌──────────────────────────────────────────┐ │ │ │ PieChart: 无损耗/轻微/轻度/中度/严重/极重/正向│ │ │ └──────────────────────────────────────────┘ │ │ DataTable: 损耗区间 | 明细数 | 占比 │ ├─────────────────────────────────────────────────────────┤ │ [CollapsibleSection] 超耗物料TOP榜(表格) │ │ DataTable: 物料 | 类型(原料/半成品) | 涉及菜品数 │ │ | 总损耗量 | 平均损耗率 | 最大损耗率 │ │ 支持排序: 按损耗量/损耗率 │ │ Pagination │ ├─────────────────────────────────────────────────────────┤ │ [CollapsibleSection] 物料类型损耗对比(柱状图) │ │ ┌──────────────────────────────────────────┐ │ │ │ BarChart: 原材料 vs 半成品 │ │ │ │ 双柱: 平均损耗率 | 涉及菜品数 │ │ │ └──────────────────────────────────────────┘ │ └─────────────────────────────────────────────────────────┘ ``` **API端点**: - `GET /api/cost-analysis/material-variance?dish_code=66920` → 菜品原料差异分解 - `GET /api/cost-analysis/loss-distribution` → 损耗率分布 - `GET /api/cost-analysis/material-loss-top?limit=50&order=desc` → 超耗物料TOP - `GET /api/cost-analysis/material-type-loss` → 物料类型损耗对比 --- ### Tab 4: BOM与配方 **包含模块**:模块4(BOM复杂度)、模块23(菜品物料构成)、模块20(BOM覆盖率)、模块21(适用门店覆盖)、模块22(高损耗BOM预警) **布局**: ``` ┌─────────────────────────────────────────────────────────┐ │ BOM与配方 │ ├─────────────────────────────────────────────────────────┤ │ [MetricCard] BOM覆盖率 [MetricCard] 有BOM的SKU数 │ │ [MetricCard] 缺BOM的SKU [MetricCard] 平均物料数/SKU │ │ [MetricCard] 高损耗BOM数 [MetricCard] 极端损耗BOM数 │ ├─────────────────────────────────────────────────────────┤ │ [CollapsibleSection] BOM复杂度分布(柱状图 + 表格) │ │ ┌──────────────────────────────────────────┐ │ │ │ BarChart: X轴=物料数区间, Y轴=SKU数 │ │ │ │ ≤5 / 6-10 / 11-15 / 16-20 / >20 │ │ │ └──────────────────────────────────────────┘ │ │ DataTable: SKU编码 | 菜品名 | 品类 | 原料数 │ │ | 半成品数 | 独有原料数 | 单位数 │ │ | 高损耗原料数 | 复杂度评分 | 复杂度等级 │ │ 复杂度等级(Badge): 低(绿) / 正常(蓝) / 较复杂(橙) │ │ / 重点评审(红) │ │ Pagination │ ├─────────────────────────────────────────────────────────┤ │ [CollapsibleSection] 高损耗BOM预警(表格,默认展开) │ │ DataTable: 菜品 | 物料 | 损耗率 | 出成率 | 标准毛用量 │ │ | 标准净用量 | 单位 | 预警级别(Badge) │ │ 预警级别: >20%(黄) / >50%(橙) / >100%(红) │ ├─────────────────────────────────────────────────────────┤ │ [CollapsibleSection] 缺BOM的SKU清单(表格) │ │ DataTable: SKU编码 | 菜品名 | 品类 | 销售额 | 销量 │ │ 按销售额降序,优先补齐高销量SKU的BOM │ ├─────────────────────────────────────────────────────────┤ │ [CollapsibleSection] 菜品物料构成(点击菜品展开详情) │ │ 选中菜品后展示: │ │ DataTable: 物料 | 类型 | 标准用量 | 标准金额 | 成本占比 │ │ | 损耗率 | 出成率 │ │ 饼图: 物料成本占比 │ └─────────────────────────────────────────────────────────┘ ``` **API端点**: - `GET /api/cost-analysis/bom-overview` → BOM总览指标 - `GET /api/cost-analysis/bom-complexity?page=1` → 复杂度分布 - `GET /api/cost-analysis/bom-high-loss?threshold=20` → 高损耗BOM预警 - `GET /api/cost-analysis/bom-missing?page=1` → 缺BOM的SKU清单 - `GET /api/cost-analysis/bom-composition?sku_code=66920` → 菜品物料构成 --- ### Tab 5: 供应链与精简 **包含模块**:模块5(独有原料风险)、模块6(SKU精简供应链影响)、模块7(原料共用度)、模块13(BOM驱动物料需求预测) **布局**: ``` ┌─────────────────────────────────────────────────────────┐ │ 供应链与精简 │ ├─────────────────────────────────────────────────────────┤ │ [CollapsibleSection] 原料共用度网络(表格 + 图) │ │ ┌──────────────────────────────────────────┐ │ │ │ 水平BarChart: TOP20物料被引用次数 │ │ │ │ 核心原料(>50个SKU)标红, 独有原料(=1)标灰 │ │ │ └──────────────────────────────────────────┘ │ │ DataTable: 物料 | 类型 | 被引用SKU数 | 分类 │ │ 核心原料(Badge红) / 普通共用(蓝) / 独有(灰) │ ├─────────────────────────────────────────────────────────┤ │ [CollapsibleSection] 独有原料风险(表格) │ │ DataTable: SKU | 菜品名 | 销售额 | 独有原料数 │ │ | 独有原料成本 | 替代品 | 风险等级(Badge) │ │ 风险等级: 高(低收入+多独有原料,红) / 中(橙) / 低(绿) │ │ 按销售额升序(低收入优先),独有原料数降序 │ ├─────────────────────────────────────────────────────────┤ │ [CollapsibleSection] SKU精简模拟器(交互式) │ │ ┌──────────────────────────────────────────┐ │ │ │ [下拉] 选择要下架的SKU │ │ │ │ 或 [输入] 批量输入SKU编码 │ │ │ │ [按钮] 模拟下架影响 │ │ │ └──────────────────────────────────────────┘ │ │ 模拟结果: │ │ [MetricCard] 收入影响 [MetricCard] 毛利影响 │ │ [MetricCard] 可减少原料数 [MetricCard] 独有库存金额 │ │ [MetricCard] 仍需采购的共用原料 [MetricCard] 报损风险 │ │ DataTable: 可释放的独有原料清单 │ │ 物料 | 涉及菜品数(=1) | 库存金额 | 处置建议 │ ├─────────────────────────────────────────────────────────┤ │ [CollapsibleSection] BOM驱动物料需求预测(表格) │ │ DataTable: 物料 | 类型 | 单位 | 预计需求量 │ │ | 涉及菜品数 | 需求排名 │ │ 按需求量降序,TOP50 │ │ Pagination │ └─────────────────────────────────────────────────────────┘ ``` **API端点**: - `GET /api/cost-analysis/material-sharing?limit=20` → 原料共用度 - `GET /api/cost-analysis/unique-material-risk?page=1` → 独有原料风险 - `POST /api/cost-analysis/sku-simplify-simulate` → SKU精简模拟(传入SKU编码列表) - `GET /api/cost-analysis/material-demand?limit=50` → 物料需求预测 --- ### Tab 6: 包装耗材 **包含模块**:模块8(包装及耗材成本分析) **布局**: ``` ┌─────────────────────────────────────────────────────────┐ │ 包装耗材成本 │ ├─────────────────────────────────────────────────────────┤ │ [MetricCard] 包装物料种类 [MetricCard] 包装总成本 │ │ [MetricCard] 包装费用率 [MetricCard] 高损耗包装数 │ ├─────────────────────────────────────────────────────────┤ │ [CollapsibleSection] 包装物料明细(表格) │ │ DataTable: 物料 | 涉及菜品数 | 每单用量 | 每单成本 │ │ | 费用率 | 损耗量 | 损耗率 | 状态(Badge) │ │ 状态: 正常(绿) / 关注(黄) / 核查(红) │ │ 支持筛选: 物料类型(餐盒/餐具/打包袋/调味包/其他) │ │ Pagination │ ├─────────────────────────────────────────────────────────┤ │ [CollapsibleSection] 包装损耗TOP榜(柱状图) │ │ ┌──────────────────────────────────────────┐ │ │ │ 水平BarChart: 物料名 vs 损耗量 │ │ │ └──────────────────────────────────────────┘ │ └─────────────────────────────────────────────────────────┘ ``` **API端点**: - `GET /api/cost-analysis/packaging-overview` → 包装总览 - `GET /api/cost-analysis/packaging-detail?page=1&type=` → 包装明细 - `GET /api/cost-analysis/packaging-loss-top?limit=15` → 包装损耗TOP --- ### Tab 7: 数据质量 **包含模块**:模块9(BOM数据质量)、模块14(物料匹配率) **布局**: ``` ┌─────────────────────────────────────────────────────────┐ │ 数据质量 │ ├─────────────────────────────────────────────────────────┤ │ [MetricCard] BOM覆盖率 [MetricCard] 菜品匹配率 │ │ [MetricCard] 物料匹配率 [MetricCard] 异常菜品数 │ ├─────────────────────────────────────────────────────────┤ │ [CollapsibleSection] BOM数据质量检查清单(表格) │ │ DataTable: 检查项 | 异常数 | 异常率 | 状态(Badge) │ │ 检查项: │ │ - BOM缺失(168个SKU无BOM) │ │ - 零实际用量(standard_net_quantity=0) │ │ - 成本率异常(实际毛利率<0) │ │ - 理论毛利率为负 │ │ - 负数量记录 │ │ - 明细与汇总不一致 │ │ - 重复BOM记录 │ ├─────────────────────────────────────────────────────────┤ │ [CollapsibleSection] 未匹配菜品清单(表格) │ │ DataTable: 菜品名 | 品类 | 销售额 | 匹配状态 │ ├─────────────────────────────────────────────────────────┤ │ [CollapsibleSection] 未匹配物料清单(表格) │ │ DataTable: 物料名 | 涉及菜品数 | 损耗金额 | 匹配状态 │ └─────────────────────────────────────────────────────────┘ ``` **API端点**: - `GET /api/cost-analysis/data-quality` → 数据质量总览 - `GET /api/cost-analysis/unmatched-dishes?page=1` → 未匹配菜品 - `GET /api/cost-analysis/unmatched-materials?page=1` → 未匹配物料 --- ### Tab 8: 门店成本 **包含模块**:模块15(门店成本差异分布)、模块16(门店超耗排名)、模块17(理论vs实际成本率)、模块26(门店成本分级地图) **布局**: ``` ┌─────────────────────────────────────────────────────────┐ │ 门店成本 │ ├─────────────────────────────────────────────────────────┤ │ [MetricCard] 门店总数 [MetricCard] 红色门店数 │ │ [MetricCard] 橙色门店数 [MetricCard] 绿色门店数 │ │ [MetricCard] 灰色门店数 [MetricCard] 总超耗金额 │ ├─────────────────────────────────────────────────────────┤ │ [CollapsibleSection] 门店成本分级地图 │ │ ┌──────────────────────────────────────────┐ │ │ │ 地图组件(复用StoreMap或现有地图) │ │ │ │ 标注: 红/橙/绿/灰 圆点 │ │ │ │ 点击 → 弹出门店成本详情 │ │ │ └──────────────────────────────────────────┘ │ │ 图例: 🔴严重超耗 🟠明显超耗 🟢基本正常 ⚪口径异常 │ ├─────────────────────────────────────────────────────────┤ │ [CollapsibleSection] 门店成本差异分布(饼图) │ │ ┌──────────────────────────────────────────┐ │ │ │ PieChart: 红35 / 橙40 / 绿8 / 灰6 │ │ │ └──────────────────────────────────────────┘ │ ├─────────────────────────────────────────────────────────┤ │ [CollapsibleSection] 门店超耗排名(表格,默认展开) │ │ DataTable: 门店 | 理论成本率 | 实际成本率 | 偏差 │ │ | 超耗金额 | 负库存项数 | 分级(Badge) │ │ 分级(Badge): 红色-严重超耗(红) / 橙色-明显超耗(橙) │ │ / 绿色-基本正常(绿) / 灰色-口径异常(灰) │ │ 支持排序: 按超耗金额/偏差率 │ │ Pagination │ └─────────────────────────────────────────────────────────┘ ``` **API端点**: - `GET /api/cost-analysis/store-overview` → 门店成本总览 - `GET /api/cost-analysis/store-map` → 门店地图数据(含经纬度+分级) - `GET /api/cost-analysis/store-ranking?page=1&order=desc` → 门店超耗排名 --- ### Tab 9: 可视化探索 **包含模块**:模块24(成本差异vs销量散点图)+ 自由探索 **布局**: ``` ┌─────────────────────────────────────────────────────────┐ │ 可视化探索 │ ├─────────────────────────────────────────────────────────┤ │ [CollapsibleSection] 成本差异 vs 销量散点图 │ │ ┌──────────────────────────────────────────┐ │ │ │ ScatterChart: │ │ │ │ X轴=销量, Y轴=成本差异额 │ │ │ │ 气泡大小=销售额, 颜色=品类 │ │ │ │ 四象限标注: │ │ │ │ 右上=高销量高差异(优先整改) │ │ │ │ 右下=高销量低差异(保持) │ │ │ │ 左上=低销量高差异(考虑下架) │ │ │ │ 左下=低销量低差异(观察) │ │ │ │ 点击气泡 → 弹出菜品详情 │ │ │ └──────────────────────────────────────────┘ │ ├─────────────────────────────────────────────────────────┤ │ [CollapsibleSection] 品类成本热力图 │ │ ┌──────────────────────────────────────────┐ │ │ │ 热力图: 行=品类, 列=成本指标 │ │ │ │ 指标: 理论毛利率/实际毛利率/差异率/成本率 │ │ │ │ 颜色: 红=差, 绿=好 │ │ │ └──────────────────────────────────────────┘ │ ├─────────────────────────────────────────────────────────┤ │ [筛选器] │ │ 品类下拉 | 毛利率范围滑块 | 销量范围滑块 │ │ [按钮] 应用筛选 → 更新散点图 │ └─────────────────────────────────────────────────────────┘ ``` **API端点**: - `GET /api/cost-analysis/scatter?x=sales_quantity&y=cost_variance&size=sales_amount&color=category_l1` → 散点图数据 - `GET /api/cost-analysis/category-heatmap` → 品类热力图 --- ## 组件复用清单 | 组件 | 用途 | 已有 | |------|------|------| | `CollapsibleSection` | 折叠面板 | ✅ | | `MetricCard` | 指标卡片 | ✅ | | `DataTable` | 数据表格 | ✅ | | `Pagination` | 分页 | ✅ | | `Badge` | 状态标签 | ✅ | | `LoadingSpinner` | 加载中 | ✅ | | `BarChart` | 柱状图 | ✅ recharts | | `PieChart` | 饼图 | ✅ recharts | | `ScatterChart` | 散点图 | ✅ recharts | | `StoreMap` | 地图 | ✅ 已有 | | Tab切换组件 | Tab栏 | ❌ 需新建 | | 搜索框组件 | 菜品搜索 | ❌ 用input实现 | | 筛选器组件 | 下拉/滑块 | ❌ 用select/input实现 | ## 新增文件清单 | 文件 | 说明 | |------|------| | `client/src/pages/CostAnalysisPage.tsx` | 主页面(Tab容器) | | `client/src/components/Tabs.tsx` | Tab切换组件 | | `client/src/components/cost-analysis/OverviewTab.tsx` | Tab1: 成本总览 | | `client/src/components/cost-analysis/ProfitabilityTab.tsx` | Tab2: 菜品盈利 | | `client/src/components/cost-analysis/MaterialTab.tsx` | Tab3: 原料差异 | | `client/src/components/cost-analysis/BomTab.tsx` | Tab4: BOM与配方 | | `client/src/components/cost-analysis/SupplyTab.tsx` | Tab5: 供应链精简 | | `client/src/components/cost-analysis/PackagingTab.tsx` | Tab6: 包装耗材 | | `client/src/components/cost-analysis/QualityTab.tsx` | Tab7: 数据质量 | | `client/src/components/cost-analysis/StoreTab.tsx` | Tab8: 门店成本 | | `client/src/components/cost-analysis/ExploreTab.tsx` | Tab9: 可视化探索 | | `server/src/routes/cost-analysis.ts` | API路由(所有端点) | ## API端点汇总 | 端点 | Tab | 说明 | |------|-----|------| | `GET /api/cost-analysis/overview` | 1 | 成本总览指标 | | `GET /api/cost-analysis/category-comparison` | 1 | 品类成本对比 | | `GET /api/cost-analysis/margin-deviation` | 1 | 毛利率偏差分布 | | `GET /api/cost-analysis/variance-top` | 1 | 成本差异TOP榜 | | `GET /api/cost-analysis/menu-engineering` | 2 | 菜单工程矩阵 | | `GET /api/cost-analysis/profitability` | 2 | 菜品盈利明细 | | `GET /api/cost-analysis/pricing` | 2 | 定价合理性 | | `GET /api/cost-analysis/material-variance` | 3 | 菜品原料差异分解 | | `GET /api/cost-analysis/loss-distribution` | 3 | 损耗率分布 | | `GET /api/cost-analysis/material-loss-top` | 3 | 超耗物料TOP | | `GET /api/cost-analysis/material-type-loss` | 3 | 物料类型损耗对比 | | `GET /api/cost-analysis/bom-overview` | 4 | BOM总览 | | `GET /api/cost-analysis/bom-complexity` | 4 | BOM复杂度 | | `GET /api/cost-analysis/bom-high-loss` | 4 | 高损耗BOM预警 | | `GET /api/cost-analysis/bom-missing` | 4 | 缺BOM的SKU | | `GET /api/cost-analysis/bom-composition` | 4 | 菜品物料构成 | | `GET /api/cost-analysis/material-sharing` | 5 | 原料共用度 | | `GET /api/cost-analysis/unique-material-risk` | 5 | 独有原料风险 | | `POST /api/cost-analysis/sku-simplify-simulate` | 5 | SKU精简模拟 | | `GET /api/cost-analysis/material-demand` | 5 | 物料需求预测 | | `GET /api/cost-analysis/packaging-overview` | 6 | 包装总览 | | `GET /api/cost-analysis/packaging-detail` | 6 | 包装明细 | | `GET /api/cost-analysis/packaging-loss-top` | 6 | 包装损耗TOP | | `GET /api/cost-analysis/data-quality` | 7 | 数据质量总览 | | `GET /api/cost-analysis/unmatched-dishes` | 7 | 未匹配菜品 | | `GET /api/cost-analysis/unmatched-materials` | 7 | 未匹配物料 | | `GET /api/cost-analysis/store-overview` | 8 | 门店成本总览 | | `GET /api/cost-analysis/store-map` | 8 | 门店地图数据 | | `GET /api/cost-analysis/store-ranking` | 8 | 门店超耗排名 | | `GET /api/cost-analysis/scatter` | 9 | 散点图数据 | | `GET /api/cost-analysis/category-heatmap` | 9 | 品类热力图 | 共 **31个API端点**,覆盖27个分析模块。 ## 落地顺序 与指标体系的4批对应: | 批次 | Tab | 优先级 | API数 | |------|-----|--------|-------| | 第一批 | Tab1 + Tab2 + Tab3 | 最高 | 11 | | 第二批 | Tab4 + Tab6 + Tab7 | 高 | 10 | | 第三批 | Tab8 | 中 | 3 | | 第四批 | Tab5 + Tab9 | 低 | 7 |