# 10 — 客户规则族「超期未跟进提醒」(crm-rule 全局单例) Type: research Status: open Blocked by: ## 问题 在 `crm-rule` 落客户规则族第三个 tab(线索/商机/客户并列),本图**只做「超期未跟进提醒」**一项,**全局单例配置**(不套 V-CONFIG 版本化,chart D4)。「客户查重设置」不做(chart D6)。 ## 一手证据(蓝湖缓存 txt) - `a7-3-3-1_客户管理设置_超期未跟进提醒_.txt` — 全部 spec 都在这里 - `a7-3-3-2_客户管理设置_客户查重设置_.txt` — **划出不读**(查重规则写死在新增流程,票 04) ## 已知事实(原型明文) - **全局单例**:非按阶段/按部门分别配,仅后台管理面板可见。 - **顶部总开关**:控制整个超期未跟进提醒功能启用/禁用。 - **两配置项**: - **首次触发时间**:客户超过 N 天未跟进→触发首次提醒(默认 30 天);含独立启用开关。 - **二次提醒间隔时间**:首次后每隔 M 天再提醒(默认 7 天);含独立启用开关。 - **提醒推送渠道**:钉钉推送 + 应用内通知(对称商机票 05 的通知落点)。 - **交互**:保存/取消(取消恢复上次保存的配置)。 ## 待拍板点 1. **数据模型**: - **推荐 A(单行配置表)** `customer_reminder_rule`(id=1 fixed / master_enabled / first_trigger_enabled / first_trigger_days / second_interval_enabled / second_interval_days / updater / update_time)。 - **推荐 B(键值配置)** 复用某个 platform_config 表按 key 存。 - 我倾向 **A**(单行表,与商机 V-CONFIG 表族对称位置摆,只是不做版本,操作更直观)。 2. **触发口径**:「超过 N 天未跟进」=`now - last_valid_follow_time ≥ N`;`last_valid_follow_time` = 客户下最新一条 `customer_follow.create_time`(或字段编辑时间?→ 推荐**仅跟进记录**驱动,字段编辑不算——对齐商机票 05 的 last_valid_follow_time 但商机含字段编辑;这里更保守)。 3. **计时锚点写入**:`customer.last_valid_follow_time` 冗余到主表(新写跟进时刷新);对称商机主表 `last_valid_follow_time`。→ **回填票 02** 加此字段。 4. **调度**:定时任务(Quartz / Spring Schedule)每天跑一次;命中的客户写「待发通知」表让通知模块消费(对称商机票 05 的 remind 待发通知)。 5. **通知去重**:一个客户当天只触发一次(首次或二次,取其一)。 6. **无 owner 的客户**(在公海)**不参与**超期提醒(对谁提醒?→ 无接收人)。 7. **禁用后**:定时任务扫到总开关=禁用 → 跳过整轮;启用后从下一轮开始。 8. **规则生效时机**:chart Q4-补 用户特意强调「规则在客户新增时生效」——我的解读是**新增客户时就把 `last_valid_follow_time` 初始化为 create_time**(客户创建后开始计时,30 天没跟进就首次提醒)。**待和用户确认**这个解读——见 grill 挂号。 ## Answer _(待 resolve)_