PRD:保留 NCI / WBI,删除亲密指数,新增 RS / OS / MS / ML 指数体系 生效目标:用**客户级(NCI/WBI)负责“触达优先级”,用关系级(RS/OS/MS/ML)**负责“归属与执行”,替代原 INTIMACY 的混合口径,提升可解释性与可运营性。 统计与映射方法沿用现有“时间衰减 + 分位截断 + 0–10 映射 + 可选 EWMA 平滑”的工程框架(减少改造风险)。 1. 背景与问题 1.1 背景 当前体系已有两类客户级指数: NCI(新客转化指数):用于新客欢迎与转化排序 WBI(老客挽回指数):用于老客召回排序 同时存在一个关系级的 亲密指数(INTIMACY),但它把“关系强度、归属、升温、付费关联”混在一个分数里,导致: 一个分数承担多个运营目的,解释困难,策略难稳定 动量(burst)乘法放大会掩盖“真实关系强度” 充值归因可靠性要求高,一旦归因口径瑕疵会放大偏差 1.2 目标 保留 NCI / WBI 不变(持续作为客户级“触达优先级”) 删除 INTIMACY(停止计算/停止被消费) 新增四个关系级指数:RS / OS / MS / ML RS:关系强度(熟不熟) OS:归属份额(主要归谁) MS:动量升温(最近是否回暖/升温) ML:付费关联(推增值/储值由谁推更可能成) 2. 术语与设计依据(对齐工程约定) 2.1 时间衰减(半衰期) 统一采用半衰期形式的指数衰减,保证“越近越重要”的可解释性。 2.2 0–10 映射(展示分) 统一采用: P5/P95 分位截断(Winsorize)降低极端值影响 可选压缩(log1p/asinh) MinMax 映射到 0–10 可选 EWMA 平滑减少跨批次抖动 2.3 价值/触达优先级方法论(NCI/WBI 保留原因) RFM(Recency/Frequency/Monetary)作为客户分层与运营触达优先级的主流方法,与你的 WBI/NCI 结构一致(尤其是 recency + frequency + monetary 信号)。 其中 NCI/WBI 继续承担“客户级排序”,关系级指数负责“落人/归属/推荐成功率”。 3. 用户与核心运营场景 3.1 角色 店长/运营:配置策略、看板、复盘 助教主管:分派任务、监控撞单/共管 助教:执行跟进、召回、增值推荐 3.2 场景总览(决策逻辑分层) 客户级:要不要触达、先触达谁 → NCI / WBI 关系级:由谁触达、怎么触达 → OS(定责)+ RS/MS/ML(定策略) 4. 新指标定义(删除 INTIMACY,新增 RS/OS/MS/ML) 粒度说明:RS/OS/MS/ML 均为 (site_id, member_id, assistant_id) 关系对粒度。 数据基础与会话合并逻辑沿用原 INTIMACY 的服务日志抽取与 session merge(减少工程变动)。 NCI/WBI 完全保留原逻辑与输出。 4.1 RS:关系强度(Relationship Strength) 用途:判断“这位助教与该客户是否真的熟、关系是否牢”。 核心输入: 合并会话后的:次数、时长、课型权重(基础/附加) 距今天数(会话结束时间) 最近一次服务距今天数 计算(建议口径): 会话权重:τ_i = 1.0(基础) 或 incentive_weight(附加) 会话衰减:decay(d; h) = exp(-ln(2)*d/h) 频次项:F = Σ ( τ_i * decay(d_i; h_session) ) 时长项:D = Σ ( sqrt(dur_hours_i) * τ_i * decay(d_i; h_session) ) 最近门控:R = decay(days_since_last; h_last) RS_raw: base = w_F*F + w_D*D gate = R^(gate_alpha) RS_raw = base * gate 输出: RS_raw RS_display(0–10,沿用通用映射与可选 EWMA) 4.2 OS:归属份额(Ownership Share) 用途:解决“客户到底归谁主跟,避免多人撞单”。 核心输入:同一客户在所有助教上的 RS_raw。 计算: 对每个 member_id:OS = RS_raw_i / (Σ RS_raw_all_assistants + eps) 加入噪声门槛: 若 RS_raw_i < min_rs_raw_for_ownership,则 OS 视为 0(不参与归属) 若 Σ RS_raw_all_assistants < min_total_rs_raw,则该客户视为“未形成稳定归属” 输出: OS_share(0–1,推荐 UI 显示百分比) OS_label(主责/共管/公海): 主责:OS_share >= ownership_main_threshold 共管:ownership_comanage_threshold <= OS_share < ownership_main_threshold 公海:OS_share < ownership_comanage_threshold OS 不建议做分位映射(它是份额值,天然可解释)。如必须 0–10,只做 OS_share*10 的线性映射。 4.3 MS:动量升温(Momentum) 用途:判断“最近是否升温/回流”,用于跟进紧急程度(而不是关系强度)。 核心输入:短期与长期的加权频次(含衰减与课型权重)。 计算: F_short = Σ( τ_i * decay(d_i; h_short) ) F_long = Σ( τ_i * decay(d_i; h_long) ) ratio = (F_short + eps) / (F_long + eps) MS_raw(只保留升温部分): MS_raw = max(0, ln(ratio)) 输出: MS_raw MS_display(0–10,通用映射与可选 EWMA) 4.4 ML:付费关联(Monetization Link) 用途:判断“推储值/增值由谁推更可能成”,用于选择执行人/协同人。 核心输入:服务后短窗口内的充值归因、金额、时间衰减。 关键前提(必须做的口径修复): 单笔充值只归因一个助教:采用“last-touch”原则 对每笔充值:在归因窗口内,找 session_end <= pay_time 且最接近 pay_time 的那条会话对应的助教归因 计算: 对每笔归因充值 r: 金额压缩:ln(1 + amt / amount_base) 时间衰减:decay(days_ago_r; h_recharge) ML_raw = Σ( ln(1 + amt/amount_base) * decay(days_ago_r; h_recharge) ) 输出: ML_raw ML_display(0–10,通用映射与可选 EWMA) 5. 数据依赖与产出表 5.1 输入数据(沿用原 INTIMACY 的服务/充值口径) 服务日志:billiards_dwd.dwd_assistant_service_log + billiards_dwd.dim_assistant 充值订单:billiards_dwd.dwd_recharge_order(settle_type=5) 课型映射:cfg_skill_type(决定 BONUS/BASE 权重) 5.2 输出表(新增) 建议新增统一关系表(替代原 dws_member_assistant_intimacy): 表名:billiards_dws.dws_member_assistant_relation_index 主键:(site_id, member_id, assistant_id) 核心字段: 基础特征(用于解释与排查): session_count, total_duration_minutes, basic_session_count, incentive_session_count, days_since_last_session attributed_recharge_count, attributed_recharge_amount 指数: rs_raw, rs_display os_share, os_label, os_rank ms_raw, ms_display ml_raw, ml_display 时间:calc_time, created_at, updated_at NCI/WBI 输出表保持不变。 5.3 删除/下线(原 INTIMACY) 停止写入:billiards_dws.dws_member_assistant_intimacy 兼容期保留表但不再更新,前端与运营入口不再读取 6. cfg_index_parameters 配置体系更新(你要求的“更新”核心) 6.1 现有配置表结构(保持不变) cfg_index_parameters 继续使用现有字段: (param_id, index_type, param_name, param_value, description, effective_from, effective_to, created_at, updated_at) 6.2 index_type 更新范围 保留:NCI, WBI(不改参数,不改逻辑) 删除:INTIMACY(通过 effective_to 失效,不再读取) 新增:RS, OS, MS, ML 其它 index_type(如 RECALL)本 PRD 不涉及,保持现状。 7. 新增参数清单(默认值建议) 说明:参数名尽量沿用现有风格(snake_case),并把“展示映射参数”复用到 RS/MS/ML 三个需要 0–10 映射的指数上。Winsorize 与 EWMA 的合理性见设计依据。 7.1 RS 参数(index_type = RS) param_name 默认值 说明 lookback_days 60 回看窗口(天) session_merge_hours 4 会话合并间隔(小时) incentive_weight 1.5 附加课权重 halflife_session 14 会话衰减半衰期(天) halflife_last 10 最近服务衰减半衰期(天) weight_F 1.0 频次项权重 weight_D 0.7 时长项权重 gate_alpha 0.6 最近门控幂次(越大越强调“必须最近”) percentile_lower 5 映射下分位 percentile_upper 95 映射上分位 compression_mode 1 0=none,1=log1p,2=asinh use_smoothing 1 是否启用 EWMA 平滑 ewma_alpha 0.2 EWMA α 7.2 OS 参数(index_type = OS) param_name 默认值 说明 min_rs_raw_for_ownership 0.05 归属噪声门槛(低于此 RS_raw 不参与 OS) min_total_rs_raw 0.10 客户总体关系强度过低则视为“未形成归属” ownership_main_threshold 0.60 OS 主责阈值 ownership_comanage_threshold 0.35 OS 共管阈值 eps 1e-6 分母保护 7.3 MS 参数(index_type = MS) param_name 默认值 说明 lookback_days 60 回看窗口(天) session_merge_hours 4 会话合并间隔(小时) incentive_weight 1.5 附加课权重 halflife_short 7 短期半衰期(天) halflife_long 30 长期半衰期(天) eps 1e-6 比值保护 percentile_lower 5 映射下分位 percentile_upper 95 映射上分位 compression_mode 1 0=none,1=log1p,2=asinh use_smoothing 1 是否启用 EWMA 平滑 ewma_alpha 0.2 EWMA α 7.4 ML 参数(index_type = ML) param_name 默认值 说明 lookback_days 60 回看窗口(天) recharge_attribute_hours 1 充值归因窗口(小时) attribution_mode 1 1=last_touch(单笔充值只归因一个助教) amount_base 500 金额压缩基数 halflife_recharge 21 充值衰减半衰期(天) percentile_lower 5 映射下分位 percentile_upper 95 映射上分位 compression_mode 1 0=none,1=log1p,2=asinh use_smoothing 1 是否启用 EWMA 平滑 ewma_alpha 0.2 EWMA α 8. 配置迁移策略(cfg_index_parameters 具体更新方式) 8.1 INTIMACY 下线 将 index_type = 'INTIMACY' 的现行有效参数统一设置 effective_to = 下线日(建议为新版本生效日前一天) 代码层:不再加载/执行 INTIMACY 任务 8.2 新增 RS/OS/MS/ML 参数 插入上述四个 index_type 的参数行,设置 effective_from = 新版本生效日 param_id 由数据库自增生成(不在 PRD 固定) 8.3 生效日期建议 当前日期为 2026-02-08(台北时区),建议: 新增四类参数 effective_from = 2026-02-09 INTIMACY effective_to = 2026-02-08 9. 任务与工程改造范围 9.1 ETL 任务 保留:NCI/WBI 原任务 新增:RelationIndexTask(或拆为 RS/MS/ML/OS 四个任务,但建议一个任务产出一张关系表) 删除/停用:原 IntimacyIndexTask 9.2 关键工程点(必须实现) 复用 session merge(降低风险) 充值归因改为 last_touch 单归因(ML 可靠性的硬前提) RS/MS/ML 的 display 映射复用 BaseIndexTask(一致性与可调参性) OS 份额化与标签化(防撞单的唯一有效方式) 10. 运营使用方式(落地规则) 10.1 任务队列(建议固定四条队列) 新客欢迎:按 NCI_welcome 排序 新客转化:按 NCI_convert 排序 老客召回:按 WBI 排序 活跃升温承接:按 MS 排序 10.2 “落人”规则(所有队列通用) 有明确归属:按 OS_label=主责 的助教派单 共管:只派给主责助教,协同人由 ML 或 RS 次高者确定 公海:派给当班/新客官/运营池 10.3 增值推荐(谁推更可能成) 选客户:以 NCI/WBI 中的价值/充值未回访信号做筛选 选执行人:以 ML 高者为主,OS 作为责任边界,RS 决定话术深度 11. 验收标准(可测试、可回归) 11.1 数据正确性 OS:同一 member_id 下所有 assistant_id 的 OS_share(参与归属者)求和≈1 RS:新增会话、会话更近、时长更长 → RS_raw 单调上升(统计抽样验证) MS:短期频次明显高于长期 → MS_raw>0;否则 MS_raw=0 ML:充值发生在归因窗口内且越近越大 → ML_raw 越高;且单笔充值只归因一个助教 11.2 运营可用性 至少能稳定支持: 客户分配(OS) 跟进紧急程度(MS) 召回优先级(WBI) 新客欢迎/转化(NCI) 推增值选人(ML) 12. 风险与对策 OS 噪声归属:低互动关系也被算份额 → 用 min_rs_raw_for_ownership 与 min_total_rs_raw 双门槛 ML 偏差:归因口径不稳定导致误导选人 → 强制 last_touch 单归因;窗口可调;上线初期做抽样对账 display 分数跨批次漂移(相对分固有属性) → 开启 EWMA 平滑降低短期抖动 13. 上线与灰度建议 第 1 阶段(影子跑数):RS/OS/MS/ML 与 INTIMACY 并行计算但不对外展示(1–2 周) 第 2 阶段(切读):前端/运营策略只读 RS/OS/MS/ML;INTIMACY 停止消费 第 3 阶段(下线):停更 INTIMACY 表,保留历史查询周期后再清理 14. 交付物清单 新增关系表:dws_member_assistant_relation_index 新增指数任务:RelationIndexTask(含 RS/OS/MS/ML) cfg_index_parameters: INTIMACY 参数失效(effective_to) 新增 RS/OS/MS/ML 参数(effective_from) 运营端: 队列:新客欢迎/新客转化/老客召回/升温承接 客户详情:展示 NCI、WBI、以及每位助教的 RS/OS/MS/ML 15. 实施定稿补充(2026-02-08) 1. ML 数据源定稿为“人工台账唯一真源”: - `dws_ml_manual_order_alloc` 为 ML 主口径输入; - 无台账时 `ML_raw=0`; - `dwd_recharge_order` 的 last-touch 仅保留备用代码路径(默认关闭,`ML.source_mode=0`)。 2. 台账规则定稿: - 一单可归多个助教,默认均分; - `external_id` 作为订单ID,必填; - 同一 `(site_id, external_id, assistant_id)` 重复导入时覆盖; - 覆盖边界: - 30天内:按 `site_id + biz_date` 日覆盖; - 超过30天:按固定纪元 `2026-01-01` 的 30 天桶覆盖。 3. 关系指数任务形态: - 单任务 `RelationIndexTask` 一次产出 RS/OS/MS/ML; - 输出表:`dws_member_assistant_relation_index`; - `RS/MS/ML` 分位映射与 EWMA 历史按 `index_type` 隔离。 4. 参数补充: - `index_type=OS` 新增 `ownership_gap_threshold`(默认 0.15); - `index_type=ML` 新增 `source_mode`(默认 0,manual_only)。 5. 上线策略修订: - 当前未正式上线,直接切换读新表; - 影子期不再作为强制步骤。