Files
shanxia2.0/docs/crm-migration/plans/customer-pool/05-special.md
T
2026-06-01 08:21:21 +08:00

4.3 KiB
Raw Blame History

公海池模块迁移方案 — 05 特殊场景


定时任务

任务 1:保护期到期检查

项目 内容
触发频率 每天凌晨 1 点
说明 检查保护期到期的客户,跟进次数未达标的自动退回公海
Java 源码 CrmCustomerPoolTask.checkProtectPeriodExpired

业务逻辑:

  1. 查询 protect_time <= 今天 且 status='normal' 且有负责人的客户
  2. 检查每个客户的 follow_count:
    • follow_count < 3 → 自动退回公海
      • 更新 crm_customer.status='pool', into_pool_time=now, into_pool_by=系统
      • 清空 owner_user_id
      • 写入 crm_customer_pool 记录(operation_type='recycle')
    • follow_count >= 3 → 达标,清除保护期(protect_time=NULL)
  3. 记录日志

Python 实现位置:backend/app/tasks/customer_pool.py → check_customer_protect_time


任务 2:保护期到期提醒

项目 内容
触发频率 每天凌晨 1 点(与任务 1 同步执行)
说明 提前 3 天提醒保护期即将到期的客户
Java 源码 CrmCustomerPoolTask.remindProtectExpiring

业务逻辑:

  1. 查询 protect_time 在 3 天内的客户
  2. 如果 follow_count < 3,发送提醒(当前仅 log,后续接入消息系统)

Python 实现位置:backend/app/tasks/customer_pool.py → remind_customer_recycle


任务 3:自动回收规则执行

项目 内容
触发频率 每天凌晨 2 点
说明 根据公海池规则自动回收超时客户
Java 源码 CrmCustomerPoolRuleServiceImpl.executePoolRules

业务逻辑:

  1. 查询所有 status='enable' 的 crm_customer_pool_rule
  2. 对每条规则:
    • rule_type='no_follow':查找 last_time < (now - timeout_days) 或 last_time IS NULL 的正常客户
    • rule_type='no_deal':查找 claim_time < (now - timeout_days) 且 deal_status='not_deal' 的正常客户
  3. 将匹配客户放入公海:
    • 更新 crm_customer.status='pool'
    • 记录原负责人信息
    • 写入操作记录(operation_type='recycle')
  4. 排除已成交客户(deal_status='dealed')

Python 实现位置:backend/app/tasks/customer_pool.py → execute_pool_rules


状态机 / 业务流程

流程 1:客户 ↔ 公海池流转

normal(正常) → (手动放入/规则回收) → pool(公海) → (领取/分配) → normal(正常) → ...
转换 触发条件 伴随操作
normal→pool 手动放入 写入操作记录(into),更新 into_pool_time/by/reason,清空 owner
normal→pool 规则自动回收 写入操作记录(recycle),更新 into_pool_time,清空 owner
normal→pool 保护期到期回收 写入操作记录(recycle),更新 into_pool_time,清空 owner
pool→normal 领取 写入操作记录(claim),设置 owner=当前用户,设置 claim_time
pool→normal 管理员分配 写入操作记录(assign),设置 owner=目标用户,设置 assign_time/by

流程 2:保护期机制

领取/分配 → 设置保护期(protect_days天) → 到期检查 → 跟进≥3次 → 清除保护期
                                                        → 跟进<3次 → 退回公海
步骤 触发条件 伴随操作
设置保护期 领取/分配时,如果规则有 protect_days protect_time = now + protect_days
保护期到期 定时任务检查 protect_time <= today 跟进达标→清除;未达标→退回公海
提前提醒 protect_time 在 3 天内 记录提醒日志

校验规则

规则管理校验

场景 校验规则
新增规则 poolName 必填;ruleType 必填(no_follow/no_deal);timeoutDays ≥ 1;protectDays ≥ 0
删除规则 status='enable' 的规则禁止删除,须先禁用
执行规则 只执行 status='enable' 的规则;排除 deal_status='dealed' 的客户

操作校验

场景 校验规则
领取 客户 status 必须为 pool
分配 客户 status 必须为 pool;ownerUserId 对应有效用户
放入公海 客户 status 必须为 normal;reason 必填