feat: 连锁餐饮数字本体与AI经营智脑 - 新增分析页面、ETL脚本、总结文档
This commit is contained in:
@@ -0,0 +1,152 @@
|
||||
# 需要补充的数据清单
|
||||
|
||||
> 日期:2026-08-02
|
||||
> 基于数据库实际表结构和行数验证
|
||||
|
||||
---
|
||||
|
||||
## 一、可从现有数据自动ETL生成(无需人工录入)
|
||||
|
||||
### 1. `dim_member` — 会员主数据(空表 → 可从bill_fact聚合)
|
||||
|
||||
| 字段 | 来源 | 生成方式 |
|
||||
|------|------|----------|
|
||||
| `member_id` | `bill_fact.member_id` | DISTINCT 提取8.3万个会员ID |
|
||||
| `register_store` | `bill_fact.store_code` | 该会员首笔消费的门店 |
|
||||
| `register_date` | `bill_fact.opened_at` | 该会员首笔消费日期 |
|
||||
| `register_channel` | `bill_fact` 各平台收入字段 | 首笔消费的支付渠道判断 |
|
||||
| `member_level` | `bill_fact.member_level` | 取最新等级(需标准化:1-7 → 普通/银卡/金卡/钻石) |
|
||||
| `total_orders` | `bill_fact` | 按member_id COUNT(DISTINCT bill_no) |
|
||||
| `total_revenue` | `bill_fact.received_total` | 按member_id SUM |
|
||||
| `last_order_date` | `bill_fact.opened_at` | 按member_id MAX |
|
||||
| `status` | 计算 | 活跃(30天内有消费)/沉睡(90天内)/流失(>90天) |
|
||||
|
||||
### 2. `dim_employee` — 员工主数据(空表 → 可从salary/attendance聚合)
|
||||
|
||||
| 字段 | 来源 | 生成方式 |
|
||||
|------|------|----------|
|
||||
| `employee_id` | `salary_detail_records.employee_code` | DISTINCT 提取3,326个员工编码 |
|
||||
| `employee_name` | 需人工补录 | 薪资表无姓名字段 |
|
||||
| `position` | `salary_detail_records.position` | 直接取(262种岗位需标准化) |
|
||||
| `store_code` | `salary_detail_records.org_level3` | 需映射org_level3到门店编码 |
|
||||
| `hire_date` | `salary_detail_records.hire_date` | 直接取(text格式需转date) |
|
||||
| `leave_date` | `salary_detail_records.leave_date` | 直接取(非空则为离职) |
|
||||
| `status` | 计算 | 在职(hire_date有值且leave_date为空)/离职 |
|
||||
|
||||
### 3. `dim_sku` — SKU主数据(空表 → 可从dish_sales_details聚合)
|
||||
|
||||
| 字段 | 来源 | 生成方式 |
|
||||
|------|------|----------|
|
||||
| `sku_code` | 需人工生成 | 当前无SKU编码体系,需建立编码规则 |
|
||||
| `standard_name` | `dish_sales_details.dish_name` | DISTINCT 提取1,745个菜品名 |
|
||||
| `category_l1` | `dish_sales_details.category_level1` | 直接取(53个一级分类) |
|
||||
| `category_l2` | `dish_sales_details.category_level2` | 直接取(59个二级分类) |
|
||||
| `abc_class` | `mv_dish_sku_abc_monthly.abc_class` | 取最新月度分类 |
|
||||
| `status` | 需人工判断 | 在售/停用/季节停 |
|
||||
| `tags` | 需人工标记 | 新品/季节品/区域品/战略品 |
|
||||
|
||||
### 4. `dim_channel` — 渠道主数据(空表 → 可从bill_fact字段推断)
|
||||
|
||||
| 字段 | 来源 | 生成方式 |
|
||||
|------|------|----------|
|
||||
| `channel_code` | 人工定义 | 堂食/美团外卖/淘宝外卖/京东外卖/支付宝/微信/现金/银联/抖音 |
|
||||
| `channel_name` | 人工定义 | 对应中文名 |
|
||||
| `channel_group` | 人工定义 | 堂食/外卖/支付 |
|
||||
| `commission_rate` | 需人工录入 | 各平台佣金率% |
|
||||
|
||||
---
|
||||
|
||||
## 二、需人工补录的数据
|
||||
|
||||
### 5. `dim_store` 补充字段(91行已有,但关键字段为空)
|
||||
|
||||
| 字段 | 现状 | 需补录内容 |
|
||||
|------|------|------------|
|
||||
| `open_date` | 大部分为空 | 91家店的开业日期(需查档案) |
|
||||
| `area_sqm` | 大部分为空 | 91家店的营业面积(㎡) |
|
||||
| `seat_count` | 大部分为空 | 91家店的座位数 |
|
||||
| `business_area` | 大部分为空 | 所在商圈名称 |
|
||||
| `region` | 87/91有值 | 4家缺失区域需补录 |
|
||||
|
||||
### 6. `dim_promotion` — 活动主数据(空表,需人工录入)
|
||||
|
||||
| 字段 | 需录入内容 |
|
||||
|------|------------|
|
||||
| `promotion_id` | 活动编码(如 P001-P031) |
|
||||
| `promotion_name` | 31种营销方案名称(从bill_fact.marketing_plan提取) |
|
||||
| `start_date` / `end_date` | 每个活动的起止日期 |
|
||||
| `platform_bear` | 平台承担金额或比例 |
|
||||
| `company_bear` | 公司承担金额或比例 |
|
||||
| `store_bear` | 门店承担金额或比例 |
|
||||
| `target_audience` | 新客/老客/全客 |
|
||||
| `budget` | 活动预算 |
|
||||
|
||||
### 7. `member_level` 标准化映射
|
||||
|
||||
当前 `bill_fact.member_level` 值为:`1, 2, 3, 4, 5, 6, 7, LV6, LV7, 空`,需统一映射:
|
||||
|
||||
| 当前值 | 标准化 |
|
||||
|--------|--------|
|
||||
| 1 | 普通 |
|
||||
| 2 | 银卡 |
|
||||
| 3 | 银卡 |
|
||||
| 4 | 金卡 |
|
||||
| 5 | 金卡 |
|
||||
| 6 | 钻石 |
|
||||
| 7 | 钻石 |
|
||||
| LV6 | 钻石 |
|
||||
| LV7 | 钻石 |
|
||||
|
||||
### 8. `position` 岗位标准化映射
|
||||
|
||||
当前 `salary_detail_records.position` 有262种不同值,需映射到标准岗位:
|
||||
|
||||
| 标准岗位 | 可能的原始值 |
|
||||
|----------|-------------|
|
||||
| 店长 | 店长、门店经理、店长助理 |
|
||||
| 厨师长 | 厨师长、后厨主管 |
|
||||
| 厨师 | 厨师、拉面师、炒菜师、配菜 |
|
||||
| 服务员 | 服务员、前厅、迎宾 |
|
||||
| 收银员 | 收银员、出纳 |
|
||||
| 配送员 | 配送、骑手 |
|
||||
| 其他 | 其他所有岗位 |
|
||||
|
||||
---
|
||||
|
||||
## 三、需新建数据源(无法从现有系统获取)
|
||||
|
||||
| 数据项 | 需要内容 | 获取方式 | 优先级 |
|
||||
|--------|----------|----------|--------|
|
||||
| **现金流数据** | 应收账款、应付账款、租金支付周期、供应商账期 | 接入财务系统(金蝶/用友等) | 高 |
|
||||
| **评价/口碑数据** | 美团/大众点评评分、差评内容、NPS | 美团商家API或爬虫 | 高 |
|
||||
| **投诉记录** | 投诉时间、类型、处理人、处理时效、满意度 | 接入客服系统或新建录入表 | 中 |
|
||||
| **SOP检查记录** | 出餐时间、卫生检查、服务标准达标率 | 新建检查录入表(可做小程序) | 中 |
|
||||
| **食品安全检查** | 检查项、结果、问题、整改跟踪 | 新建录入表或接入监管系统 | 中 |
|
||||
| **培训记录** | 培训课程、参训人、时间、考核成绩 | 接入培训系统或新建录入表 | 低 |
|
||||
| **竞品数据** | 周边竞品价格、菜单、客流 | 爬虫或第三方数据服务 | 低 |
|
||||
| **天气数据** | 每日天气、温度 | `dim_calendar`已有字段,接入天气API填充 | 低 |
|
||||
|
||||
---
|
||||
|
||||
## 四、优先级排序:先补什么
|
||||
|
||||
### 立即可做(ETL脚本,1-3天)
|
||||
|
||||
1. **填充 `dim_member`** — 从 `bill_fact` 聚合,解锁会员LTV/分层/活跃度分析
|
||||
2. **填充 `dim_employee`** — 从 `salary_detail_records` 聚合,解锁人才流动/绩效分析
|
||||
3. **填充 `dim_channel`** — 人工定义9个渠道,完善渠道分析
|
||||
4. **标准化 `member_level`** — 编写映射SQL,统一会员等级
|
||||
5. **标准化 `position`** — 编写映射SQL,统一岗位分类
|
||||
|
||||
### 需人工录入(1-2周)
|
||||
|
||||
6. **补录 `dim_store.open_date`** — 91家店开业日期,查档案补录
|
||||
7. **补录 `dim_store.area_sqm` / `seat_count`** — 91家店面积和座位数
|
||||
8. **录入 `dim_promotion`** — 31种营销方案的元数据
|
||||
9. **建立 `dim_sku` 编码体系** — 1,745个菜品的SKU编码和状态标记
|
||||
|
||||
### 需外部接入(长期)
|
||||
|
||||
10. **财务系统数据** — 现金流分析
|
||||
11. **评价平台API** — 口碑监控
|
||||
12. **客服/检查系统** — 投诉/SOP/食安分析
|
||||
Reference in New Issue
Block a user