d9aced6a
“wangming”
优化工资计算逻辑,确保未锁定且未确...
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
|
# 拓客驾驶舱需求文档
## 📋 文档说明
- **创建日期**: 2025-01-XX
- **版本**: v1.3
- **状态**: 业务规则已确认,待开发
- **目标**: 基于现有拓客报表页面(`lqTkjlb/report`),设计并实现一个功能完整的拓客驾驶舱
### ✅ 已确认的业务规则
1. **大单标准**: 开单金额(`sfyj` 实付业绩)> 10000 元(不含等于)
2. **到店定义**: 使用耗卡记录(`lq_xh_hyhk`)判断,存在有效耗卡记录即视为到店
3. **团队显示**: 仅当活动类型为"全员拓客"(EventType=3)时显示团队相关字段和统计,日常拓客(EventType=1)无团队概念
4. **时间范围**: 选择拓客活动后,时间范围自动填充为该活动的开始和结束时间
5. **门店筛选**: 不提供门店筛选功能,数据按活动范围统计所有门店
---
## 一、现有功能梳理
### 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_tkjlb`
- `F_ExpansionUserId`: 拓客人员ID
- `F_MemberId`: 会员ID
- `F_BuyNumber`: 购买张数
- **开单记录表**: `lq_kd_kdjlb`
- `kdhy`: 开单会员ID(关联 `lq_tkjlb.F_MemberId`)
- `sfyj`: 实付业绩(用于判断大单)
- **耗卡记录表**: `lq_xh_hyhk`
- `hyzh`: 会员账号(关联 `lq_tkjlb.F_MemberId`)
- **预约记录表**: `lq_yyjl`
- `gk`: 顾客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`: 拓客人员ID
- `F_CustomerName`: 顾客姓名
- `F_CustomerPhone`: 顾客电话号码
- `F_BuyNumber`: 购买张数
- `F_EventId`: 拓客活动ID
- `F_StoreId`: 所属门店ID
- `F_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`: 门店ID
- `F_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`: 门店ID
- `F_ZW`: 职位
- `OrganizeId`: 部门ID
#### `lq_mdxx` - 门店信息表
- `F_Id`: 门店ID
- `dm`: 门店名称
#### `lq_event` - 拓客活动表
- `F_Id`: 活动ID
- `F_EventName`: 活动名称
- `F_EventType`: 活动类型(1=日常拓客,3=全员拓客)
- `F_StartTime`: 活动开始时间
- `F_EndTime`: 活动结束时间
#### `lq_eventuser` - 拓客活动用户表
- `F_EventId`: 拓客活动ID
- `F_UserId`: 用户ID
- `F_DepId`: 部门ID
- `F_TeamName`: 战队名称(**仅在活动类型为"全员拓客"时有值**)
- `F_StoreId`: 门店ID
- `F_EventTarget`: 拓客目标数量
---
## 五、接口设计
### 5.1 拓客驾驶舱统计接口
#### 5.1.1 获取驾驶舱概览数据
```
GET /api/Extend/LqTkDashboard/GetOverview
```
**请求参数**:
```json
{
"eventId": "活动ID(必填)",
"startTime": "2025-01-01", // 当选择活动时,自动填充活动的开始时间
"endTime": "2025-01-31" // 当选择活动时,自动填充活动的结束时间
}
```
**说明**:
- `eventId`: 必填,选择拓客活动后,时间范围会自动填充为该活动的开始和结束时间
- `startTime` / `endTime`: 根据选择的活动自动填充,用户可手动调整
- **不提供门店筛选功能**,数据按活动范围统计所有门店
**返回数据**:
```json
{
"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
```
**请求参数**:
```json
{
"eventId": "活动ID(必填)",
"startTime": "2025-01-01", // 自动填充活动开始时间
"endTime": "2025-01-31" // 自动填充活动结束时间
}
```
**返回数据**:
```json
{
"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
```
**请求参数**:
```json
{
"eventId": "活动ID(必填)",
"startTime": "2025-01-01", // 自动填充活动开始时间
"endTime": "2025-01-31" // 自动填充活动结束时间
}
```
**返回数据**:
```json
{
"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
```
**请求参数**:
```json
{
"eventId": "活动ID(必填)",
"startTime": "2025-01-01", // 自动填充活动开始时间
"endTime": "2025-01-31" // 自动填充活动结束时间
}
```
**返回数据**:
```json
{
"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 大单判断逻辑(已确认)
```csharp
// 大单定义:开单金额(实付业绩)> 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 关联查询逻辑(已确认)
```sql
-- 拓客到开单关联(用于统计开单人数、开单金额、大单)
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 团队字段显示逻辑(已确认)
```csharp
// 判断活动类型
var eventType = event.EventType; // 1=日常拓客, 3=全员拓客
// 仅在全员拓客时显示团队字段
if (eventType == 3) // 全员拓客
{
// 显示团队相关字段和统计
// 从 lq_eventuser.F_TeamName 或 lq_tkjlb.F_TeamName 获取
}
else // 日常拓客
{
// 不显示团队字段,团队相关统计隐藏
}
```
### 7.5 时间范围自动填充逻辑
```javascript
// 前端:选择活动后自动填充时间
onEventChange(eventId) {
const event = eventList.find(e => e.id === eventId);
if (event) {
this.queryParams.startTime = event.startTime;
this.queryParams.endTime = event.endTime;
}
}
```
```csharp
// 后端:根据活动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 第一优先级(必须实现)
1. ✅ **大单统计功能**
- 大单概览统计
- 大单明细列表
- 大单导出功能
2. ✅ **拓客人员参与统计**
- 人员统计列表
- 人员数据导出
3. ✅ **到店转化分析增强**
- 到店率计算优化
- 到店时间分析
### 8.2 第二优先级(建议实现)
1. 时间维度分析
2. 门店对比分析
3. 客户画像分析
### 8.3 第三优先级(可选实现)
1. 流失分析
2. 复购分析
3. ROI分析
---
## 九、待讨论问题
### 9.1 业务规则确认(已确认)
1. ✅ **大单标准**: 已确认使用 **> 10000 元**作为大单标准(不含等于)
2. ✅ **到店定义**: 已确认使用 **耗卡记录**(`lq_xh_hyhk`)来判断到店
3. ✅ **团队显示**: 已确认仅当活动类型为"全员拓客"(EventType=3)时显示团队相关字段和统计,日常拓客(EventType=1)无团队概念
4. ✅ **时间范围**: 已确认选择拓客活动后,时间范围自动填充为该活动的开始和结束时间,用户可手动调整
5. ✅ **门店筛选**: 已确认不提供门店筛选功能,数据按活动范围统计所有门店
6. **权限控制**: 是否需要按门店权限过滤数据?
### 9.2 数据展示确认
1. **大单明细**: 是否需要显示项目明细?如果需要,如何获取?
2. **人员统计**: 是否需要支持按部门、岗位筛选?
3. **导出格式**: Excel导出需要哪些字段?是否需要自定义格式?
### 9.3 功能扩展确认
1. **图表展示**: 是否需要可视化图表(如折线图、柱状图、饼图)?
2. **对比分析**: 是否需要支持多活动对比、多门店对比?
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切换,改为垂直滚动布局 | - |
---
**文档状态**: ✅ 业务规则已确认,待开发实施
|