Files
CKB-Interface/docs/traffic_pool_design.md
2026-02-04 11:02:33 +08:00

68 KiB
Raw Blame History

新流量池系统设计文档

版本V1.0
日期2026-01-29
状态:已确认


功能概述

流量池系统是一套统一管理客户资源的系统,通过对微信好友、群成员等多渠道流量进行归集、分类、打标、分配和行为追踪,实现客户资源的精细化运营和价值最大化。


一、需求概述

1.1 项目背景

基于现有数据库中 s2_ 开头的表(触客宝系统),设计一套全新的流量池管理系统,实现流量的统一管理、分类、追踪和分析。

1.2 核心需求

序号 需求 说明
1 流量池总表 全局唯一,按 identifier微信ID优先去重
2 公司子表 包含 companyId支持多租户数据隔离
3 流量池分组 支持自定义流量池分组(如:高价值客户池、潜在客户池等)
4 来源追溯 完整记录流量的获取渠道和路径
5 行为记录 记录所有消息互动和关键行为
6 标签同步 同步微信好友标签到流量池

1.3 设计原则

  • 全局唯一:流量池总表按 identifier 全局唯一优先使用微信ID
  • 多租户隔离:子表通过 companyId 实现数据隔离
  • 灵活分组:支持系统默认分组和自定义分组
  • 来源可追溯:完整记录流量的获取渠道和路径
  • 行为可分析:记录用户行为,支持 RFM 分析

二、系统架构

2.1 整体系统架构图

┌─────────────────────────────────────────────────────────────────────────────────────────────┐
│                                    流量池系统整体架构                                         │
├─────────────────────────────────────────────────────────────────────────────────────────────┤
│                                                                                             │
│  ┌─────────────────────────────────────────────────────────────────────────────────────┐   │
│  │                              【数据采集层】                                           │   │
│  │  ┌───────────┐  ┌───────────┐  ┌───────────┐  ┌───────────┐  ┌───────────┐         │   │
│  │  │ 微信好友  │  │ 群成员    │  │ 海报获客  │  │ 电话获客  │  │ API导入   │  ...    │   │
│  │  └─────┬─────┘  └─────┬─────┘  └─────┬─────┘  └─────┬─────┘  └─────┬─────┘         │   │
│  └────────┼──────────────┼──────────────┼──────────────┼──────────────┼───────────────┘   │
│           └──────────────┴──────────────┼──────────────┴──────────────┘                    │
│                                         ▼                                                  │
│  ┌─────────────────────────────────────────────────────────────────────────────────────┐   │
│  │                              【流量入池引擎】                                         │   │
│  │                                                                                      │   │
│  │    ┌─────────────────┐      ┌─────────────────┐      ┌─────────────────┐            │   │
│  │    │ 1.提取identifier │ ──▶ │ 2.查重/创建总表  │ ──▶ │ 3.创建公司记录   │            │   │
│  │    │   (微信ID优先)   │      │  ck_traffic_pool │      │ ck_traffic_pool │            │   │
│  │    └─────────────────┘      └─────────────────┘      │    _company     │            │   │
│  │                                                       └────────┬────────┘            │   │
│  └────────────────────────────────────────────────────────────────┼─────────────────────┘   │
│                                                                   │                         │
│           ┌───────────────────────────────────────────────────────┼───────────────────┐     │
│           │                                                       │                   │     │
│           ▼                                                       ▼                   ▼     │
│  ┌─────────────────┐                                    ┌─────────────────┐  ┌────────────┐│
│  │【来源追溯系统】  │                                    │  【标签系统】    │  │【分配系统】││
│  │                 │                                    │                 │  │            ││
│  │ck_traffic_pool_ │                                    │  ┌───────────┐  │  │ck_traffic_ ││
│  │    source       │                                    │  │ 标签类目  │  │  │ pool_allot ││
│  │                 │                                    │  │ tag_      │  │  │  _record   ││
│  │ · 来源类型      │                                    │  │ category  │  │  │            ││
│  │ · 来源渠道      │                                    │  └─────┬─────┘  │  │ · 分配规则 ││
│  │ · 关联任务      │                                    │        │        │  │ · 归属客服 ││
│  │ · 首次来源标记  │                                    │        ▼        │  │ · 有效期   ││
│  └─────────────────┘                                    │  ┌───────────┐  │  └────────────┘│
│                                                         │  │ 标签定义  │  │                │
│                                                         │  │ tag_      │  │                │
│                                                         │  │ define    │  │                │
│                                                         │  └─────┬─────┘  │                │
│                                                         │        │        │                │
│                                                         │        ▼        │                │
│                                                         │  ┌───────────┐  │                │
│                                                         │  │ 标签关联  │  │                │
│                                                         │  │ tag       │  │                │
│                                                         │  └───────────┘  │                │
│                                                         └────────┬────────┘                │
│                                                                  │                         │
│  ┌───────────────────────────────────────────────────────────────┼─────────────────────┐   │
│  │                          【行为追踪系统】                       │                     │   │
│  │                                                               ▼                     │   │
│  │   ┌─────────────┐     ┌─────────────┐     ┌─────────────┐  ┌───────────────┐        │   │
│  │   │  消息互动   │     │  朋友圈互动  │     │   订单行为  │  │  行为记录表    │        │   │
│  │   │ s2_wechat_  │ ──▶ │ s2_wechat_  │ ──▶ │   订单系统  │──▶│ck_traffic_   │        │   │
│  │   │  message    │     │  moments    │     │             │  │ pool_behavior │        │   │
│  │   └─────────────┘     └─────────────┘     └─────────────┘  └───────┬───────┘        │   │
│  │                                                                    │                │   │
│  │                       记录行为后更新 RFM 指标                        │                │   │
│  │                              ┌─────────────────────────────────────┘                │   │
│  │                              ▼                                                      │   │
│  │                    ┌───────────────────┐                                            │   │
│  │                    │ 更新用户画像      │                                            │   │
│  │                    │ · lastInteractTime│                                            │   │
│  │                    │ · rfmF (频次)     │                                            │   │
│  │                    │ · rfmM (金额)     │                                            │   │
│  │                    │ · totalMsgCount   │                                            │   │
│  │                    └───────────────────┘                                            │   │
│  └─────────────────────────────────────────────────────────────────────────────────────┘   │
│                                                                                             │
│  ┌─────────────────────────────────────────────────────────────────────────────────────┐   │
│  │                           【流量池分组与查询】                                        │   │
│  │                                                                                      │   │
│  │    ┌─────────────────────────────────────────────────────────────────────────────┐  │   │
│  │    │                      ck_traffic_pool_group分组表                          │  │   │
│  │    │                                                                             │  │   │
│  │    │  ┌─────────────┐  ┌─────────────┐  ┌─────────────┐  ┌─────────────┐         │  │   │
│  │    │  │ 全部好友池  │  │ 高价值客户  │  │ 潜在客户池  │  │ 高互动客户  │  自定义  │  │   │
│  │    │  │ (系统默认)  │  │ (系统默认)  │  │ (系统默认)  │  │ (系统默认)  │  分组... │  │   │
│  │    │  └──────┬──────┘  └──────┬──────┘  └──────┬──────┘  └──────┬──────┘         │  │   │
│  │    └─────────┼────────────────┼────────────────┼────────────────┼────────────────┘  │   │
│  │              │                │                │                │                   │   │
│  │              ▼                ▼                ▼                ▼                   │   │
│  │    ┌─────────────────────────────────────────────────────────────────────────────┐  │   │
│  │    │                        ruleConfigJSON规则配置                            │  │   │
│  │    │                                                                             │  │   │
│  │    │   friendStatus=2   rfmM>=1000 OR     intentionLevel>=2    totalMsgCount     │  │   │
│  │    │                    level=VIP         AND orderCount=0     >=50              │  │   │
│  │    └─────────────────────────────────────────────────────────────────────────────┘  │   │
│  │                                       │                                             │   │
│  │                                       ▼                                             │   │
│  │    ┌─────────────────────────────────────────────────────────────────────────────┐  │   │
│  │    │              动态查询 ck_traffic_pool_company 匹配规则的用户                  │  │   │
│  │    │                    或查询 ck_traffic_pool_group_member 手动成员               │  │   │
│  │    └─────────────────────────────────────────────────────────────────────────────┘  │   │
│  └─────────────────────────────────────────────────────────────────────────────────────┘   │
│                                                                                             │
│  ┌─────────────────────────────────────────────────────────────────────────────────────┐   │
│  │                              【工作台集成】                                           │   │
│  │                                                                                      │   │
│  │    ┌─────────────┐  ┌─────────────┐  ┌─────────────┐  ┌─────────────┐              │   │
│  │    │  流量分发   │  │  联系人导入  │  │  自动建群   │  │  群消息推送  │  ...        │   │
│  │    │             │  │             │  │             │  │             │              │   │
│  │    │ pools: [1,2]│  │ pools: [3]  │  │poolGroups:  │  │trafficPools:│              │   │
│  │    │             │  │             │  │   [1,2,3]   │  │   [4,5]     │              │   │
│  │    └──────┬──────┘  └──────┬──────┘  └──────┬──────┘  └──────┬──────┘              │   │
│  │           │                │                │                │                     │   │
│  │           └────────────────┴────────────────┴────────────────┘                     │   │
│  │                                    │                                               │   │
│  │                                    ▼                                               │   │
│  │                    ┌─────────────────────────────┐                                 │   │
│  │                    │ 根据分组ID获取目标用户列表   │                                 │   │
│  │                    │ 执行工作台任务              │                                 │   │
│  │                    └─────────────────────────────┘                                 │   │
│  └─────────────────────────────────────────────────────────────────────────────────────┘   │
│                                                                                             │
└─────────────────────────────────────────────────────────────────────────────────────────────┘

2.2 标签与用户画像体系流程图

┌─────────────────────────────────────────────────────────────────────────────────────────────┐
│                                   标签与用户画像体系                                          │
├─────────────────────────────────────────────────────────────────────────────────────────────┤
│                                                                                             │
│   【标签来源】                        【标签存储】                    【标签应用】            │
│                                                                                             │
│   ┌─────────────────┐                                                                       │
│   │   微信同步      │                                                                       │
│   │ s2_wechat_friend│──┐                                                                    │
│   │   .labels       │  │           ┌─────────────────────────────────────────┐              │
│   └─────────────────┘  │           │        ck_traffic_pool_tag_category     │              │
│                        │           │              (标签类目表)              │              │
│   ┌─────────────────┐  │           │  ┌─────────┐ ┌─────────┐ ┌─────────┐   │              │
│   │   手动打标      │  │           │  │微信标签 │ │站内标签 │ │ AI标签  │   │              │
│   │   用户操作      │──┤           │  │tagType=1│ │tagType=2│ │tagType=3│   │              │
│   └─────────────────┘  │           │  └────┬────┘ └────┬────┘ └────┬────┘   │              │
│                        │           └───────┼──────────┼──────────┼─────────┘              │
│   ┌─────────────────┐  │                   │          │          │                         │
│   │   规则自动打标  │  │                   ▼          ▼          ▼                         │
│   │   定时任务触发  │──┤           ┌─────────────────────────────────────────┐              │
│   └─────────────────┘  │           │        ck_traffic_pool_tag_define       │              │
│                        │──────────▶│              (标签定义表)              │              │
│   ┌─────────────────┐  │           │                                        │              │
│   │   AI 智能打标   │  │           │  示例标签定义:                          │              │
│   │   GPT分析生成   │──┤           │  · 高价值客户 (站内/客户等级)           │              │
│   └─────────────────┘  │           │  · 活跃用户 (站内/行为标签)             │              │
│                        │           │  · 潜在流失 (AI/预测标签)               │              │
│   ┌─────────────────┐  │           │  · VIP (微信/同步标签)                  │              │
│   │   行为触发打标  │  │           └─────────────────┬───────────────────────┘              │
│   │   订单/消息等   │──┘                             │                                      │
│   └─────────────────┘                                ▼                                      │
│                                            ┌─────────────────────────────────────────┐      │
│                                            │        ck_traffic_pool_tag              │      │
│                                            │           (标签关联表)                 │      │
│                                            │                                        │      │
│                                            │  poolCompanyId ──▶ 用户               │      │
│                                            │  tagDefineId   ──▶ 标签               │      │
│                                            │  source        ──▶ 打标来源           │      │
│                                            │  score         ──▶ AI置信度           │      │
│                                            └─────────────────┬───────────────────────┘      │
│                                                              │                              │
│                           ┌──────────────────────────────────┼──────────────────────────┐   │
│                           │                                  │                          │   │
│                           ▼                                  ▼                          ▼   │
│              ┌─────────────────────┐          ┌─────────────────────┐    ┌───────────────┐  │
│              │    用户画像展示     │          │    分组规则匹配     │    │  精准营销     │  │
│              │                    │          │                    │    │              │  │
│              │  · 基础信息        │          │  ruleConfig 中      │    │  · 定向推送  │  │
│              │  · 标签云          │          │  支持标签条件:      │    │  · 个性推荐  │  │
│              │  · RFM 雷达图      │          │                    │    │  · 智能客服  │  │
│              │  · 行为轨迹        │          │  "type": "tag"     │    │              │  │
│              │  · 来源追溯        │          │  "field": "tags"   │    │              │  │
│              │                    │          │  "operator":       │    │              │  │
│              │                    │          │    "contains"      │    │              │  │
│              │                    │          │  "value":          │    │              │  │
│              │                    │          │    ["VIP","重点"]  │    │              │  │
│              └─────────────────────┘          └─────────────────────┘    └───────────────┘  │
│                                                                                             │
└─────────────────────────────────────────────────────────────────────────────────────────────┘

【用户画像数据来源】

┌─────────────────────────────────────────────────────────────────────────────────────────────┐
│                                                                                             │
│    ck_traffic_pool_company用户画像核心数据表                                              │
│    ┌──────────────────────────────────────────────────────────────────────────────────┐     │
│    │                                                                                  │     │
│    │   【基础属性】              【客户价值】              【行为统计】                │     │
│    │   ├─ realName              ├─ level (等级)          ├─ totalMsgCount            │     │
│    │   ├─ phone                 ├─ intentionLevel        ├─ lastMsgTime              │     │
│    │   ├─ email                 ├─ lifecycle             ├─ totalOrderCount          │     │
│    │   ├─ birthday              │                        ├─ totalOrderAmount         │     │
│    │   ├─ address               │                        ├─ lastOrderTime            │     │
│    │   └─ customFields (JSON)   │                        │                           │     │
│    │                            │                        │                           │     │
│    │   【RFM模型】              【归属信息】              【状态管理】                │     │
│    │   ├─ lastInteractTime (R)  ├─ ownerWechatId         ├─ friendStatus             │     │
│    │   ├─ rfmF (频次)           ├─ ownerAccountId        ├─ allocateStatus           │     │
│    │   ├─ rfmM (金额)           ├─ ownerUserId           ├─ status                   │     │
│    │   ├─ rfmScore (综合)       │                        │                           │     │
│    │   └─ rfmType (客户类型)    │                        │                           │     │
│    │                                                                                  │     │
│    └──────────────────────────────────────────────────────────────────────────────────┘     │
│                                          │                                                  │
│                                          ▼                                                  │
│    ┌──────────────────────────────────────────────────────────────────────────────────┐     │
│    │                              用户画像视图整合                                     │     │
│    │                                                                                  │     │
│    │   ┌────────────┐   ┌────────────┐   ┌────────────┐   ┌────────────┐             │     │
│    │   │  基础信息  │   │  标签信息  │   │  行为轨迹  │   │  来源信息  │             │     │
│    │   │            │   │            │   │            │   │            │             │     │
│    │   │ traffic_   │ + │ traffic_   │ + │ traffic_   │ + │ traffic_   │             │     │
│    │   │ pool_      │   │ pool_tag   │   │ pool_      │   │ pool_      │             │     │
│    │   │ company    │   │            │   │ behavior   │   │ source     │             │     │
│    │   └────────────┘   └────────────┘   └────────────┘   └────────────┘             │     │
│    │          │                │                │                │                   │     │
│    │          └────────────────┴────────────────┴────────────────┘                   │     │
│    │                                    │                                            │     │
│    │                                    ▼                                            │     │
│    │                         ┌──────────────────────┐                                │     │
│    │                         │   完整用户画像       │                                │     │
│    │                         │   (前端展示用)       │                                │     │
│    │                         └──────────────────────┘                                │     │
│    └──────────────────────────────────────────────────────────────────────────────────┘     │
│                                                                                             │
└─────────────────────────────────────────────────────────────────────────────────────────────┘

2.3 表结构关系图

┌─────────────────────────────────────────────────────────────────────┐
│                     ck_traffic_pool总表                          │
│                    全局唯一的流量标识                                 │
└─────────────────────────────────────────────────────────────────────┘
                                │
                                │ 1:N
                                ▼
┌─────────────────────────────────────────────────────────────────────┐
│                ck_traffic_pool_company公司子表                    │
│              每个公司独立的流量详情含companyId                     │
└─────────────────────────────────────────────────────────────────────┘
     │              │                │                │              │
     │ N:1          │ 1:N            │ 1:N            │ 1:N          │ 1:N
     ▼              ▼                ▼                ▼              ▼
┌──────────┐ ┌────────────┐ ┌────────────┐ ┌─────────────┐ ┌─────────────┐
│ 流量池   │ │ 来源记录   │ │ 标签记录   │ │ 行为记录    │ │ 分配记录    │
│ 分组     │ │            │ │            │ │             │ │             │
└──────────┘ └────────────┘ └────────────┘ └─────────────┘ └─────────────┘

2.2 表清单

序号 表名 说明
1 ck_traffic_pool 流量池总表(全局唯一)
2 ck_traffic_pool_company 公司流量详情表(多租户)
3 ck_traffic_pool_group 流量池分组表规则使用JSON存储
4 ck_traffic_pool_group_member 流量池分组成员表(手动添加)
5 ck_traffic_pool_source 流量来源记录表
6 ck_traffic_pool_tag_category 标签类目表
7 ck_traffic_pool_tag_define 标签定义表
8 ck_traffic_pool_tag 流量标签关联表
9 ck_traffic_pool_behavior 流量行为记录表
10 ck_traffic_pool_allot_record 流量分配记录表

⚠️ 优化说明:废弃独立的 ck_traffic_pool_group_rule 表,规则改为存储在 ck_traffic_pool_group.ruleConfig 字段中JSON格式支持嵌套逻辑表达。


三、流量池分组设计

3.1 系统默认分组

分组名称 分组编码 说明 规则
全部好友流量池 all_friends 所有已添加的好友 friendStatus = 2
高价值客户池 high_value 消费金额高的客户 rfmM >= 阈值 或 level = 2(VIP)
潜在客户池 potential 有意向但未成交 intentionLevel >= 2 且 totalOrderCount = 0
高互动客户池 high_interact 互动频繁的客户 rfmF >= 阈值 或 totalMsgCount >= 阈值

3.2 分组特性说明

⚠️ 重要:一个流量可以同时属于多个分组

例如:某客户既消费金额高,又互动频繁,则该客户会同时出现在:

  • 全部好友流量池
  • 高价值客户池
  • 高互动客户池

分组之间是非互斥关系,前端展示时需注意去重统计。

3.3 自定义分组

用户可以基于以下条件创建自定义分组:

  • 标签条件:包含/不包含特定标签
  • 属性条件:性别、地区、等级等
  • 行为条件:消息数、订单数、最后互动时间等
  • RFM条件R/F/M 值范围
  • 来源条件:特定来源渠道

3.4 分组规则配置JSON结构

⚠️ 规则直接存储在 ck_traffic_pool_group.ruleConfig 字段中,支持嵌套逻辑

简单规则示例(全部好友):

{
  "logic": "AND",
  "conditions": [
    { "type": "field", "field": "friendStatus", "operator": "=", "value": 2, "valueType": "number" }
  ]
}

复杂规则示例(高价值客户:已通过好友 AND (消费>=1000 OR 等级=VIP)

{
  "logic": "AND",
  "conditions": [
    { "type": "field", "field": "friendStatus", "operator": "=", "value": 2, "valueType": "number" },
    {
      "type": "group",
      "logic": "OR",
      "conditions": [
        { "type": "field", "field": "rfmM", "operator": ">=", "value": 1000, "valueType": "number" },
        { "type": "field", "field": "level", "operator": "=", "value": 2, "valueType": "number" }
      ]
    }
  ]
}

标签规则示例

{
  "logic": "AND",
  "conditions": [
    { "type": "field", "field": "friendStatus", "operator": "=", "value": 2, "valueType": "number" },
    { "type": "tag", "field": "tags", "operator": "contains", "value": ["重点客户", "已成交"], "valueType": "array" }
  ]
}

规则字段说明

字段 说明
type 条件类型:field=字段条件,group=嵌套分组,tag=标签条件
logic 逻辑运算符:ANDOR
field 字段名
operator 操作符:=, !=, >, <, >=, <=, in, not_in, contains, not_contains, between
value 条件值
valueType 值类型:string, number, array, date

四、详细表结构

4.1 流量池总表 ck_traffic_pool

用途:存储全局唯一的流量标识,不区分公司

字段名 类型 必填 默认值 说明
id int(11) UNSIGNED AUTO 主键ID
identifier varchar(64) - 流量唯一标识微信ID优先
identifierType tinyint(2) 1 标识类型1=微信ID2=微信号3=手机号
wechatId varchar(64) NULL 微信ID
wechatAlias varchar(64) NULL 微信号
mobile varchar(20) NULL 手机号
nickname varchar(100) NULL 昵称
avatar varchar(500) NULL 头像URL
gender tinyint(1) 0 性别0=未知1=男2=女
region varchar(100) NULL 地区
country varchar(50) NULL 国家
province varchar(50) NULL 省份
city varchar(50) NULL 城市
signature varchar(500) NULL 个性签名
firstSeenTime int(11) NULL 首次出现时间
lastSeenTime int(11) NULL 最后活跃时间
createTime int(11) - 创建时间
updateTime int(11) NULL 更新时间

索引设计

  • 主键:id
  • 唯一索引:uk_identifier (identifier)
  • 普通索引:idx_wechatId (wechatId)idx_wechatAlias (wechatAlias)idx_mobile (mobile)

4.2 公司流量详情表 ck_traffic_pool_company

用途:存储流量在各公司的详细信息,支持多租户

字段名 类型 必填 默认值 说明
id int(11) UNSIGNED AUTO 主键ID
poolId int(11) UNSIGNED - 流量池总表ID
identifier varchar(64) - 流量标识(冗余)
companyId int(11) UNSIGNED - 公司ID
归属信息
ownerWechatId varchar(64) NULL 归属客服微信ID
ownerAccountId int(11) NULL 归属客服账号IDs2_wechat_account.id
ownerUserId int(11) NULL 归属操盘手ID
好友关联
wechatFriendId int(11) NULL 微信好友IDs2_wechat_friend.id
friendStatus tinyint(2) 0 好友状态0=未加1=待通过2=已通过3=已删除4=被删除
friendPassTime int(11) NULL 好友通过时间
客户属性
realName varchar(50) NULL 真实姓名
idCard varchar(18) NULL 身份证号
phone varchar(20) NULL 联系电话
email varchar(100) NULL 邮箱
birthday date NULL 生日
address varchar(255) NULL 地址
company varchar(100) NULL 所在公司
position varchar(50) NULL 职位
remark varchar(500) NULL 备注
customFields json NULL 自定义字段
客户等级
level tinyint(2) 0 客户等级0=普通1=重要2=VIP
intentionLevel tinyint(2) 0 意向度0=未知1=低2=中3=高
RFM模型
lastInteractTime int(11) NULL 最后互动时间戳R值动态计算DATEDIFF(NOW(), FROM_UNIXTIME(lastInteractTime))
rfmF int(11) 0 F值-互动频次
rfmM decimal(12,2) 0.00 M值-消费金额
rfmScore int(11) 0 RFM综合评分
rfmType varchar(20) NULL RFM客户类型
统计信息
totalOrderCount int(11) 0 累计订单数
totalOrderAmount decimal(12,2) 0.00 累计订单金额
lastOrderTime int(11) NULL 最后下单时间
totalMsgCount int(11) 0 累计消息数
lastMsgTime int(11) NULL 最后消息时间
来源追溯
firstSourceType tinyint(2) NULL 首次来源类型
firstSourceTime int(11) NULL 首次来源时间
生命周期
lifecycle tinyint(2) 1 生命周期1=新流量2=跟进中3=已成交4=沉默5=流失
状态管理
status tinyint(2) 1 状态0=禁用1=正常2=黑名单
allocateStatus tinyint(2) 0 分配状态0=未分配1=已分配2=已回收
allocateTime int(11) NULL 分配时间
expireTime int(11) NULL 到期时间
时间戳
createTime int(11) - 创建时间
updateTime int(11) NULL 更新时间
isDel tinyint(1) 0 是否删除
deleteTime int(11) NULL 删除时间

索引设计

  • 主键:id
  • 唯一索引:uk_identifier_company (identifier, companyId)
  • 普通索引:idx_poolIdidx_companyIdidx_ownerWechatIdidx_wechatFriendIdidx_friendStatusidx_statusidx_levelidx_allocateStatusidx_lifecycle

💡 优化说明:删除重复的 uk_pool_company 唯一索引,因为 poolIdidentifier 一一对应,保留更常用的 uk_identifier_company


4.3 流量池分组表 ck_traffic_pool_group

用途:管理流量池分组(如:高价值客户池、潜在客户池等)

字段名 类型 必填 默认值 说明
id int(11) UNSIGNED AUTO 主键ID
companyId int(11) UNSIGNED - 公司ID0=系统默认)
groupCode varchar(50) - 分组编码(唯一标识)
groupName varchar(50) - 分组名称
groupIcon varchar(255) NULL 分组图标
groupColor varchar(20) NULL 分组颜色
description varchar(255) NULL 分组描述
isSystem tinyint(1) 0 是否系统默认0=否1=是
isDefault tinyint(1) 0 是否默认展示0=否1=是
ruleType tinyint(2) 1 规则类型1=动态规则2=手动添加
ruleConfig json NULL 规则配置JSON
memberCount int(11) 0 成员数量(缓存)
sort int(11) 0 排序(数值越小越靠前)
status tinyint(1) 1 状态0=禁用1=启用
userId int(11) NULL 创建用户ID
createTime int(11) - 创建时间
updateTime int(11) NULL 更新时间
isDel tinyint(1) 0 是否删除
deleteTime int(11) NULL 删除时间

索引设计

  • 主键:id
  • 唯一索引:uk_company_code (companyId, groupCode)
  • 普通索引:idx_companyIdidx_isSystemidx_statusidx_sort

4.4 流量池分组成员表 ck_traffic_pool_group_member

用途手动添加到分组的成员ruleType=2时使用

字段名 类型 必填 默认值 说明
id int(11) UNSIGNED AUTO 主键ID
groupId int(11) UNSIGNED - 分组ID
poolCompanyId int(11) UNSIGNED - 公司流量详情表ID
identifier varchar(64) - 流量标识(冗余)
companyId int(11) UNSIGNED - 公司ID
addType tinyint(2) 1 添加方式1=手动2=批量导入
operatorId int(11) NULL 操作人ID
createTime int(11) - 创建时间
isDel tinyint(1) 0 是否删除
deleteTime int(11) NULL 删除时间

索引设计

  • 主键:id
  • 唯一索引:uk_group_pool (groupId, poolCompanyId)
  • 普通索引:idx_companyIdidx_identifier

4.5 流量来源表 ck_traffic_pool_source

用途:记录流量的获取渠道和来源路径

字段名 类型 必填 默认值 说明
id int(11) UNSIGNED AUTO 主键ID
poolCompanyId int(11) UNSIGNED - 公司流量详情表ID
identifier varchar(64) - 流量标识(冗余)
companyId int(11) UNSIGNED - 公司ID
来源类型
sourceType tinyint(2) - 来源类型(见下表)
sourceSubType varchar(50) NULL 来源子类型
来源详情
sourceId varchar(100) NULL 来源ID
sourceName varchar(255) NULL 来源名称
sourceWechatId varchar(64) NULL 来源微信ID
sourceChatroomId varchar(64) NULL 来源群ID
sourceSceneId int(11) NULL 来源场景ID
sourceChannelId int(11) NULL 来源渠道ID
关联任务
friendTaskId int(11) NULL 加好友任务ID
taskCustomerId int(11) NULL 获客任务客户ID
状态
sourceStatus tinyint(2) 1 来源状态1=待处理2=处理中3=已通过4=已拒绝5=已过期
isFirstSource tinyint(1) 0 是否首次来源0=否1=是
extra json NULL 额外信息
remark varchar(255) NULL 备注
createTime int(11) - 创建时间
updateTime int(11) NULL 更新时间

来源类型枚举

说明
1 好友添加
2 群成员
3 海报获客
4 电话获客
5 订单获客
6 API导入
7 手动导入
8 裂变活动

五、标签系统设计

5.1 标签系统架构

┌─────────────────────────────────────────────────────────────────────┐
│                    标签类型tagType                               │
│         1=微信标签    2=站内标签    3=AI标签                          │
└─────────────────────────────────────────────────────────────────────┘
                                │
                                ▼
┌─────────────────────────────────────────────────────────────────────┐
│              ck_traffic_pool_tag_category标签类目表               │
│              每种标签类型下可以有多个类目                              │
└─────────────────────────────────────────────────────────────────────┘
                                │
                                │ 1:N
                                ▼
┌─────────────────────────────────────────────────────────────────────┐
│              ck_traffic_pool_tag_define标签定义表                 │
│              每个类目下可以定义多个具体标签                            │
└─────────────────────────────────────────────────────────────────────┘
                                │
                                │ N:M
                                ▼
┌─────────────────────────────────────────────────────────────────────┐
│              ck_traffic_pool_tag流量标签关联表                     │
│              流量与标签的多对多关联                                    │
└─────────────────────────────────────────────────────────────────────┘

5.2 标签类型说明

标签类型 tagType 说明 数据来源
微信标签 1 从微信同步过来的好友标签 s2_wechat_friend.labels 同步
站内标签 2 系统内部定义的业务标签 用户手动打标/规则自动打标
AI标签 3 AI根据用户画像自动生成 AI分析自动生成

5.3 标签类目表 ck_traffic_pool_tag_category

用途:管理标签的类目/分组,支持多级分类

字段名 类型 必填 默认值 说明
id int(11) UNSIGNED AUTO 主键ID
companyId int(11) UNSIGNED - 公司ID0=系统默认)
parentId int(11) UNSIGNED 0 父类目ID0=顶级类目)
tagType tinyint(2) - 标签类型1=微信标签2=站内标签3=AI标签
categoryCode varchar(50) - 类目编码
categoryName varchar(50) - 类目名称
categoryIcon varchar(255) NULL 类目图标
categoryColor varchar(20) NULL 类目颜色
description varchar(255) NULL 类目描述
isSystem tinyint(1) 0 是否系统默认0=否1=是
sort int(11) 0 排序
status tinyint(1) 1 状态0=禁用1=启用
userId int(11) NULL 创建用户ID
createTime int(11) - 创建时间
updateTime int(11) NULL 更新时间
isDel tinyint(1) 0 是否删除
deleteTime int(11) NULL 删除时间

索引设计

  • 主键:id
  • 唯一索引:uk_company_code (companyId, categoryCode)
  • 普通索引:idx_companyIdidx_parentIdidx_tagTypeidx_status

5.4 标签定义表 ck_traffic_pool_tag_define

用途:定义具体的标签

字段名 类型 必填 默认值 说明
id int(11) UNSIGNED AUTO 主键ID
companyId int(11) UNSIGNED - 公司ID0=系统默认)
categoryId int(11) UNSIGNED 0 所属类目ID
tagType tinyint(2) - 标签类型1=微信标签2=站内标签3=AI标签
tagCode varchar(50) - 标签编码
tagName varchar(50) - 标签名称
tagIcon varchar(255) NULL 标签图标
tagColor varchar(20) NULL 标签颜色
description varchar(255) NULL 标签描述
isSystem tinyint(1) 0 是否系统默认0=否1=是
isExclusive tinyint(1) 0 是否互斥标签0=否1=是(同类目下只能选一个)
sort int(11) 0 排序
status tinyint(1) 1 状态0=禁用1=启用
useCount int(11) 0 使用次数(缓存)
syncFromWechat tinyint(1) 0 是否来自微信同步0=否1=是
userId int(11) NULL 创建用户ID
createTime int(11) - 创建时间
updateTime int(11) NULL 更新时间
isDel tinyint(1) 0 是否删除
deleteTime int(11) NULL 删除时间

索引设计

  • 主键:id
  • 唯一索引:uk_company_code (companyId, tagCode)
  • 普通索引:idx_companyIdidx_categoryIdidx_tagTypeidx_tagNameidx_status

5.5 流量标签关联表 ck_traffic_pool_tag

用途:记录流量与标签的关联关系

字段名 类型 必填 默认值 说明
id int(11) UNSIGNED AUTO 主键ID
poolCompanyId int(11) UNSIGNED - 公司流量详情表ID
identifier varchar(64) - 流量标识(冗余)
companyId int(11) UNSIGNED - 公司ID
标签信息
tagDefineId int(11) UNSIGNED - 标签定义ID
tagType tinyint(2) - 标签类型1=微信标签2=站内标签3=AI标签
categoryId int(11) UNSIGNED 0 类目ID冗余
tagName varchar(50) - 标签名称(冗余,方便查询)
tagValue varchar(255) NULL 标签值(部分标签需要值,如:消费金额=1000
来源信息
source tinyint(2) 1 打标来源1=手动2=规则自动3=AI自动4=微信同步
sourceId varchar(100) NULL 来源ID规则ID/AI任务ID等
sourceRemark varchar(255) NULL 来源备注
操作信息
operatorId int(11) NULL 操作人ID
score decimal(5,2) NULL AI标签置信度0-100仅AI标签使用
expireTime int(11) NULL 过期时间(部分标签有时效性)
createTime int(11) - 创建时间
updateTime int(11) NULL 更新时间
isDel tinyint(1) 0 是否删除
deleteTime int(11) NULL 删除时间

索引设计

  • 主键:id
  • 唯一索引:uk_pool_tag (poolCompanyId, tagDefineId)
  • 普通索引:idx_identifier_companyidx_tagDefineIdidx_tagTypeidx_categoryIdidx_tagName

5.6 系统默认标签类目

系统初始化时需要插入以下默认类目:

微信标签类目tagType=1

类目编码 类目名称 说明
wechat_default 微信默认标签 从微信同步的标签

站内标签类目tagType=2

类目编码 类目名称 说明
customer_level 客户等级 普通/重要/VIP
customer_intention 客户意向 低意向/中意向/高意向
customer_stage 客户阶段 新客户/跟进中/已成交/已流失
customer_source 客户来源 海报/电话/群聊/好友推荐等
customer_industry 所属行业 行业分类标签
customer_preference 客户偏好 产品偏好/服务偏好等

AI标签类目tagType=3

类目编码 类目名称 说明
ai_portrait AI画像标签 AI分析的用户画像
ai_behavior AI行为标签 AI分析的行为特征
ai_prediction AI预测标签 AI预测的标签高转化潜力

5.7 流量行为表 ck_traffic_pool_behavior

用途:记录流量的各种行为(包括所有消息互动)

字段名 类型 必填 默认值 说明
id bigint(20) UNSIGNED AUTO 主键ID
poolCompanyId int(11) UNSIGNED - 公司流量详情表ID
identifier varchar(64) - 流量标识(冗余)
companyId int(11) UNSIGNED - 公司ID
行为信息
behaviorType tinyint(2) - 行为类型(见下表)
behaviorSubType varchar(50) NULL 行为子类型
behaviorName varchar(100) NULL 行为名称
行为详情
targetType varchar(50) NULL 目标类型
targetId varchar(100) NULL 目标ID
targetName varchar(255) NULL 目标名称
amount decimal(12,2) 0.00 金额
关联信息只记录ID通过ID关联查询详情
wechatAccountId int(11) NULL 客服微信账号ID
messageId bigint(20) NULL 消息ID关联s2_wechat_message.id
momentsId int(11) NULL 朋友圈ID关联s2_wechat_moments.id
orderId varchar(50) NULL 订单号
extra json NULL 额外信息
remark varchar(255) NULL 备注
behaviorTime int(11) - 行为时间
createTime int(11) - 创建时间

行为类型枚举

说明
1 发送消息
2 接收消息
3 浏览
4 点击
5 咨询
6 下单
7 支付
8 退款
9 点赞朋友圈
10 评论朋友圈

5.8 流量分配记录表 ck_traffic_pool_allot_record

用途:记录流量的分配历史

字段名 类型 必填 默认值 说明
id int(11) UNSIGNED AUTO 主键ID
poolCompanyId int(11) UNSIGNED - 公司流量详情表ID
identifier varchar(64) - 流量标识(冗余)
companyId int(11) UNSIGNED - 公司ID
分配信息
allotType tinyint(2) 1 分配类型1=首次分配2=重新分配3=回收后分配
allotRuleId int(11) NULL 分配规则ID
分配前
fromWechatId varchar(64) NULL 原归属客服微信ID
fromAccountId int(11) NULL 原归属账号ID
fromUserId int(11) NULL 原归属操盘手ID
分配后
toWechatId varchar(64) - 新归属客服微信ID
toAccountId int(11) NULL 新归属账号ID
toUserId int(11) NULL 新归属操盘手ID
有效期
expireDays int(11) 30 有效期(天)
expireTime int(11) NULL 到期时间
status tinyint(2) 1 状态1=生效中2=已过期3=已回收
operatorId int(11) NULL 操作人ID
remark varchar(255) NULL 备注
createTime int(11) - 创建时间
updateTime int(11) NULL 更新时间

六、系统默认数据

6.1 默认流量池分组(含规则)

⚠️ 规则使用 JSON 格式存储在 ruleConfig 字段中

INSERT INTO `ck_traffic_pool_group` 
(`companyId`, `groupCode`, `groupName`, `description`, `isSystem`, `isDefault`, `ruleType`, `ruleConfig`, `sort`, `status`) 
VALUES 
-- 全部好友流量池
(0, 'all_friends', '全部好友流量池', '所有已添加的好友', 1, 1, 1, 
 '{"logic":"AND","conditions":[{"type":"field","field":"friendStatus","operator":"=","value":2,"valueType":"number"}]}', 
 1, 1),
 
-- 高价值客户池:已通过好友 AND (消费>=1000 OR 等级=VIP)
(0, 'high_value', '高价值客户池', '消费金额高的客户', 1, 0, 1,
 '{"logic":"AND","conditions":[{"type":"field","field":"friendStatus","operator":"=","value":2,"valueType":"number"},{"type":"group","logic":"OR","conditions":[{"type":"field","field":"rfmM","operator":">=","value":1000,"valueType":"number"},{"type":"field","field":"level","operator":"=","value":2,"valueType":"number"}]}]}',
 2, 1),
 
-- 潜在客户池:已通过好友 AND 意向度>=中 AND 订单数=0
(0, 'potential', '潜在客户池', '有意向但未成交的客户', 1, 0, 1,
 '{"logic":"AND","conditions":[{"type":"field","field":"friendStatus","operator":"=","value":2,"valueType":"number"},{"type":"field","field":"intentionLevel","operator":">=","value":2,"valueType":"number"},{"type":"field","field":"totalOrderCount","operator":"=","value":0,"valueType":"number"}]}',
 3, 1),
 
-- 高互动客户池:已通过好友 AND 消息数>=50
(0, 'high_interact', '高互动客户池', '互动频繁的客户', 1, 0, 1,
 '{"logic":"AND","conditions":[{"type":"field","field":"friendStatus","operator":"=","value":2,"valueType":"number"},{"type":"field","field":"totalMsgCount","operator":">=","value":50,"valueType":"number"}]}',
 4, 1);

七、与现有表的关联关系

7.1 关联图

┌─────────────────────┐         ┌─────────────────────┐
│  s2_wechat_account  │◄────────│ ck_traffic_pool_    │
│    (微信客服号)      │         │     company         │
└─────────────────────┘         │ (ownerWechatId)     │
          │                     └─────────────────────┘
          │                              │
          ▼                              │
┌─────────────────────┐                  │
│   s2_wechat_friend  │◄─────────────────┘
│    (微信好友)       │  (wechatFriendId)
└─────────────────────┘
          │
          │ wechatId
          ▼
┌─────────────────────┐
│   ck_traffic_pool   │
│     (流量池总表)     │
│    (identifier)     │
└─────────────────────┘

7.2 关联字段映射

新表字段 关联表 关联字段 说明
ck_traffic_pool.identifier s2_wechat_friend wechatId 微信ID匹配
ck_traffic_pool_company.wechatFriendId s2_wechat_friend id 好友ID关联
ck_traffic_pool_company.ownerWechatId s2_wechat_account wechatId 客服微信ID
ck_traffic_pool_company.ownerAccountId s2_wechat_account id 客服账号ID
ck_traffic_pool_source.friendTaskId s2_friend_task id 加好友任务ID
ck_traffic_pool_behavior.messageId s2_wechat_message id 消息ID

八、核心业务流程

8.1 流量入池流程

1. 新流量进入(好友添加/群成员/获客等)
   ↓
2. 提取 identifier优先微信ID
   ↓
3. 查询 ck_traffic_pool 是否存在
   ├── 不存在 → 创建总表记录
   └── 存在 → 获取 poolId
   ↓
4. 查询 ck_traffic_pool_company 是否存在该公司记录
   ├── 不存在 → 创建公司记录
   └── 存在 → 更新公司记录
   ↓
5. 创建 ck_traffic_pool_source 来源记录
   ↓
6. 同步标签到 ck_traffic_pool_tag
   ↓
7. 根据分配规则执行分配 → ck_traffic_pool_allot_record

8.2 好友通过同步流程

1. s2_wechat_friend 新增好友通过记录
   ↓
2. 根据 wechatId 匹配 ck_traffic_pool
   ↓
3. 更新 ck_traffic_pool_company:
   - wechatFriendId = 好友ID
   - friendStatus = 2
   - friendPassTime = 当前时间
   ↓
4. 同步好友标签到 ck_traffic_pool_tag
   ↓
5. 更新总表基础信息(昵称、头像等)

8.3 消息互动记录流程

1. s2_wechat_message 新增消息记录
   ↓
2. 根据 wechatFriendId 找到对应流量
   ↓
3. 创建 ck_traffic_pool_behavior 行为记录
   ↓
4. 更新 ck_traffic_pool_company:
   - totalMsgCount += 1
   - lastMsgTime = 当前时间
   - rfmR = 0重置为今天
   - rfmF += 1

8.4 流量池分组查询流程

1. 获取分组配置
   ↓
2. 解析规则配置 ruleConfig
   ↓
3. 动态构建 SQL 查询条件
   ↓
4. 查询 ck_traffic_pool_company
   ↓
5. 返回分组成员列表

九、确认事项

以下事项已全部确认

事项 确认结果
identifier 优先级 微信ID优先
表名前缀 ck_ 开头
行为记录 需要记录所有消息互动只记录消息ID通过ID关联查询详情
标签同步 需要同步微信好友标签
流量池分组 支持系统默认和自定义分组,一个流量可属于多个分组
身份证字段 新增身份证号字段
标签分类 分为微信标签、站内标签、AI标签支持类目扩展

十、开发注意事项

10.1 统计字段并发更新规范

⚠️ totalMsgCounttotalOrderCount 等统计字段在高并发场景下需使用原子操作

错误示例

// ❌ 可能导致数据丢失
$record = Model::find($id);
$record->totalMsgCount = $record->totalMsgCount + 1;
$record->save();

正确示例

// ✅ 使用原子操作
Db::table('ck_traffic_pool_company')
    ->where('id', $id)
    ->inc('totalMsgCount', 1)
    ->update();

// ✅ 或使用 SQL
UPDATE ck_traffic_pool_company 
SET totalMsgCount = totalMsgCount + 1,
    lastMsgTime = UNIX_TIMESTAMP(),
    lastInteractTime = UNIX_TIMESTAMP()
WHERE id = ?;

10.2 RFM R值计算方式

R值不存储天数而是存储 lastInteractTime 时间戳,查询时动态计算:

SELECT 
    *,
    DATEDIFF(NOW(), FROM_UNIXTIME(lastInteractTime)) AS rfmR
FROM ck_traffic_pool_company
WHERE companyId = ?;

10.3 首次来源标记

流量入池时,需判断是否为首次来源:

// 检查是否已有来源记录
$existSource = Db::table('ck_traffic_pool_source')
    ->where('poolCompanyId', $poolCompanyId)
    ->find();

$isFirstSource = $existSource ? 0 : 1;

// 如果是首次来源,同时更新 company 表的首次来源字段
if ($isFirstSource) {
    Db::table('ck_traffic_pool_company')
        ->where('id', $poolCompanyId)
        ->update([
            'firstSourceType' => $sourceType,
            'firstSourceTime' => time()
        ]);
}

十一、下一步计划

确认本文档后,将进行以下开发工作:

  1. 创建 SQL 文件:生成所有表的建表语句
  2. 数据迁移脚本:(如需要)从旧表迁移数据
  3. Model 层开发:创建对应的 PHP Model 类
  4. Service 层开发:实现核心业务逻辑
  5. Controller 层开发:实现 API 接口
  6. 前端页面开发:流量池管理界面

请确认以上设计方案,确认后开始开发。