拓客驾驶舱需求文档.md
28.7 KB
拓客驾驶舱需求文档
📋 文档说明
- 创建日期: 2025-01-XX
- 版本: v1.3
- 状态: 业务规则已确认,待开发
- 目标: 基于现有拓客报表页面(
lqTkjlb/report),设计并实现一个功能完整的拓客驾驶舱
✅ 已确认的业务规则
- 大单标准: 开单金额(
sfyj实付业绩)> 10000 元(不含等于) - 到店定义: 使用耗卡记录(
lq_xh_hyhk)判断,存在有效耗卡记录即视为到店 - 团队显示: 仅当活动类型为"全员拓客"(EventType=3)时显示团队相关字段和统计,日常拓客(EventType=1)无团队概念
- 时间范围: 选择拓客活动后,时间范围自动填充为该活动的开始和结束时间
- 门店筛选: 不提供门店筛选功能,数据按活动范围统计所有门店
一、现有功能梳理
1.1 现有报表页面统计内容(参考 lqTkjlb/report)
📊 团队数据报表
- 参与门店数
- 参与战队数
- 参与人员数
- 总拓客数
🏆 门店排行榜
- 目标张数
- 完成张数(总张数)
- 完成率
- 排名
👥 个人排行榜
- 员工姓名
- 所属门店
- 所属团队
- 个人目标
- 完成数量
- 完成率
❌ 未拓客人员
- 姓名
- 门店
- 团队
- 个人目标
- 完成数量(0)
- 完成率
- 最后拓客时间
📈 到店情况(漏斗数据)
- 拓客数量: 拓客总人数
- 邀约数量: 邀约总人数
- 预约数量: 预约总人数
- 开单数量: 开单总人数
- 耗卡数量: 耗卡总人数
- 耗卡金额: 耗卡总金额
- 开单金额: 开单总金额
- 到店率: 耗卡数量 / 拓客数量 × 100%
- 成交率: 开单数量 / 耗卡数量 × 100%
- 预约转化率: 预约数量 / 拓客数量 × 100%
- 耗卡转化率: 耗卡数量 / 预约数量 × 100%
👤 员工统计
- 员工姓名
- 部门名称
- 岗位
- 拓客人数
- 到店人数
- 开单人数
- 开单金额
- 到店率: 到店人数 / 拓客人数 × 100%
- 开单率: 开单人数 / 到店人数 × 100%
二、新增需求
2.1 大单统计(核心新增功能)
2.1.1 大单定义
- 标准: 开单金额(
lq_kd_kdjlb.sfyj实付业绩)> 10000 元(不含等于) - 判断条件:
sfyj > 10000 - 统计维度:
- 按拓客活动统计
- 按门店统计
- 按拓客人员统计
- 按时间范围统计
2.1.2 大单统计指标
- 大单数量: 开单金额 > 10000 的订单数量
- 大单金额: 大单订单总金额
- 大单平均金额: 大单金额 / 大单数量
- 大单占比: 大单数量 / 总开单数量 × 100%
- 大单金额占比: 大单金额 / 总开单金额 × 100%
- 大单转化率: 大单数量 / 拓客人数 × 100%
- 大单到店转化率: 大单数量 / 到店人数 × 100%
2.1.3 大单明细列表
- 顾客姓名
- 顾客手机号
- 拓客人员姓名
- 拓客时间
- 开单时间
- 开单金额
- 开单门店
- 项目明细(可选)
2.2 拓客人员参与统计(核心新增功能)
2.2.1 统计内容
- 参与拓客人员列表:
- 员工姓名
- 部门名称
- 岗位
- 所属门店
- 所属团队(仅在活动类型为"全员拓客"时显示,日常拓客无团队概念)
- 拓客人数(该人员拓客的顾客总数,去重)
- 拓客张数(该人员拓客的购买张数总和)
- 到店人数(该人员拓客的顾客中,到店人数)
- 到店率(到店人数 / 拓客人数 × 100%)
- 开单人数(该人员拓客的顾客中,开单人数)
- 开单金额(该人员拓客的顾客中,开单总金额)
- 开单转化率(开单人数 / 拓客人数 × 100%)
- 大单数量(该人员拓客的顾客中,大单数量)
- 大单金额(该人员拓客的顾客中,大单总金额)
2.2.2 数据来源
- 拓客记录表:
lq_tkjlbF_ExpansionUserId: 拓客人员IDF_MemberId: 会员IDF_BuyNumber: 购买张数
- 开单记录表:
lq_kd_kdjlbkdhy: 开单会员ID(关联lq_tkjlb.F_MemberId)sfyj: 实付业绩(用于判断大单)
- 耗卡记录表:
lq_xh_hyhkhyzh: 会员账号(关联lq_tkjlb.F_MemberId)
- 预约记录表:
lq_yyjlgk: 顾客ID(关联lq_tkjlb.F_MemberId)
2.3 到店转化分析(增强现有功能)
2.3.1 到店定义(已确认)
- 定义: 有耗卡记录即视为到店
- 判断条件: 在
lq_xh_hyhk表中存在记录,且F_IsEffective = 1 - 关联字段:
lq_tkjlb.F_MemberId = lq_xh_hyhk.hyzh - 说明: 耗卡记录代表客户实际到店并进行了消费,是最准确的到店判断标准
2.3.2 到店率计算(基于耗卡记录)
- 到店人数定义: 在指定时间范围内,有耗卡记录的拓客客户数(按
F_MemberId去重) - 整体到店率: 到店人数 / 拓客人数 × 100%
- 门店到店率: 各门店的到店率(该门店拓客的客户中,有耗卡记录的比例)
- 人员到店率: 各拓客人员的到店率(该人员拓客的客户中,有耗卡记录的比例)
- 时间维度到店率: 按时间段的到店率趋势
2.3.3 到店时间分析(基于耗卡记录)
- 首次到店时间: 客户首次耗卡的时间(
lq_xh_hyhk.hksj最小值) - 拓客到首次到店间隔: 拓客时间到首次耗卡时间的间隔(天数)
- 拓客到首次到店间隔分布:
- 1天内
- 3天内
- 7天内
- 15天内
- 30天内
- 超过30天
- 平均到店间隔天数: 所有有耗卡记录的客户的平均间隔天数
注意: 如果拓客时间晚于首次耗卡时间(异常情况),间隔天数记为0或负数,需要特别处理
三、可扩展统计维度(建议)
3.1 时间维度分析
3.1.1 拓客时间趋势
- 按日期统计拓客人数
- 按周统计拓客人数
- 按月统计拓客人数
- 拓客高峰时段分析
3.1.2 转化周期分析
- 拓客到预约的平均时间
- 拓客到到店的平均时间
- 拓客到开单的平均时间
- 到店到开单的平均时间
- 不同转化周期的转化率对比
3.2 客户画像分析
3.2.1 新老客户分析
- 新客户拓客数量
- 老客户拓客数量
- 新老客户到店率对比
- 新老客户开单率对比
- 新老客户大单率对比
3.2.2 客户来源分析
- 不同拓客活动来源的客户数量
- 不同来源客户的到店率
- 不同来源客户的开单率
- 不同来源客户的平均开单金额
3.3 门店对比分析
3.3.1 门店效能对比
- 门店拓客效率排名
- 门店到店率排名
- 门店开单率排名
- 门店大单率排名
- 门店平均开单金额排名
3.3.2 门店转化漏斗
- 各门店的完整转化漏斗(拓客→邀约→预约→到店→开单)
- 各门店的转化瓶颈分析
3.4 项目分析
3.4.1 大单项目分析
- 大单订单中的项目分布
- 高价值项目列表
- 项目与开单金额的关联度
3.4.2 项目转化分析
- 不同项目的开单率
- 不同项目的平均金额
- 项目组合分析
3.5 团队效能分析(仅全员拓客活动)
3.5.1 团队对比
- 适用范围: 仅当活动类型为"全员拓客"(EventType=3)时显示
- 各团队的拓客数量
- 各团队的到店率
- 各团队的开单率
- 各团队的大单率
- 团队排名和对比
3.5.2 团队协作分析
- 团队内成员的拓客贡献度
- 团队拓客协作效果
- 团队目标完成情况
注意: 日常拓客(EventType=1)无团队概念,不显示团队相关统计
3.6 流失分析
3.6.1 流失节点分析
- 拓客未邀约数量及占比
- 邀约未预约数量及占比
- 预约未到店数量及占比
- 到店未开单数量及占比
3.6.2 流失原因分析
- 各流失节点的可能原因
- 流失客户特征分析
3.7 支付方式分析
3.7.1 支付方式分布
- 不同支付方式的开单数量
- 不同支付方式的开单金额
- 支付方式与客户类型的关系
3.8 复购分析
3.8.1 拓客客户复购统计
- 拓客客户首次开单后的复购率
- 拓客客户复购时间间隔
- 拓客客户累计消费金额
3.9 业绩贡献分析
3.9.1 拓客业绩贡献
- 拓客活动产生的总业绩
- 拓客活动业绩占总业绩的比例
- 拓客活动业绩趋势
3.9.2 ROI分析
- 拓客活动成本(如果有)
- 拓客活动投入产出比
3.10 购买张数分析
3.10.1 购买张数分布
- 不同购买张数的客户数量分布(1张、2张、3-5张、6-10张、10张以上)
- 购买张数与到店率的关系
- 购买张数与开单率的关系
- 购买张数与平均开单金额的关系
3.10.2 购买张数效能
- 平均购买张数
- 高购买张数客户的转化率
- 购买张数TOP人员排名
3.11 加微信转化分析
3.11.1 微信添加统计
- 加微信客户数量及占比(
F_IsAddWeChat= "是") - 加微信与未加微信客户的到店率对比
- 加微信与未加微信客户的开单率对比
- 加微信转化率(加微信客户数 / 拓客人数)
3.11.2 微信添加效能
- 加微信客户的平均到店间隔
- 加微信客户的复购率
- 各人员加微信转化率排名
3.12 支付方式分析
3.12.1 拓客支付方式分布
- 不同支付方式的拓客数量(现金、微信、支付宝、银行卡等,基于
F_PaymentMethod) - 不同支付方式的客户到店率
- 不同支付方式的客户开单率
- 不同支付方式的客户平均开单金额
3.13 客户类型分析
3.13.1 新老客户对比
- 新客户(首次拓客)数量
- 老客户(再次拓客)数量
- 新老客户到店率对比
- 新老客户开单率对比
- 新老客户大单率对比
- 二次拓客转化率
3.13.2 客户质量分析
- 高价值客户识别(拓客后多次到店或高额开单)
- 低质量客户识别(拓客后长期未到店)
3.14 部门/岗位效能分析
3.14.1 部门对比
- 各部门的拓客人数
- 各部门的到店率
- 各部门的开单率
- 各部门的平均开单金额
- 各部门的大单率
3.14.2 岗位对比
- 不同岗位的拓客效能
- 岗位与拓客转化率的关系
- 岗位排名分析
3.15 时段分析
3.15.1 拓客时段分布
- 按小时统计拓客数量(识别拓客高峰时段)
- 按星期统计拓客数量(识别拓客高峰日期)
- 不同时段的拓客转化率
- 时段与到店率的关系
3.15.2 转化周期时段分析
- 不同时段的拓客到店间隔
- 不同时段的拓客开单间隔
3.16 金三角分析(如有关联)
3.16.1 金三角效能
- 各金三角的拓客数量
- 各金三角的到店率
- 各金三角的开单率
- 金三角与拓客转化的关联度
3.17 推荐人分析(如有关联)
3.17.1 推荐人效能
- 推荐人拓客数量
- 推荐人拓客的转化率
- 推荐人贡献度排名
3.18 拓客渠道分析
3.18.1 渠道效能对比
- 不同拓客渠道的客户数量
- 不同渠道的到店率
- 不同渠道的开单率
- 不同渠道的平均开单金额
- 最优渠道识别
3.19 项目偏好分析(基于开单项目)
3.19.1 拓客客户项目偏好
- 拓客客户最常购买的项目TOP10
- 大单客户的项目偏好
- 高转化率项目识别
- 项目与客户类型的匹配度
3.20 地域/门店分布分析
3.20.1 门店效能对比(增强版)
- 门店拓客人数排名
- 门店到店率排名
- 门店开单率排名
- 门店大单率排名
- 门店平均开单金额排名
- 门店拓客成本效益分析
3.20.2 门店类型分析
- 不同类型门店的拓客效能(如新店vs老店)
- 门店规模与拓客转化率的关系
四、数据表结构
4.1 核心数据表
lq_tkjlb - 拓客记录表
F_Id: 拓客编号F_ExpansionTime: 拓客时间F_ExpansionUserId: 拓客人员IDF_CustomerName: 顾客姓名F_CustomerPhone: 顾客电话号码F_BuyNumber: 购买张数F_EventId: 拓客活动IDF_StoreId: 所属门店IDF_TeamName: 所属战队(仅在活动类型为"全员拓客"时有值)F_MemberId: 会员ID
lq_kd_kdjlb - 开单记录表
F_Id: 开单编号kdhy: 开单会员ID(关联lq_tkjlb.F_MemberId)kdhyc: 开单会员名称kdrq: 开单日期zdyj: 整单业绩sfyj: 实付业绩(用于判断大单,> 10000)djmd: 单据门店F_IsEffective: 是否有效
lq_xh_hyhk - 耗卡记录表
F_Id: 耗卡编号hyzh: 会员账号(关联lq_tkjlb.F_MemberId)hksj: 耗卡时间xfje: 消费金额md: 门店IDF_IsEffective: 是否有效
lq_yyjl - 预约记录表
F_Id: 预约编号gk: 顾客ID(关联lq_tkjlb.F_MemberId)yysj: 预约时间F_Status: 预约状态("已确认"表示已到店)
lq_yaoyjl - 邀约记录表
F_Id: 邀约编号yykh: 邀约客户(关联lq_tkjlb.F_MemberId)yysj: 邀约时间
4.2 关联数据表
BASE_USER - 用户表
F_Id: 用户ID(关联lq_tkjlb.F_ExpansionUserId)F_REALNAME: 真实姓名(拓客人员姓名)F_MDID: 门店IDF_ZW: 职位OrganizeId: 部门ID
lq_mdxx - 门店信息表
F_Id: 门店IDdm: 门店名称
lq_event - 拓客活动表
F_Id: 活动IDF_EventName: 活动名称F_EventType: 活动类型(1=日常拓客,3=全员拓客)F_StartTime: 活动开始时间F_EndTime: 活动结束时间
lq_eventuser - 拓客活动用户表
F_EventId: 拓客活动IDF_UserId: 用户IDF_DepId: 部门IDF_TeamName: 战队名称(仅在活动类型为"全员拓客"时有值)F_StoreId: 门店IDF_EventTarget: 拓客目标数量
五、接口设计
5.1 拓客驾驶舱统计接口
5.1.1 获取驾驶舱概览数据
GET /api/Extend/LqTkDashboard/GetOverview
请求参数:
{
"eventId": "活动ID(必填)",
"startTime": "2025-01-01", // 当选择活动时,自动填充活动的开始时间
"endTime": "2025-01-31" // 当选择活动时,自动填充活动的结束时间
}
说明:
eventId: 必填,选择拓客活动后,时间范围会自动填充为该活动的开始和结束时间startTime/endTime: 根据选择的活动自动填充,用户可手动调整- 不提供门店筛选功能,数据按活动范围统计所有门店
返回数据:
{
"code": 200,
"data": {
"totalExpansionCount": 1000, // 总拓客人数
"totalVisitCount": 600, // 总到店人数
"totalBillingCount": 400, // 总开单人数
"totalBillingAmount": 5000000, // 总开单金额
"bigOrderCount": 50, // 大单数量
"bigOrderAmount": 800000, // 大单金额
"bigOrderAvgAmount": 16000, // 大单平均金额
"visitRate": 60.0, // 整体到店率
"billingRate": 66.67, // 整体开单率
"bigOrderRate": 5.0, // 大单转化率
"bigOrderAmountRate": 16.0, // 大单金额占比
"participantCount": 50, // 参与拓客人员数
"storeCount": 10 // 参与门店数
}
}
5.1.2 获取大单统计
GET /api/Extend/LqTkDashboard/GetBigOrderStatistics
请求参数:
{
"eventId": "活动ID(必填)",
"startTime": "2025-01-01", // 自动填充活动开始时间
"endTime": "2025-01-31" // 自动填充活动结束时间
}
返回数据:
{
"code": 200,
"data": {
"summary": {
"bigOrderCount": 50,
"bigOrderAmount": 800000,
"bigOrderAvgAmount": 16000,
"bigOrderRate": 5.0,
"bigOrderAmountRate": 16.0,
"bigOrderConversionRate": 5.0,
"bigOrderVisitConversionRate": 8.33
},
"byStore": [
{
"storeId": "门店ID",
"storeName": "门店名称",
"bigOrderCount": 10,
"bigOrderAmount": 150000,
"bigOrderRate": 5.0
}
],
"byEmployee": [
{
"employeeId": "员工ID",
"employeeName": "员工姓名",
"bigOrderCount": 5,
"bigOrderAmount": 80000,
"bigOrderRate": 10.0
}
],
"details": [
{
"customerName": "顾客姓名",
"customerPhone": "手机号",
"expansionUserName": "拓客人员",
"expansionTime": "2025-01-01",
"billingTime": "2025-01-05",
"billingAmount": 15000,
"storeName": "门店名称",
"items": ["项目1", "项目2"]
}
]
}
}
5.1.3 获取拓客人员参与统计
GET /api/Extend/LqTkDashboard/GetEmployeeParticipationStatistics
请求参数:
{
"eventId": "活动ID(必填)",
"startTime": "2025-01-01", // 自动填充活动开始时间
"endTime": "2025-01-31" // 自动填充活动结束时间
}
返回数据:
{
"code": 200,
"data": [
{
"employeeId": "员工ID",
"employeeName": "员工姓名",
"departmentName": "部门名称",
"position": "岗位",
"storeId": "门店ID",
"storeName": "门店名称",
"teamName": "团队名称", // 仅当活动类型为"全员拓客"时有值,日常拓客为null或空字符串
"expansionCount": 100, // 拓客人数
"expansionCardCount": 150, // 拓客张数
"visitCount": 60, // 到店人数
"visitRate": 60.0, // 到店率
"billingCount": 40, // 开单人数
"billingAmount": 500000, // 开单金额
"billingConversionRate": 40.0, // 开单转化率
"bigOrderCount": 5, // 大单数量
"bigOrderAmount": 80000 // 大单金额
}
]
}
5.1.4 获取到店转化分析
GET /api/Extend/LqTkDashboard/GetVisitConversionAnalysis
请求参数:
{
"eventId": "活动ID(必填)",
"startTime": "2025-01-01", // 自动填充活动开始时间
"endTime": "2025-01-31" // 自动填充活动结束时间
}
返回数据:
{
"code": 200,
"data": {
"overallVisitRate": 60.0,
"averageVisitInterval": 7.5, // 平均到店间隔(天)
"visitIntervalDistribution": {
"within1Day": 100,
"within3Days": 200,
"within7Days": 150,
"within15Days": 100,
"within30Days": 40,
"over30Days": 10
},
"byStore": [
{
"storeId": "门店ID",
"storeName": "门店名称",
"visitRate": 65.0,
"averageVisitInterval": 6.5
}
],
"byEmployee": [
{
"employeeId": "员工ID",
"employeeName": "员工姓名",
"visitRate": 70.0,
"averageVisitInterval": 5.0
}
]
}
}
5.2 数据导出接口
5.2.1 导出大单明细
GET /api/Extend/LqTkDashboard/ExportBigOrderDetails
5.2.2 导出拓客人员统计
GET /api/Extend/LqTkDashboard/ExportEmployeeStatistics
六、前端页面设计
6.1 页面结构(不使用Tab切换)
拓客驾驶舱
├── 筛选条件区域(固定在顶部)
│ ├── 拓客活动选择(必填,下拉选择)
│ ├── 时间范围选择(自动填充活动开始/结束时间,可手动调整)
│ └── 查询按钮
│
├── 概览统计卡片区域(第一屏)
│ ├── 总拓客人数
│ ├── 总到店人数
│ ├── 总开单人数
│ ├── 总开单金额
│ ├── 大单数量
│ ├── 大单金额
│ ├── 整体到店率
│ └── 整体开单率
│
├── 大单统计区域(第二屏)
│ ├── 区域标题:"大单统计"
│ ├── 大单概览卡片(5个指标)
│ │ ├── 大单数量
│ │ ├── 大单金额
│ │ ├── 大单平均金额
│ │ ├── 大单转化率
│ │ └── 大单金额占比
│ ├── 大单分布图表(可选,横排显示)
│ │ ├── 按门店分布饼图
│ │ ├── 按人员分布柱状图
│ │ └── 大单金额分布柱状图
│ └── 大单明细列表
│ ├── 表格展示大单明细
│ ├── 支持按门店、人员、金额排序
│ └── 支持导出Excel
│
├── 拓客人员统计区域(第三屏)
│ ├── 区域标题:"拓客人员统计"
│ ├── 人员统计列表
│ │ ├── 表格展示所有参与拓客的人员及其统计数据
│ │ ├── 支持按拓客人数、到店率、开单率、大单数量排序
│ │ └── 支持导出Excel
│ └── 人员排名卡片(可选,横向展示)
│ ├── 拓客人数TOP10
│ ├── 到店率TOP10
│ ├── 开单率TOP10
│ └── 大单数量TOP10
│
├── 到店转化分析区域(第四屏)
│ ├── 区域标题:"到店转化分析"
│ ├── 到店率统计卡片
│ │ ├── 整体到店率
│ │ ├── 各门店到店率对比(表格或图表)
│ │ └── 各人员到店率对比(表格或图表)
│ └── 到店时间分析
│ ├── 到店间隔分布图
│ ├── 平均到店间隔
│ └── 到店时间趋势图
│
└── 其他统计区域(可选,按需展示)
├── 门店对比分析(可选)
├── 时间趋势分析(可选)
├── 流失分析(可选)
└── 其他维度统计(可选)
页面布局说明:
- 不使用Tab切换,所有统计区域垂直排列,用户通过滚动查看不同区域
- 每个统计区域使用清晰的标题分隔
- 各区域之间使用适当的间距和分割线区分
- 支持页面内锚点导航(可选),用户可快速跳转到指定区域
- 筛选条件区域固定在顶部,方便用户随时修改筛选条件
6.2 大单统计区域
6.2.1 大单概览卡片
- 大单数量
- 大单金额
- 大单平均金额
- 大单转化率
- 大单金额占比
6.2.2 大单分布图表(可选)
- 按门店分布饼图
- 按人员分布柱状图
- 大单金额分布柱状图
布局建议:图表横向排列,每个图表占据1/3宽度
6.2.3 大单明细列表
- 表格展示大单明细
- 支持按门店、人员、金额排序
- 支持导出Excel
6.3 拓客人员统计区域
6.3.1 人员统计列表
- 表格展示所有参与拓客的人员及其统计数据
- 支持按拓客人数、到店率、开单率、大单数量排序
- 支持导出Excel
6.3.2 人员排名卡片(可选)
- 拓客人数TOP10
- 到店率TOP10
- 开单率TOP10
- 大单数量TOP10
布局建议:排名卡片横向排列,每个卡片显示TOP10列表
6.4 到店转化分析区域
6.4.1 到店率统计
- 整体到店率(卡片形式展示)
- 各门店到店率对比(表格或柱状图)
- 各人员到店率对比(表格或柱状图)
6.4.2 到店时间分析
- 到店间隔分布图(柱状图)
- 平均到店间隔(卡片形式展示)
- 到店时间趋势图(折线图)
布局建议:图表采用两列布局,左侧展示分布图,右侧展示趋势图,平均间隔显示在顶部
七、技术实现要点
7.1 大单判断逻辑(已确认)
// 大单定义:开单金额(实付业绩)> 10000(不含等于)
var bigOrderThreshold = 10000m;
var isBigOrder = kd.Sfyj > bigOrderThreshold; // 严格大于,不含等于
// SQL查询示例
WHERE kd.sfyj > 10000 AND kd.F_IsEffective = 1
7.2 数据去重逻辑(已确认)
- 拓客人数: 按
lq_tkjlb.F_MemberId去重 - 到店人数: 按
lq_tkjlb.F_MemberId去重,且关联的lq_xh_hyhk.hyzh存在记录且F_IsEffective = 1 - 开单人数: 按
lq_tkjlb.F_MemberId去重,且关联的lq_kd_kdjlb.kdhy存在记录且sfyj > 0且F_IsEffective = 1 - 大单数量: 按开单记录统计(
sfyj > 10000且F_IsEffective = 1),不去重(一个客户可能有多个大单)
7.3 关联查询逻辑(已确认)
-- 拓客到开单关联(用于统计开单人数、开单金额、大单)
lq_tkjlb.F_MemberId = lq_kd_kdjlb.kdhy
WHERE lq_kd_kdjlb.F_IsEffective = 1
-- 拓客到耗卡关联(用于判断到店,已确认使用此方式)
lq_tkjlb.F_MemberId = lq_xh_hyhk.hyzh
WHERE lq_xh_hyhk.F_IsEffective = 1
-- 拓客到预约关联(可选,用于预约转化率统计)
lq_tkjlb.F_MemberId = lq_yyjl.gk
WHERE lq_yyjl.F_Status = '已确认'
-- 拓客人员信息关联
lq_tkjlb.F_ExpansionUserId = BASE_USER.F_Id
-- 大单判断(已确认标准)
lq_kd_kdjlb.sfyj > 10000 -- 严格大于,不含等于
7.4 团队字段显示逻辑(已确认)
// 判断活动类型
var eventType = event.EventType; // 1=日常拓客, 3=全员拓客
// 仅在全员拓客时显示团队字段
if (eventType == 3) // 全员拓客
{
// 显示团队相关字段和统计
// 从 lq_eventuser.F_TeamName 或 lq_tkjlb.F_TeamName 获取
}
else // 日常拓客
{
// 不显示团队字段,团队相关统计隐藏
}
7.5 时间范围自动填充逻辑
// 前端:选择活动后自动填充时间
onEventChange(eventId) {
const event = eventList.find(e => e.id === eventId);
if (event) {
this.queryParams.startTime = event.startTime;
this.queryParams.endTime = event.endTime;
}
}
// 后端:根据活动ID获取活动时间范围
var event = await _db.Queryable<LqEventEntity>()
.Where(e => e.Id == eventId)
.FirstAsync();
var startTime = event?.StartTime;
var endTime = event?.EndTime;
7.6 性能优化建议
- 使用索引优化查询(
F_MemberId,F_ExpansionUserId,F_EventId,kdhy,hyzh,F_EventType) - 使用聚合查询减少数据库访问
- 大数据量时考虑分页或缓存
- 使用视图预计算常用统计数据
- 根据活动类型动态构建查询(团队相关查询仅在全员拓客时执行)
八、开发优先级
8.1 第一优先级(必须实现)
✅ 大单统计功能
- 大单概览统计
- 大单明细列表
- 大单导出功能
✅ 拓客人员参与统计
- 人员统计列表
- 人员数据导出
✅ 到店转化分析增强
- 到店率计算优化
- 到店时间分析
8.2 第二优先级(建议实现)
- 时间维度分析
- 门店对比分析
- 客户画像分析
8.3 第三优先级(可选实现)
- 流失分析
- 复购分析
- ROI分析
九、待讨论问题
9.1 业务规则确认(已确认)
- ✅ 大单标准: 已确认使用 > 10000 元作为大单标准(不含等于)
- ✅ 到店定义: 已确认使用 耗卡记录(
lq_xh_hyhk)来判断到店 - ✅ 团队显示: 已确认仅当活动类型为"全员拓客"(EventType=3)时显示团队相关字段和统计,日常拓客(EventType=1)无团队概念
- ✅ 时间范围: 已确认选择拓客活动后,时间范围自动填充为该活动的开始和结束时间,用户可手动调整
- ✅ 门店筛选: 已确认不提供门店筛选功能,数据按活动范围统计所有门店
- 权限控制: 是否需要按门店权限过滤数据?
9.2 数据展示确认
- 大单明细: 是否需要显示项目明细?如果需要,如何获取?
- 人员统计: 是否需要支持按部门、岗位筛选?
- 导出格式: Excel导出需要哪些字段?是否需要自定义格式?
9.3 功能扩展确认
- 图表展示: 是否需要可视化图表(如折线图、柱状图、饼图)?
- 对比分析: 是否需要支持多活动对比、多门店对比?
- 实时更新: 数据是否需要实时更新,还是定时刷新?
十、参考资料
10.1 现有代码参考
- 前端页面:
antis-ncc-admin/src/views/lqTkjlb/Report.vue - 后端服务:
netcore/src/Modularity/Extend/NCC.Extend/LqTkjlbService.cs - 实体类:
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_tkjlb/LqTkjlbEntity.cs
10.2 数据库表
lq_tkjlb: 拓客记录表lq_kd_kdjlb: 开单记录表lq_xh_hyhk: 耗卡记录表lq_yyjl: 预约记录表lq_yaoyjl: 邀约记录表
📝 修改记录
| 日期 | 版本 | 修改内容 | 修改人 |
|---|---|---|---|
| 2025-01-XX | v1.0 | 初始版本创建 | - |
| 2025-01-XX | v1.1 | 确认大单标准(>10000)和到店定义(耗卡记录) | - |
| 2025-01-XX | v1.2 | 确认团队显示规则(仅全员拓客)、时间自动填充、移除门店筛选,新增多维度统计建议 | - |
| 2025-01-XX | v1.3 | 修改页面结构,不使用Tab切换,改为垂直滚动布局 | - |
文档状态: ✅ 业务规则已确认,待开发实施