522 lines
21 KiB
Markdown
522 lines
21 KiB
Markdown
# 连锁餐饮数字化运营管理体系 — 技术架构方案与实施计划
|
||
|
||
> 基于现有 PostgreSQL 数据库、50+ 分析视图和 17 份分析报告,构建可落地的数字化运营管理平台
|
||
> 目标:实现"数据发现问题 → 自动分级 → 生成门店任务 → 现场执行 → 周度检查 → 月度验收 → 有效经验标准化"闭环
|
||
|
||
---
|
||
|
||
## 一、现有资产盘点
|
||
|
||
### 1.1 数据库资产
|
||
|
||
| 资产 | 规模 | 说明 |
|
||
|---|---:|---|
|
||
| `public.bill_records` | 1,677,990行 | 原始账单,196个文本字段(c001-c196) |
|
||
| `public.bill_columns` | — | 字段映射字典 |
|
||
| `public.dish_sales_details` | 5,553,314行 | 菜品销售明细,91家门店 |
|
||
| `public.inventory_cost_records` | 54,973行 | 盘点倒挤成本,121个成本单位 |
|
||
| `public.inventory_store_mapping` | — | 成本单位→销售门店映射 |
|
||
| `analytics` schema | 3表+41视图+9物化视图 | 已建分析层 |
|
||
|
||
### 1.2 数据库连接
|
||
|
||
- PostgreSQL 15(Homebrew),`localhost:5432`
|
||
- 数据库:`bill_query`
|
||
- 用户:`freedak`(trust认证,仅本机开发)
|
||
- 前端不直连数据库,通过后端API访问
|
||
|
||
---
|
||
|
||
## 二、技术选型
|
||
|
||
### 2.1 整体架构
|
||
|
||
```
|
||
┌─────────────────────────────────────────────────────┐
|
||
│ 前端 (React) │
|
||
│ 管理驾驶舱 / 区域经理页面 / 店长页面 / 专业部门页面 │
|
||
│ TailwindCSS + shadcn/ui │
|
||
├─────────────────────────────────────────────────────┤
|
||
│ 后端 API (Node.js) │
|
||
│ Express + TypeScript │
|
||
│ RESTful API + WebSocket (实时推送) │
|
||
├─────────────────────────────────────────────────────┤
|
||
│ 数据层 (PostgreSQL 15) │
|
||
│ 原始层 → 标准层 → 事实层 → 汇总层 → 应用层 │
|
||
│ bill_query @ localhost:5432 │
|
||
└─────────────────────────────────────────────────────┘
|
||
```
|
||
|
||
### 2.2 技术栈明细
|
||
|
||
| 层 | 技术 | 理由 |
|
||
|---|---|---|
|
||
| 前端框架 | React 18 + TypeScript | 组件化、类型安全、生态成熟 |
|
||
| UI组件 | TailwindCSS + shadcn/ui | 快速构建高质量管理界面 |
|
||
| 图表 | Recharts | React原生图表库,支持下钻交互 |
|
||
| 路由 | React Router v6 | 多页面管理 |
|
||
| 状态管理 | TanStack Query (React Query) | 服务端状态管理,缓存/刷新/乐观更新 |
|
||
| 后端 | Node.js + Express + TypeScript | 轻量、快速开发、与前端同语言 |
|
||
| 数据库驱动 | pg (node-postgres) | PostgreSQL原生驱动 |
|
||
| API风格 | RESTful | 简单直观,适合管理后台 |
|
||
| 认证 | JWT (json-webtoken) | 轻量级角色权限控制 |
|
||
| 进程管理 | tsx (开发) / pm2 (生产) | 开发热重载,生产稳定 |
|
||
|
||
### 2.3 项目结构
|
||
|
||
```
|
||
SBrainCO/
|
||
├── package.json # 根工作区配置
|
||
├── run.md # 数据库连接信息
|
||
├── 技术架构方案与实施计划.md # 本文档
|
||
├── 马兰拉面数据分析/ # 现有分析文档和SQL(保留不动)
|
||
│
|
||
├── server/ # 后端
|
||
│ ├── package.json
|
||
│ ├── tsconfig.json
|
||
│ ├── src/
|
||
│ │ ├── index.ts # 入口
|
||
│ │ ├── config/
|
||
│ │ │ └── database.ts # PostgreSQL连接池配置
|
||
│ │ ├── middleware/
|
||
│ │ │ ├── auth.ts # JWT认证中间件
|
||
│ │ │ └── error.ts # 统一错误处理
|
||
│ │ ├── routes/
|
||
│ │ │ ├── overview.ts # 公司概览API
|
||
│ │ │ ├── stores.ts # 门店管理API
|
||
│ │ │ ├── cost.ts # 成本管理API
|
||
│ │ │ ├── platform.ts # 平台经济性API
|
||
│ │ │ ├── member.ts # 会员复购API
|
||
│ │ │ ├── sku.ts # 商品SKU API
|
||
│ │ │ ├── risk.ts # 风险内控API
|
||
│ │ │ ├── tasks.ts # 任务闭环API
|
||
│ │ │ └── benchmark.ts # 标杆分析API
|
||
│ │ ├── services/
|
||
│ │ │ ├── queryService.ts # 通用查询服务
|
||
│ │ │ ├── taskService.ts # 任务生成与跟进
|
||
│ │ │ └── gradingService.ts # 门店自动分级
|
||
│ │ └── types/
|
||
│ │ └── index.ts # 共享类型定义
|
||
│ └── .env # 环境变量
|
||
│
|
||
├── client/ # 前端
|
||
│ ├── package.json
|
||
│ ├── tsconfig.json
|
||
│ ├── vite.config.ts
|
||
│ ├── index.html
|
||
│ ├── src/
|
||
│ │ ├── main.tsx
|
||
│ │ ├── App.tsx # 路由配置
|
||
│ │ ├── api/
|
||
│ │ │ └── client.ts # API客户端
|
||
│ │ ├── components/
|
||
│ │ │ ├── ui/ # shadcn/ui基础组件
|
||
│ │ │ ├── charts/ # 图表组件
|
||
│ │ │ ├── layout/ # 布局组件
|
||
│ │ │ └── common/ # 通用组件
|
||
│ │ ├── pages/
|
||
│ │ │ ├── HeadquartersDashboard.tsx # 总部驾驶舱
|
||
│ │ │ ├── RegionalManager.tsx # 区域经理页面
|
||
│ │ │ ├── StoreManager.tsx # 店长页面
|
||
│ │ │ ├── ProductDept.tsx # 商品部页面
|
||
│ │ │ ├── MemberDept.tsx # 会员部页面
|
||
│ │ │ ├── FinanceDept.tsx # 财务页面
|
||
│ │ │ ├── SupplyChainDept.tsx # 供应链页面
|
||
│ │ │ ├── ITDept.tsx # 信息部页面
|
||
│ │ │ └── StoreDetail.tsx # 门店详情(下钻)
|
||
│ │ ├── hooks/
|
||
│ │ │ └── useApi.ts # 数据查询hooks
|
||
│ │ └── lib/
|
||
│ │ └── utils.ts # 工具函数
|
||
│ └── tailwind.config.ts
|
||
│
|
||
└── shared/ # 前后端共享类型
|
||
└── types.ts
|
||
```
|
||
|
||
---
|
||
|
||
## 三、数据层设计
|
||
|
||
### 3.1 现有视图直接复用
|
||
|
||
以下视图已有且可直接作为API数据源:
|
||
|
||
| API模块 | 数据源视图 | 说明 |
|
||
|---|---|---|
|
||
| 公司概览 | `v_overview_daily` | 日度实收/账单/客单/优惠率/毛利率 |
|
||
| 门店记分卡 | `v_store_scorecard` | 门店核心指标 |
|
||
| 门店风险分级 | `v_store_risk_rating` | 红黄绿分级 |
|
||
| 门店经营象限 | `v_store_benchmark` | 明星/规模承压/高效潜力/重点改善 |
|
||
| 门店行动清单 | `v_store_action_list` | 含品类结构和平台成本 |
|
||
| 门店执行优先级 | `v_store_execution_priority` | 含餐段/会员/零实收机会 |
|
||
| 平台经济性 | `v_store_platform_economics` | 三平台收入/折扣/佣金/成本率 |
|
||
| 会员对比 | `v_member_comparison` | 会员vs非会员 |
|
||
| 会员复购 | `v_store_repeat_summary_monthly` | 门店复购率 |
|
||
| 餐段机会 | `v_store_meal_opportunity` | 餐段平均单价提升空间 |
|
||
| 会员渗透 | `v_store_member_opportunity` | 会员转化空间 |
|
||
| 零实收 | `v_zero_received_detail` / `v_zero_received_store_summary` | 零实收归因 |
|
||
| 异常账单 | `v_anomaly_bills` / `v_anomaly_summary` | 异常明细和汇总 |
|
||
| 营销方案 | `v_marketing_plan_summary` | 各营销方案效果 |
|
||
| 收银员风险 | `v_cashier_risk` | 收银员异常率 |
|
||
| 星期/小时 | `v_weekday_summary` / `v_hourly_summary` | 时间规律 |
|
||
| 渠道 | `v_channel_daily` | 支付渠道结构 |
|
||
| 品类 | `category_summary` / `v_store_category_mix` | 品类贡献和门店结构 |
|
||
| 优惠 | `discount_summary` | 优惠项目汇总 |
|
||
| 深入诊断 | `v_store_deep_diagnosis_april` | 门店综合诊断 |
|
||
| 整改优先级 | `v_store_action_priority_deep_april` | P0/P1/P2分级 |
|
||
| 成本对比 | `v_store_theoretical_actual_cost_april` | 理论vs实际 |
|
||
| 分类成本 | `v_store_category_cost_benchmark_april` | 同类对标 |
|
||
| 库存效率 | `v_store_inventory_efficiency_april` | 库存天数/异常 |
|
||
| 标杆 | `v_store_benchmark_composite` | 综合标杆 |
|
||
| 任务计划 | `store_monthly_action_plan` | 门店月度计划(表) |
|
||
| 任务跟进 | `v_store_monthly_followup` | 计划vs实际 |
|
||
| SKU ABC | `v_dish_sku_abc_april` | SKU分级 |
|
||
| 菜品销售 | `dish_sales_april` / `dish_sku_summary_april` | 菜品分析 |
|
||
| 搭售 | `dish_pair_summary_april` / `dish_basket_april` | 购物篮分析 |
|
||
| 重点改进 | `v_priority_store_improvement` | 重点改进门店 |
|
||
|
||
### 3.2 需新建的表和视图
|
||
|
||
#### 任务闭环表(第一阶段核心)
|
||
|
||
```sql
|
||
-- 门店整改任务表
|
||
CREATE TABLE analytics.store_task (
|
||
task_id SERIAL PRIMARY KEY,
|
||
plan_month DATE NOT NULL,
|
||
store_code TEXT NOT NULL,
|
||
store_name TEXT NOT NULL,
|
||
priority TEXT NOT NULL, -- P0/P1/P2/P3
|
||
problem_indicator TEXT NOT NULL, -- 问题指标
|
||
current_value NUMERIC,
|
||
benchmark_value NUMERIC,
|
||
target_value NUMERIC,
|
||
problem_description TEXT,
|
||
action_required TEXT, -- 具体行动,不允许只写"加强管理"
|
||
owner TEXT NOT NULL, -- 责任人
|
||
collaborators TEXT, -- 协同人
|
||
deadline DATE NOT NULL,
|
||
status TEXT DEFAULT '待启动', -- 待启动/进行中/已完成/已验收/已回滚
|
||
process_evidence TEXT, -- 过程证据(照片URL、文档链接)
|
||
verification_indicator TEXT, -- 验收指标
|
||
verification_result TEXT, -- 验收结果
|
||
incomplete_reason TEXT, -- 未完成原因
|
||
next_step TEXT, -- 下一步
|
||
created_at TIMESTAMPTZ DEFAULT NOW(),
|
||
updated_at TIMESTAMPTZ DEFAULT NOW()
|
||
);
|
||
|
||
-- 任务状态变更日志
|
||
CREATE TABLE analytics.store_task_log (
|
||
log_id SERIAL PRIMARY KEY,
|
||
task_id INT REFERENCES analytics.store_task(task_id),
|
||
action TEXT NOT NULL, -- 创建/更新/完成/验收/回滚
|
||
old_status TEXT,
|
||
new_status TEXT,
|
||
operator TEXT NOT NULL,
|
||
comment TEXT,
|
||
created_at TIMESTAMPTZ DEFAULT NOW()
|
||
);
|
||
```
|
||
|
||
#### 通用月度汇总视图(替代 `_april` 固定视图)
|
||
|
||
```sql
|
||
-- 门店月度汇总(按 report_month 参数化)
|
||
CREATE OR REPLACE FUNCTION analytics.f_store_monthly_summary(p_month DATE)
|
||
RETURNS TABLE(...) AS $$
|
||
SELECT ... FROM analytics.bill_fact
|
||
WHERE date_trunc('month', closed_at) = p_month
|
||
GROUP BY store_code, store_name;
|
||
$$ LANGUAGE sql STABLE;
|
||
```
|
||
|
||
---
|
||
|
||
## 四、API设计
|
||
|
||
### 4.1 API路由总览
|
||
|
||
| 方法 | 路径 | 说明 | 对应视图 |
|
||
|---|---|---|---|
|
||
| GET | `/api/overview` | 公司概览 | `v_overview_daily` |
|
||
| GET | `/api/overview/daily` | 日度趋势 | `v_overview_daily` |
|
||
| GET | `/api/stores` | 门店列表 | `v_store_scorecard` |
|
||
| GET | `/api/stores/:code` | 门店详情 | 多视图联查 |
|
||
| GET | `/api/stores/:code/daily` | 门店日度 | `v_store_daily` |
|
||
| GET | `/api/stores/risk` | 门店风险分级 | `v_store_risk_rating` |
|
||
| GET | `/api/stores/quadrant` | 经营象限 | `v_store_benchmark` |
|
||
| GET | `/api/stores/priority` | 整改优先级 | `v_store_action_priority_deep_april` |
|
||
| GET | `/api/stores/:code/cost` | 门店成本 | `v_store_theoretical_actual_cost_april` |
|
||
| GET | `/api/stores/:code/platform` | 门店平台 | `v_store_platform_economics` |
|
||
| GET | `/api/stores/:code/meal` | 门店餐段 | `v_store_meal_opportunity` |
|
||
| GET | `/api/stores/:code/member` | 门店会员 | `v_store_member_opportunity` |
|
||
| GET | `/api/cost/comparison` | 成本对比 | `v_store_theoretical_actual_cost_april` |
|
||
| GET | `/api/cost/category-benchmark` | 分类成本对标 | `v_store_category_cost_benchmark_april` |
|
||
| GET | `/api/cost/inventory` | 库存效率 | `v_store_inventory_efficiency_april` |
|
||
| GET | `/api/platform/economics` | 平台经济性 | `v_store_platform_economics` |
|
||
| GET | `/api/member/comparison` | 会员对比 | `v_member_comparison` |
|
||
| GET | `/api/member/repeat` | 复购分析 | `v_store_repeat_summary_monthly` |
|
||
| GET | `/api/sku/abc` | SKU ABC分析 | `v_dish_sku_abc_april` |
|
||
| GET | `/api/sku/category` | 品类结构 | `category_summary` |
|
||
| GET | `/api/sku/attach` | 搭售分析 | `dish_pair_summary_april` |
|
||
| GET | `/api/risk/anomaly` | 异常账单 | `v_anomaly_bills` |
|
||
| GET | `/api/risk/cashier` | 收银员风险 | `v_cashier_risk` |
|
||
| GET | `/api/risk/zero-received` | 零实收 | `v_zero_received_detail` |
|
||
| GET | `/api/marketing/plans` | 营销方案 | `v_marketing_plan_summary` |
|
||
| GET | `/api/benchmark/composite` | 标杆分析 | `v_store_benchmark_composite` |
|
||
| GET | `/api/tasks` | 任务列表 | `store_monthly_action_plan` |
|
||
| GET | `/api/tasks/:id` | 任务详情 | `store_task` |
|
||
| POST | `/api/tasks` | 创建任务 | `store_task` |
|
||
| PUT | `/api/tasks/:id` | 更新任务 | `store_task` |
|
||
| PUT | `/api/tasks/:id/verify` | 验收任务 | `store_task` |
|
||
| GET | `/api/tasks/followup` | 任务跟进 | `v_store_monthly_followup` |
|
||
| GET | `/api/time/weekday` | 星期规律 | `v_weekday_summary` |
|
||
| GET | `/api/time/hourly` | 小时规律 | `v_hourly_summary` |
|
||
| GET | `/api/channel` | 渠道结构 | `v_channel_daily` |
|
||
|
||
### 4.2 查询参数支持
|
||
|
||
- `month`: 月份筛选(默认2026-04)
|
||
- `store_code`: 门店筛选
|
||
- `priority`: 优先级筛选(P0/P1/P2/P3)
|
||
- `risk_level`: 风险等级(红/黄/绿)
|
||
- `quadrant`: 经营象限
|
||
- `page` + `page_size`: 分页
|
||
- `sort_by` + `sort_order`: 排序
|
||
|
||
### 4.3 响应格式
|
||
|
||
```typescript
|
||
interface ApiResponse<T> {
|
||
success: boolean;
|
||
data: T;
|
||
meta?: {
|
||
total?: number;
|
||
page?: number;
|
||
page_size?: number;
|
||
};
|
||
error?: string;
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
## 五、前端页面设计
|
||
|
||
### 5.1 页面与角色映射
|
||
|
||
| 页面 | 角色 | 核心内容 | 对应文档章节 |
|
||
|---|---|---|---|
|
||
| 总部驾驶舱 | 总经理/经营班子 | 公司利润桥、P0/P1门店、重大风险 | §9.1 |
|
||
| 区域经理 | 区域经理 | 门店红黄绿、任务完成、周度改善 | §9.2 |
|
||
| 店长页面 | 店长 | 昨日异常、今日待办、核心指标 | §9.3 / §6.1 |
|
||
| 商品部 | 商品负责人 | SKU ABC、长尾、搭售、缺货 | §9.4 |
|
||
| 会员部 | 会员负责人 | 首购、复购、沉睡、召回 | §9.4 |
|
||
| 财务部 | 财务负责人 | 理论vs实际成本、平台费用、异常优惠 | §9.4 |
|
||
| 供应链 | 供应链负责人 | 采购价格、库存、调拨、损耗 | §9.4 |
|
||
| 信息部 | 信息负责人 | 数据更新状态、映射失败、接口异常 | §9.4 |
|
||
| 门店详情 | 所有角色 | 门店全维度下钻 | 下钻页 |
|
||
|
||
### 5.2 总部驾驶舱详细设计
|
||
|
||
**首页指标卡**(对应 §9.1):
|
||
- 实收金额 + 环比
|
||
- 账单数 + 环比
|
||
- 平均客单价 + 环比
|
||
- 理论成本率
|
||
- 实际成本率
|
||
- 成本差异率
|
||
- 平台合并加权成本率
|
||
- 会员30日复购率
|
||
- P0/P1门店数 + 实收覆盖
|
||
|
||
**图表区**:
|
||
- 日度实收趋势折线图(可切换日/周/月)
|
||
- 门店风险分级分布(红黄绿堆叠图)
|
||
- 门店经营象限散点图(日均实收 × 毛利率)
|
||
- 平台成本率分布柱状图
|
||
- P0/P1门店实收覆盖瀑布图
|
||
|
||
**下钻能力**:
|
||
- 公司 → 区域 → 门店 → 餐段 → 渠道 → SKU → 原料 → 任务
|
||
|
||
### 5.3 店长页面设计(对应 §6.1 / §9.3)
|
||
|
||
**昨日经营卡**(6个模块,每模块3个异常上限):
|
||
- 收入:实收/账单/客单 vs 最近4个同星期
|
||
- 商品:核心SKU销量/缺货/搭售率
|
||
- 优惠:优惠率/异常优惠/平台活动
|
||
- 会员:新会员/二次到店/待召回
|
||
- 成本:高价值原料领用/报损/盘点异常
|
||
- 风险:零实收/撤单/退款/异常操作
|
||
|
||
**今日待办**(最多3项):
|
||
- 系统自动生成的任务
|
||
- 可标记完成/填写原因/上传凭证
|
||
|
||
**本周进度**:
|
||
- 核心指标 vs 目标的进度条
|
||
- 任务完成率
|
||
|
||
### 5.4 区域经理页面设计(对应 §6.3 / §9.2)
|
||
|
||
- 门店红黄绿列表/地图
|
||
- 本周需到店检查的门店
|
||
- 各店核心指标(最多2个)
|
||
- 任务责任人/截止日/状态
|
||
- 同类门店基准对比
|
||
- 最近4周趋势
|
||
|
||
---
|
||
|
||
## 六、任务闭环系统设计
|
||
|
||
### 6.1 自动分级逻辑(对应 §7.1)
|
||
|
||
```
|
||
P0: 数据失真 / 重大风险 / 四项以上综合问题
|
||
→ 当日确认、7天内形成方案
|
||
P1: 对利润或顾客持续产生明显影响
|
||
→ 48小时确认、当月整改
|
||
P2: 单项指标偏弱但总体可控
|
||
→ 一周内纳入计划
|
||
P3: 正常波动或观察项
|
||
→ 持续监控
|
||
```
|
||
|
||
### 6.2 任务自动生成规则
|
||
|
||
基于 `v_store_action_priority_deep_april` 和 `store_monthly_action_plan`:
|
||
- 高优惠(>23%) → 拆解平台折扣任务
|
||
- 低毛利(<70%) → SKU成本分析任务
|
||
- 高异常(>1.5%) → 全额优惠治理任务
|
||
- 低复购(<25%) → 会员触达任务
|
||
- 低客单(<33.63) → 餐段组合优化任务
|
||
- 标杆门店 → 经验输出任务
|
||
|
||
### 6.3 任务字段(对应 §7.2)
|
||
|
||
每个任务必须包含:
|
||
- 问题门店、问题指标、发生日期
|
||
- 当前值、同类基准、目标值
|
||
- 问题说明及可能原因
|
||
- 具体行动(不允许只写"加强管理")
|
||
- 责任人、协同人、截止日期
|
||
- 过程证据
|
||
- 验收指标和验收结果
|
||
- 未完成原因及下一步
|
||
|
||
### 6.4 验收规则(对应 §6.4 / §7.3)
|
||
|
||
- 每家门店每月最多两个核心改进指标
|
||
- 连续两周不改善 → 重新判断原因
|
||
- 指标改善但顾客/收入恶化 → 回滚
|
||
- 验收标准:收入稳定 + 毛利改善 + 客户指标稳定 + 异常率下降
|
||
|
||
---
|
||
|
||
## 七、实施路线图
|
||
|
||
### 第一阶段:0-30天 — 基础平台 + 管理驾驶舱
|
||
|
||
**目标**:让现有分析真正进入管理,实现可视化驾驶舱和任务闭环
|
||
|
||
| 周次 | 后端任务 | 前端任务 | 数据层任务 |
|
||
|---|---|---|---|
|
||
| W1 | 项目搭建、DB连接池、基础API框架 | 项目搭建、UI框架、布局组件 | 创建 `store_task` 表 |
|
||
| W2 | 概览API、门店API、风险API | 总部驾驶舱首页 | 创建任务自动生成函数 |
|
||
| W3 | 成本API、平台API、会员API、SKU API | 区域经理页面、门店详情页 | — |
|
||
| W4 | 任务API(CRUD+验收)、标杆API | 店长页面、任务管理页面 | 任务自动生成并关联门店 |
|
||
|
||
**第一阶段交付物**:
|
||
1. 总部驾驶舱(公司概览 + 门店分级 + 下钻)
|
||
2. 区域经理页面(门店红黄绿 + 任务跟进)
|
||
3. 店长页面(昨日经营卡 + 今日待办)
|
||
4. 任务闭环系统(自动分级 → 生成任务 → 状态更新 → 验收)
|
||
5. 门店详情页(全维度指标下钻)
|
||
|
||
**验收标准**:
|
||
- 门店任务有责任人、有截止日、有结果
|
||
- P0/P1门店问题可以下钻到具体指标和原始明细
|
||
- 所有指标可按月份、门店筛选
|
||
|
||
### 第二阶段:31-90天 — 补齐成本和利润主链路
|
||
|
||
| 模块 | 任务 |
|
||
|---|---|
|
||
| 数据层 | 建设标准主数据(dim_store/dim_sku/dim_material等) |
|
||
| 数据层 | 将 `_april` 固定视图改为通用月度模型 |
|
||
| 数据层 | 建立周趋势、同比、环比和整改前后对照 |
|
||
| 后端 | 通用月度参数化API |
|
||
| 前端 | 趋势对比页面、整改前后对照 |
|
||
| 前端 | 专业部门页面(商品/会员/财务/供应链/信息) |
|
||
| 前端 | 标杆分析页面与经验推广跟踪 |
|
||
|
||
**第二阶段交付物**:
|
||
1. 商品部页面(SKU ABC + 长尾治理 + 搭售分析)
|
||
2. 会员部页面(复购漏斗 + 沉睡召回 + 活动贡献)
|
||
3. 财务页面(理论vs实际成本 + 平台损益 + 异常优惠)
|
||
4. 供应链页面(库存效率 + 异常货品 + 成本对标)
|
||
5. 信息部页面(数据质量监控)
|
||
6. 月度参数化模型(支持任意月份切换)
|
||
7. 趋势对比和整改前后对照
|
||
|
||
### 第三阶段:3-6个月 — 预测和精细化运营
|
||
|
||
- 餐段销量预测、备货建议
|
||
- 排班建议
|
||
- 会员分层、流失预警、自动召回
|
||
- SKU新品准入和旧品退出机制
|
||
- 供应商评价
|
||
|
||
---
|
||
|
||
## 八、开发环境与启动命令
|
||
|
||
### 8.1 环境要求
|
||
|
||
- Node.js >= 18
|
||
- PostgreSQL 15(已有)
|
||
- npm 或 pnpm
|
||
|
||
### 8.2 环境变量
|
||
|
||
```env
|
||
# server/.env
|
||
DB_HOST=localhost
|
||
DB_PORT=5432
|
||
DB_NAME=bill_query
|
||
DB_USER=freedak
|
||
DB_PASSWORD=
|
||
PORT=3001
|
||
JWT_SECRET=your-secret-key
|
||
CLIENT_URL=http://localhost:5173
|
||
```
|
||
|
||
### 8.3 启动命令
|
||
|
||
```bash
|
||
# 安装依赖
|
||
cd server && npm install
|
||
cd ../client && npm install
|
||
|
||
# 开发模式启动
|
||
cd server && npm run dev # 后端 http://localhost:3001
|
||
cd client && npm run dev # 前端 http://localhost:5173
|
||
```
|
||
|
||
---
|
||
|
||
## 九、关键约束与注意事项
|
||
|
||
1. **不修改现有SQL和视图**:所有现有分析视图保持不动,后端API直接查询
|
||
2. **不修改原始数据表**:`bill_records`、`dish_sales_details`等保持原样
|
||
3. **新增表放在 `analytics` schema**:与现有分析对象统一管理
|
||
4. **API不暴露SQL**:后端封装查询逻辑,前端只消费RESTful API
|
||
5. **月份参数化**:所有API支持 `month` 参数,默认 `2026-04`
|
||
6. **角色权限**:总部/区域/店长/专业部门看到不同页面和数据范围
|
||
7. **移动端适配**:店长页面优先移动端,其他页面桌面端为主
|
||
8. **数据安全**:JWT认证,敏感数据脱敏,不暴露数据库连接信息
|