科技部驾驶舱数据分析梳理.md 28.5 KB

科技部驾驶舱数据分析梳理

📋 概述

本文档梳理科技部驾驶舱可以统计分析的数据维度。科技部分为科技一部科技二部,主要关注科美项目(溯源和Cell)的业绩数据。

重要说明:这是科技部维度的驾驶舱,数据统计按照科技部(一部/二部)进行,不涉及总经理维度。

⚠️ 重要说明:月份维度

所有统计数据都必须按月份统计,且不同月份科技部管理的门店可能不一致。

  1. 月份是核心维度:所有指标、排行、趋势、对比等数据都必须按月份统计,不能跨月汇总(除非明确说明是累计数据)
  2. 门店归属按月变化:门店的科技部归属关系存储在 lq_md_target 表中,通过 F_TechDepartment 字段(BASE_ORGANIZE表的组织ID)和 F_Month 字段(YYYYMM格式)区分不同月份
  3. 数据筛选规则
    • 查询指定月份的统计数据时,必须先从 lq_md_target 表获取该月份、该科技部归属的门店列表(F_TechDepartment = @科技部ID(BASE_ORGANIZE表的组织ID),F_Month = @统计月份
    • 然后使用该门店列表筛选业绩数据,确保只统计该月份归属该科技部的门店
    • 业绩数据的时间过滤使用业绩时间字段(yjsjhksjtksj)按月份过滤
  4. 趋势分析:虽然趋势图展示多个月份,但每个月份的数据都是独立计算的,使用该月份的门店归属关系

🎯 一、核心业务指标(关键指标卡片)

1.1 整体业绩指标

1.1.1 溯源金额

  • 说明:管理的所有门店中,品项的 F_BeautyType 为 "溯源系统" 或 "溯源" 的健康师业绩总和
  • 计算方式:开单溯源金额 - 退卡溯源金额
  • 数据来源
    • 开单:lq_kd_jksyj 表(F_BeautyType = '溯源系统' 或 '溯源')
    • 退卡:lq_hytk_jksyj 表(F_BeautyType = '溯源系统' 或 '溯源')
  • 时间维度必须按月份统计(YYYYMM格式)
  • 门店筛选:使用 lq_md_target 表获取指定月份(F_Month)、指定科技部(F_TechDepartment)归属的门店列表
  • 时间过滤:使用业绩时间字段(yjsjtksj)按月份过滤
  • 对比维度:环比(与上月对比)、同比(与去年同月对比)

1.1.2 Cell金额

  • 说明:管理的所有门店中,品项的 F_BeautyType 为 "cell" 或 "Cell" 的健康师业绩总和
  • 计算方式:开单Cell金额 - 退卡Cell金额
  • 数据来源
    • 开单:lq_kd_jksyj 表(F_BeautyType = 'cell' 或 'Cell')
    • 退卡:lq_hytk_jksyj 表(F_BeautyType = 'cell' 或 'Cell')
  • 时间维度必须按月份统计(YYYYMM格式)
  • 门店筛选:使用 lq_md_target 表获取指定月份(F_Month)、指定科技部(F_TechDepartment)归属的门店列表
  • 时间过滤:使用业绩时间字段(yjsjtksj)按月份过滤
  • 对比维度:环比(与上月对比)、同比(与去年同月对比)

1.1.3 科美总收入(溯源 + Cell)

  • 说明:管理的所有门店的科美项目总收入
  • 计算方式:溯源金额 + Cell金额
  • 用途:用于股份统计中的收入计算(收入的30%)

1.1.4 管理的门店数

  • 说明:指定月份归属该科技部的门店总数
  • 数据来源lq_md_target
  • 计算方式sql SELECT COUNT(DISTINCT F_StoreId) FROM lq_md_target WHERE F_TechDepartment = @科技部ID -- BASE_ORGANIZE表的组织ID(F_Id) AND F_Month = @统计月份
  • 重要说明必须按月份统计,不同月份管理的门店数量可能不同

1.1.5 活跃门店数

  • 说明:指定月份归属该科技部的门店中,有科美开单或消耗的门店数量
  • 计算方式
    1. 先从 lq_md_target 表获取指定月份、指定科技部归属的门店列表
    2. 统计这些门店中,在指定月份有科美开单或消耗的门店数量(去重)
  • 时间维度必须按月份统计

1.2 股份相关指标(基于股份统计表)

1.2.1 收入

  • 说明:管理的门店科美开单的30%(需减去退款)
  • 计算公式:(科美开单金额 - 科美退卡金额) × 30%
  • 数据来源
    • 开单:lq_kd_pxmx 表(F_BeautyType = 科美)关联 lq_kd_kdjlb
    • 退卡:lq_hytk_jksyjlq_hytk_hytk
  • 时间维度必须按月份统计
  • 门店筛选:使用 lq_md_target 表获取指定月份、指定科技部归属的门店列表

1.2.2 成本-报销

  • 说明:报销费用里面的"科技部报销"
  • 数据来源lq_reimbursement_applicationlq_reimbursement_category
  • 筛选条件
    • 一级分类为"科技部报销"
    • 根据申请门店的归属区分一部/二部
    • 必须按月份统计,根据报销申请时间或审批时间按月份过滤

1.2.3 成本-人工

  • 科技部老师底薪lq_tech_teacher_salary_statistics 表的 F_ActualBaseSalaryF_StatisticsMonth 字段过滤
  • 科技部老师手工费lq_xh_kjbsyj 表的 F_LaborCostF_BeautyType = 科美,按消耗时间 hksj 按月份过滤
  • 科技部老师开单提成lq_tech_teacher_salary_statistics 表的开单提成字段(F_StatisticsMonth 字段过滤
  • 科技部老师消耗提成lq_tech_teacher_salary_statistics 表的消耗提成字段(F_StatisticsMonth 字段过滤
  • 科技部总经理底薪lq_tech_general_manager_salary_statistics 表的 F_BaseSalary(固定4000元,F_StatisticsMonth 字段过滤,需要汇总该科技部所有总经理的底薪)
  • 科技部总经理提成lq_tech_general_manager_salary_statistics 表的提成字段(溯源提成 + Cell提成,F_StatisticsMonth 字段过滤,需要汇总该科技部所有总经理的提成)
  • 重要说明
    • 所有人工成本数据都必须按月份统计,使用工资统计表的 F_StatisticsMonth 字段或消耗表的消耗时间字段进行过滤
    • 总经理相关的成本需要汇总该科技部所有总经理的数据(可通过岗位字段 F_GW 关联 BASE_USER 表识别科技部总经理)

1.2.4 利润

  • 计算公式:利润 = 收入 - 成本报销 - 成本人工(所有人工成本项)
  • 数据来源lq_share_statistics_tech_dept

📊 二、趋势分析数据

2.1 业绩趋势

2.1.1 溯源金额趋势

  • 时间维度:近12个月、近6个月、近3个月、当月
  • 图表类型:折线图
  • 指标:月度溯源金额、累计溯源金额
  • 对比:支持环比、同比对比

2.1.2 Cell金额趋势

  • 时间维度:近12个月、近6个月、近3个月、当月
  • 图表类型:折线图
  • 指标:月度Cell金额、累计Cell金额
  • 对比:支持环比、同比对比

2.1.3 科美总收入趋势

  • 时间维度:近12个月、近6个月、近3个月、当月
  • 图表类型:折线图
  • 指标:月度总收入、累计总收入

2.1.4 溯源与Cell对比趋势

  • 图表类型:双折线图
  • 指标:溯源金额 vs Cell金额
  • 用途:分析两种类型的业绩占比变化

2.2 股份趋势

2.2.1 收入趋势

  • 时间维度:近12个月、近6个月、近3个月、当月
  • 图表类型:折线图
  • 指标:月度收入、累计收入

2.2.2 成本趋势

  • 时间维度:近12个月、近6个月、近3个月、当月
  • 图表类型:堆叠柱状图
  • 指标
    • 成本-报销
    • 成本-人工-老师底薪
    • 成本-人工-老师手工费
    • 成本-人工-老师开单提成
    • 成本-人工-老师消耗提成
    • 成本-人工-总经理底薪
    • 成本-人工-总经理提成

2.2.3 利润趋势

  • 时间维度:近12个月、近6个月、近3个月、当月
  • 图表类型:折线图或面积图
  • 指标:月度利润、累计利润、利润率

🏪 三、门店分析数据

3.1 门店业绩排行

3.1.1 门店溯源金额排行

  • 排序方式:按溯源金额降序
  • 展示字段:门店名称、溯源金额、占比、排名
  • 图表类型:条形图、表格
  • 筛选条件:支持按月份筛选

3.1.2 门店Cell金额排行

  • 排序方式:按Cell金额降序
  • 展示字段:门店名称、Cell金额、占比、排名
  • 图表类型:条形图、表格
  • 筛选条件:支持按月份筛选

3.1.3 门店科美总收入排行

  • 排序方式:按科美总收入降序
  • 展示字段:门店名称、科美总收入、占比、排名
  • 图表类型:条形图、表格
  • 筛选条件:支持按月份筛选

3.2 门店业绩明细

3.2.1 门店业绩分布

  • 图表类型:饼图或环形图
  • 展示内容:各门店的溯源金额、Cell金额占比
  • 用途:了解门店业绩贡献度分布

3.2.2 门店业绩对比

  • 图表类型:柱状图或折线图
  • 展示内容:多个门店的溯源金额、Cell金额对比
  • 支持功能:多门店选择对比

👥 四、人员分析数据

说明:科技部驾驶舱是科技部维度,不涉及总经理维度的统计。人员分析主要关注科技部老师的业绩情况。总经理相关的数据只在成本统计中作为人工成本的一部分进行汇总。

注意:虽然科技部有总经理,但驾驶舱数据统计是按科技部维度,不按总经理维度。总经理的成本数据会汇总到人工成本中,但不单独展示总经理业绩。

4.1 科技部老师业绩

4.1.1 老师业绩排行

  • 排序方式:按总业绩或消耗业绩降序
  • 展示字段
    • 老师姓名、所属门店
    • 开单业绩、消耗业绩、退卡业绩
    • 总业绩、项目数
    • 底薪、业绩提成、消耗提成
    • 应发工资
  • 数据来源lq_tech_teacher_salary_statistics
  • 筛选条件:支持按月份、门店筛选

4.1.2 老师业绩分布

  • 图表类型:饼图或环形图
  • 展示内容:各老师的业绩占比
  • 用途:了解老师业绩贡献度分布

4.1.3 老师业绩趋势

  • 图表类型:折线图
  • 展示内容:指定老师的近12个月业绩趋势
  • 支持功能:多老师选择对比

📈 五、运营分析数据

5.1 开单分析

5.1.1 开单次数

  • 说明:管理的门店科美项目开单总次数
  • 数据来源lq_kd_kdjlb 表关联 lq_kd_pxmx 表(F_BeautyType = 科美)
  • 时间维度:按月统计
  • 对比维度:环比、同比

5.1.2 平均开单金额

  • 计算公式:科美总收入 / 开单次数
  • 时间维度:按月统计

5.1.3 开单门店分布

  • 图表类型:饼图
  • 展示内容:各门店的开单次数占比

5.2 消耗分析

5.2.1 消耗次数

  • 说明:管理的门店科美项目消耗总次数
  • 数据来源lq_xh_hyhk 表关联 lq_xh_pxmx 表(F_BeautyType = 科美)
  • 时间维度:按月统计

5.2.2 消耗金额

  • 说明:管理的门店科美项目消耗总金额
  • 数据来源lq_xh_hyhk 表关联 lq_xh_pxmx
  • 时间维度:按月统计

5.2.3 消耗率

  • 计算公式:消耗金额 / 开单金额 × 100%
  • 用途:分析业绩转化情况

5.3 退卡分析

5.3.1 退卡次数

  • 说明:管理的门店科美项目退卡总次数
  • 数据来源lq_hytk_hytk 表关联退卡明细(科美项目)
  • 时间维度:按月统计

5.3.2 退卡金额

  • 说明:管理的门店科美项目退卡总金额
  • 数据来源lq_hytk_hytk 表关联退卡明细(科美项目)
  • 时间维度:按月统计

5.3.3 退卡率

  • 计算公式:退卡金额 / 开单金额 × 100%
  • 用途:分析退卡情况,评估风险

🔍 六、对比分析数据

6.1 时间对比

6.1.1 环比对比

  • 对比指标:溯源金额、Cell金额、科美总收入、收入、成本、利润
  • 计算方式:(当月 - 上月) / 上月 × 100%
  • 展示方式:数值 + 百分比 + 箭头(上升/下降)

6.1.2 同比对比

  • 对比指标:溯源金额、Cell金额、科美总收入、收入、成本、利润
  • 计算方式:(当月 - 去年同月) / 去年同月 × 100%
  • 展示方式:数值 + 百分比 + 箭头(上升/下降)

6.2 部门对比

6.2.1 科技一部 vs 科技二部

  • 对比指标
    • 溯源金额、Cell金额、科美总收入
    • 管理的门店数、活跃门店数
    • 收入、成本、利润
    • 总经理数量、老师数量
  • 图表类型:柱状图、折线图
  • 用途:了解两个部门的业绩对比

6.3 门店类型对比

6.3.1 按门店类型分组统计

  • 分组维度:门店类型(200平/旗舰店)、门店类别(A/B/C类)
  • 统计指标:溯源金额、Cell金额、科美总收入
  • 图表类型:柱状图、饼图
  • 用途:分析不同门店类型的业绩表现

📋 七、明细数据列表

7.1 门店明细列表

7.1.1 管理的门店列表

  • 展示字段
    • 门店名称、门店类型、门店类别
    • 归属月份
    • 溯源金额(开单、退卡、净额)
    • Cell金额(开单、退卡、净额)
    • 科美总收入
    • 开单次数、消耗次数、退卡次数
  • 功能:支持排序、筛选、导出

7.2 老师明细列表

7.2.1 科技部老师列表

  • 展示字段
    • 老师姓名、所属门店、老师账号
    • 开单业绩、消耗业绩、退卡业绩
    • 总业绩、项目数
    • 底薪、业绩提成、消耗提成、应发工资
  • 功能:支持排序、筛选、导出
  • 数据来源lq_tech_teacher_salary_statistics

7.3 开单明细列表

7.3.1 科美开单明细

  • 展示字段
    • 开单日期、门店名称、会员姓名
    • 品项名称、科美类型(溯源/Cell)
    • 开单金额、实付金额
    • 健康师、科技部老师
  • 功能:支持排序、筛选、导出、分页
  • 数据来源lq_kd_kdjlb 表关联 lq_kd_pxmx

7.4 消耗明细列表

7.4.1 科美消耗明细

  • 展示字段
    • 消耗日期、门店名称、会员姓名
    • 品项名称、科美类型(溯源/Cell)
    • 消耗金额、消耗次数
    • 健康师、科技部老师
  • 功能:支持排序、筛选、导出、分页
  • 数据来源lq_xh_hyhk 表关联 lq_xh_pxmx

🎨 八、数据可视化建议

8.1 核心指标卡片(顶部)

  • 溯源金额(当月、环比、同比)
  • Cell金额(当月、环比、同比)
  • 科美总收入(当月、环比、同比)
  • 管理的门店数
  • 活跃门店数
  • 收入(当月、环比、同比)
  • 成本(当月、环比、同比)
  • 利润(当月、环比、同比、利润率)

8.2 趋势图表区域

  • 业绩趋势(溯源、Cell、总收入)- 折线图
  • 股份趋势(收入、成本、利润)- 折线图/堆叠柱状图
  • 溯源与Cell对比趋势 - 双折线图

8.3 排行图表区域

  • 门店业绩排行(溯源、Cell、总收入)- 条形图
  • 老师业绩排行 - 条形图或表格

8.4 分布图表区域

  • 门店业绩分布 - 饼图/环形图
  • 老师业绩分布 - 饼图/环形图
  • 成本结构分布 - 饼图/堆叠柱状图

8.5 对比图表区域

  • 科技一部 vs 科技二部对比 - 柱状图
  • 门店类型对比 - 柱状图

8.6 明细列表区域

  • 门店明细列表
  • 老师明细列表
  • 开单明细列表(可选)
  • 消耗明细列表(可选)

📝 九、数据来源总结

9.1 核心数据表

数据表 用途 关键字段
lq_md_target 门店目标表(包含门店归属科技部信息) F_StoreId, F_Month, F_TechDepartment
lq_kd_jksyj 开单健康师业绩(溯源/Cell) jksyj, F_BeautyType, F_StoreId, yjsj
lq_hytk_jksyj 退卡健康师业绩(溯源/Cell) jksyj, F_BeautyType, F_StoreId, tksj
lq_kd_kdjlb 开单记录 sfyj, kdrq, djmd
lq_kd_pxmx 开单品项明细 F_ActualPrice, F_BeautyType
lq_xh_hyhk 消耗记录 xfje, hksj, md
lq_xh_pxmx 消耗品项明细 F_BeautyType
lq_hytk_hytk 退卡记录 tkje, tksj, md
lq_tech_general_manager_salary_statistics 科技部总经理工资统计 F_TraceabilityAmount, F_CellAmount, F_BaseSalary, F_TraceabilityCommissionAmount, F_CellCommissionAmount
lq_tech_teacher_salary_statistics 科技部老师工资统计 F_OrderAchievement, F_ConsumeAchievement, F_TotalPerformance
lq_share_statistics_tech_dept 科技部股份统计 F_Income, F_CostReimbursement, F_CostTeacherBase, F_CostTeacherManual, F_CostTeacherBillingComm, F_CostTeacherConsumeComm, F_CostGMBase, F_CostGMComm, F_Profit
BASE_USER 用户信息(科技部总经理、老师) F_Id, F_REALNAME, F_GW, F_MDID

9.2 数据关联关系

  • 科技部识别:通过 BASE_ORGANIZE 表的组织ID(F_Id)识别,而不是使用中文名称
  • 管理的门店(按月获取)sql SELECT DISTINCT F_StoreId FROM lq_md_target WHERE F_TechDepartment = @科技部ID -- BASE_ORGANIZE表的组织ID(F_Id) AND F_Month = @统计月份 -- ⚠️ 必须按月份匹配,格式:YYYYMM
  • 业绩统计
    • 通过 F_StoreId 关联门店(使用上面获取的门店列表)
    • 通过 F_BeautyType 区分溯源和Cell
    • 时间过滤:通过业绩时间字段(yjsjhksjtksj)按月份过滤
  • 重要规则
    1. 必须先获取指定月份的门店归属关系,从 lq_md_target 表按 F_TechDepartmentF_Month 获取,再使用该门店列表筛选业绩数据
    2. 不能跨月汇总:每个月份的数据必须独立计算,使用该月份的门店归属关系
    3. 趋势分析:虽然展示多个月份,但每个月份的数据都是独立计算的

🔧 十、接口设计说明

10.1 接口参数设计

科技部驾驶舱接口参数设计:兼容两种方式,既可以传入科技部ID(组织ID),也可以传入门店ID列表。

接口输入参数

public class TechDepartmentDashboardStatisticsInput
{
    /// <summary>
    /// 科技部ID(可选):BASE_ORGANIZE表的组织ID(F_Id)
    /// 如果传入科技部ID,则从lq_md_target表查询该月份、该科技部归属的门店列表
    /// 如果传入门店ID列表,则直接使用门店ID列表
    /// 两者必填其一
    /// </summary>
    public string TechDepartmentId { get; set; }

    /// <summary>
    /// 门店ID列表(可选)
    /// 如果传入科技部ID,则此字段忽略,使用科技部ID查询门店列表
    /// 如果传入门店ID列表,则直接使用此列表
    /// 两者必填其一
    /// </summary>
    public List<string> StoreIds { get; set; }

    /// <summary>
    /// 统计月份(必填):YYYYMM格式,如:202501
    /// </summary>
    [Required(ErrorMessage = "统计月份不能为空")]
    [StringLength(6, MinimumLength = 6, ErrorMessage = "统计月份格式必须为YYYYMM")]
    public string StatisticsMonth { get; set; }
}

设计理由

兼容两种使用场景:

  1. 科技部维度(推荐使用)

    • 传入科技部ID(BASE_ORGANIZE表的组织ID)+ 统计月份
    • 适用于科技部驾驶舱页面,用户选择科技部查看数据
    • 后端根据统计月份从 lq_md_target 表查询该科技部归属的门店列表
    • 优势:数据准确性高,门店归属变化时自动适应,使用ID而非名称,避免名称变更影响
  2. 门店列表维度(灵活使用)

    • 传入门店ID列表 + 统计月份
    • 适用于其他场景,如自定义门店组合、门店对比等
    • 后端直接使用传入的门店ID列表
    • 优势:灵活性高,可以跨科技部组合门店

参数验证逻辑

// 参数验证
if (string.IsNullOrWhiteSpace(input.TechDepartmentId) && 
    (input.StoreIds == null || !input.StoreIds.Any()))
{
    throw NCCException.Oh("科技部ID和门店ID列表不能同时为空,必须传入其中一个");
}

if (!string.IsNullOrWhiteSpace(input.TechDepartmentId) && 
    input.StoreIds != null && input.StoreIds.Any())
{
    // 如果同时传入,优先使用科技部ID,门店ID列表将被忽略
    // 或者抛出异常,要求只能传入一个
    throw NCCException.Oh("科技部ID和门店ID列表不能同时传入,请只传入其中一个");
}

后端处理流程

方式1:传入科技部ID

  1. 接收参数:科技部ID(BASE_ORGANIZE表的组织ID)+ 统计月份
  2. 查询门店列表:从 lq_md_target 表查询该月份、该科技部归属的门店ID列表 sql SELECT DISTINCT F_StoreId FROM lq_md_target WHERE F_TechDepartment = @科技部ID AND F_Month = @统计月份 说明F_TechDepartment 字段存储的是 BASE_ORGANIZE 表的组织ID(F_Id),而不是组织名称
  3. 统计业绩数据:使用查询到的门店ID列表筛选业绩数据
  4. 返回统计结果

方式2:传入门店ID列表

  1. 接收参数:门店ID列表 + 统计月份
  2. 直接使用门店ID列表(无需查询门店归属关系)
  3. 统计业绩数据:使用传入的门店ID列表筛选业绩数据
  4. 返回统计结果

示例请求

示例1:传入科技部ID(推荐)

{
  "techDepartmentId": "1649328471923847169",
  "statisticsMonth": "202501"
}

说明techDepartmentIdBASE_ORGANIZE 表中科技一部或科技二部的组织ID(F_Id),不是中文名称。使用ID而非名称,避免中文名称变更影响接口调用。

示例2:传入门店ID列表

{
  "storeIds": ["1649328471923847169", "1649328471923847170", "1649328471923847171"],
  "statisticsMonth": "202501"
}

使用建议

  • 科技部驾驶舱页面:使用方式1(传入科技部ID),更符合业务逻辑,数据准确性高,使用ID而非名称,避免名称变更影响
  • 其他场景:使用方式2(传入门店ID列表),灵活性高,可以自定义门店组合

科技部ID获取方式

科技部ID从 BASE_ORGANIZE 表获取,通过组织名称查询:

SELECT F_Id, F_FullName
FROM BASE_ORGANIZE
WHERE F_FullName LIKE '%科技一部%' OR F_FullName LIKE '%科技二部%'
  AND F_DeleteMark IS NULL
  AND F_EnabledMark = 1

前端可以通过组织选择器或下拉列表获取科技部ID列表,供用户选择。


🔧 十一、数据查询流程(重要)

11.1 标准查询流程

所有科技部驾驶舱数据查询都必须遵循以下流程:

步骤1:确定门店列表(两种方式)

方式1:传入科技部ID

  • 从接口参数获取科技部ID(BASE_ORGANIZE表的组织ID)和统计月份
  • lq_md_target 表查询该月份、该科技部归属的门店列表 sql SELECT DISTINCT F_StoreId FROM lq_md_target WHERE F_TechDepartment = @科技部ID -- BASE_ORGANIZE表的组织ID(F_Id) AND F_Month = @统计月份 -- ⚠️ 必须按月份匹配,格式:YYYYMM
  • 重要说明
    • F_Month 字段格式为 YYYYMM(如:202501)
    • F_TechDepartment 字段存储的是 BASE_ORGANIZE 表的组织ID(F_Id),而不是组织名称
    • 不同月份,管理的门店列表可能不同
    • 如果该月份没有归属该科技部的门店,返回空列表,所有业绩数据为0

方式2:传入门店ID列表

  • 直接使用接口参数中的门店ID列表
  • 无需查询门店归属关系,直接使用传入的门店列表

步骤2:使用门店列表统计业绩数据

-- 示例:统计指定月份的溯源金额
SELECT COALESCE(SUM(CAST(jksyj AS DECIMAL(18,2))), 0) as TraceabilityAmount
FROM lq_kd_jksyj
WHERE F_IsEffective = 1
  AND F_StoreId IN (@门店ID列表)  -- ⚠️ 使用步骤1获取或传入的门店列表
  AND (F_BeautyType = '溯源系统' OR F_BeautyType = '溯源')
  AND DATE_FORMAT(yjsj, '%Y%m') = @统计月份  -- ⚠️ 按月份过滤业绩时间

11.2 趋势分析查询流程

趋势分析虽然展示多个月份,但每个月份的数据都是独立计算的:

-- 示例:获取近12个月的溯源金额趋势
-- 需要循环12个月,每个月都执行以下步骤:
FOR EACH 月份 IN (12个月列表) DO
  1. 获取该月份、该科技部归属的门店列表(步骤2
  2. 使用该门店列表统计该月份的溯源金额(步骤3
  3. 将结果添加到趋势数据中
END FOR

重要规则

  • 每个月份使用该月份的门店归属关系
  • 不能跨月汇总,必须按月独立计算
  • 如果某个月份没有管理的门店,该月份的数据为0

11.3 数据查询注意事项

  1. 月份格式统一:所有月份参数统一使用 YYYYMM 格式(如:202501)
  2. 门店归属必须按月获取:不能使用当前月份的门店列表去查询历史月份的数据
  3. 业绩时间过滤:使用业绩时间字段(yjsjhksjtksj)按月份过滤,格式:DATE_FORMAT(时间字段, '%Y%m') = @统计月份
  4. 工资统计表:使用 F_StatisticsMonth 字段过滤,格式:F_StatisticsMonth = @统计月份
  5. 股份统计表:使用 F_StatisticsMonth 字段过滤,格式:F_StatisticsMonth = @统计月份

🔧 十二、技术实现建议

12.1 数据聚合策略

  1. 实时查询:核心指标使用实时查询,确保数据准确性
  2. 缓存优化:对于历史月份数据,可以考虑缓存优化
  3. 分页查询:明细列表必须支持分页,避免大数据量查询

12.2 性能优化

  1. 索引优化:在关键查询字段上建立索引(F_StoreIdF_BeautyType、时间字段等)
  2. SQL优化:使用聚合查询,避免在应用层进行大量数据计算
  3. 数据预聚合:可以考虑创建统计视图或物化视图

12.3 数据一致性

  1. 统一数据源:业绩数据统一使用健康师业绩表,确保数据一致性
  2. 时间范围:统一使用业绩时间(yjsjhksjtksj)进行时间过滤,必须按月份过滤
  3. 归属关系(关键)
    • 必须按月获取门店归属:查询指定月份的统计数据时,必须先从 lq_md_target 表获取该月份(F_Month)、该科技部(F_TechDepartment)归属的门店列表
    • 不能跨月汇总:每个月份的数据必须独立计算,使用该月份的门店归属关系
    • 趋势分析:虽然趋势图展示多个月份,但每个月份的数据都是独立计算的,每个月份使用该月份的门店归属关系
  4. 月份匹配规则
    • 门店归属:lq_md_target.F_Month = @统计月份 AND lq_md_target.F_TechDepartment = @科技部ID(BASE_ORGANIZE表的组织ID)
    • 业绩时间:DATE_FORMAT(yjsj, '%Y%m') = @统计月份DATE_FORMAT(hksj, '%Y%m') = @统计月份
    • 工资统计:lq_tech_*_salary_statistics.F_StatisticsMonth = @统计月份
    • 股份统计:lq_share_statistics_tech_dept.F_StatisticsMonth = @统计月份

✅ 总结

科技部驾驶舱主要关注以下核心数据:

  1. 业绩指标:溯源金额、Cell金额、科美总收入
  2. 股份指标:收入、成本、利润
  3. 门店分析:管理的门店业绩排行、分布、对比
  4. 人员分析:科技部老师业绩排行(总经理成本数据汇总在人工成本中)
  5. 趋势分析:近12个月的业绩趋势、股份趋势
  6. 对比分析:环比、同比、部门对比、门店类型对比
  7. 明细数据:门店明细、老师明细、开单明细、消耗明细

⚠️ 核心规则

  1. 所有数据必须按月份统计:每个指标、排行、趋势、对比等数据都必须按月份(YYYYMM格式)统计
  2. 门店归属按月变化:不同月份科技部管理的门店可能不一致,必须从 lq_md_target 表按月获取门店归属关系(通过 F_TechDepartmentF_Month 字段)
  3. 数据筛选流程
    • 步骤1:从 lq_md_target 表获取指定月份(F_Month)、指定科技部(F_TechDepartment)归属的门店列表
    • 步骤2:使用该门店列表筛选业绩数据
    • 步骤3:使用业绩时间字段(yjsjhksjtksj)按月份过滤
  4. 不能跨月汇总:每个月份的数据必须独立计算,使用该月份的门店归属关系
  5. 趋势分析:虽然趋势图展示多个月份,但每个月份的数据都是独立计算的
  6. 部门区分:所有数据都需要按照科技部(一部/二部)进行区分