3.9 KiB
线索规则(crm-rule)
线索公海池的配置域:公海池实体(归属部门 + 省/市/区)、人员(负责人 / 协作人 / 成员)、领取规则、超时回收 / 失效 / 领取上限配置。依赖方向单向 crm-rule → (crm-auth / crm-dict),不得反向依赖 crm-lead——公海池不知道线索存在。公海池表复用 lead 数据范围模块(决策 [K])。
Language
公海池:
线索的归集容器与规则载体,crm-rule 的核心聚合根,存于 lead_pool。定义一个部门下线索的领取规则(回收天数 / 失效天数 / 持有上限 / 每日领取上限)与人员编制。一部门一池,UNIQUE(dept_id);池名全局 UNIQUE。
Avoid: 线索池、公海、资源池、pool(英文单说)
归属部门:
公海池所属的部门节点,dept_id,是「一部门一池」的唯一键。同时冗余 team_dept_id(团队 = 部门树上级节点)。归属部门决定池及池内线索的数据范围天花板。
Avoid: 所属部门、部门、团队部门
负责市场:
公海池覆盖的行政区划,多值——省份多值表 + 市/区多值表两张关联表。存国标 code(varchar(12),支持前缀 LIKE 祖先查询,对齐 sys_region)。同一部门的多个市场取并集在同一个池里(一部门一池),不拆多池。
Avoid: 覆盖区域、地区、辖区
负责人:
公海池的主管理人,池-人绑定表中 role=OWNER。被设为负责人会落一条池维度的行级授权(resource_type=pool),使其能越过部门天花板看到池内线索。负责人身份不授予池配置写权(决策 [E])——改池配置走功能权限 × 数据范围。
Avoid: 池主、管理员、owner(owner 在 crm-lead 是领取人)
协作人:
公海池的协助管理人,池-人绑定表中 role=COLLAB。与负责人一样落池维度行级授权(只读,越过部门天花板看池内线索)。移出协作人名单那一刻即失效,授权行硬删(决策 [PRD-3])。
Avoid: 协助人、副负责人、collaborator
成员: 有资格领取该池线索的销售集合。动态推导、不落表——成员 = 归属部门的部门子树内全部用户,按组织架构实时算。不是池-人绑定表里的行(绑定表只存 OWNER / COLLAB)。 Avoid: 池成员表、领取人白名单、参与者
回收天数:
池配置字段 recycle_days,喂给线索的回收计时 N。DB DEFAULT = 7。
Avoid: 超时天数、N、recycle
失效天数:
池配置字段 expire_days,喂给线索的失效计时 M。DB DEFAULT = 180。
Avoid: 有效期、M、expire
持有上限:
池配置字段 hold_limit,单个销售在本池最多同时持有的线索数。只算「已领取 + 跟进中」,不含已转商机 / 过期失效 / 作废。DB DEFAULT = 200。
Avoid: 最大持有、上限、hold
每日领取上限:
池配置字段 daily_claim_limit,单个销售每个自然日(DATE(op_time) = CURRENT_DATE)在本池最多领取的线索数。DB DEFAULT = 10。
Avoid: 日领取限、领取限额、daily limit
池删除保护: 公海池软删;但池下有非终态线索时禁止删除(非终态 = 未分发 / 待领取 / 已领取 / 跟进中)。防止孤儿线索。 Avoid: 级联删除、强制删除
池占用查询端口:
公海池删除守卫的跨模块出站契约 PoolLeadOccupationPort(crm-rule 定义,crm-lead 实现,ADR-0025)。方法 hasActiveLeads(poolId) 返回 boolean——true=池下有非终态线索(禁止删除)。与 OpportunityCreationPort(crm-lead 定义等商机实现)方向相反的同型 outbound port;crm-rule 通过 ObjectProvider 可选注入,port 未实现时 fail-safe 拒删。
Avoid: 占用检查服务、lead 查询接口(要点是「crm-rule 声明契约、crm-lead 实现、依赖倒置不破坏方向」)