Files
Neo-ZQYY/apps/etl/connectors/feiqiu/docs/requirements/关系指数PRD.txt

474 lines
14 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
PRD保留 NCI / WBI删除亲密指数新增 RS / OS / MS / ML 指数体系
生效目标:用**客户级NCI/WBI负责“触达优先级”用关系级RS/OS/MS/ML**负责“归属与执行”,替代原 INTIMACY 的混合口径,提升可解释性与可运营性。
统计与映射方法沿用现有“时间衰减 + 分位截断 + 010 映射 + 可选 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 010 映射(展示分)
统一采用:
P5/P95 分位截断Winsorize降低极端值影响
可选压缩log1p/asinh
MinMax 映射到 010
可选 EWMA 平滑减少跨批次抖动
2.3 价值/触达优先级方法论NCI/WBI 保留原因)
RFMRecency/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_display010沿用通用映射与可选 EWMA
4.2 OS归属份额Ownership Share
用途:解决“客户到底归谁主跟,避免多人撞单”。
核心输入:同一客户在所有助教上的 RS_raw。
计算:
对每个 member_idOS = 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_share01推荐 UI 显示百分比)
OS_label主责/共管/公海):
主责OS_share >= ownership_main_threshold
共管ownership_comanage_threshold <= OS_share < ownership_main_threshold
公海OS_share < ownership_comanage_threshold
OS 不建议做分位映射(它是份额值,天然可解释)。如必须 010只做 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_display010通用映射与可选 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_display010通用映射与可选 EWMA
5. 数据依赖与产出表
5.1 输入数据(沿用原 INTIMACY 的服务/充值口径)
服务日志billiards_dwd.dwd_assistant_service_log + billiards_dwd.dim_assistant
充值订单billiards_dwd.dwd_recharge_ordersettle_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 三个需要 010 映射的指数上。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 并行计算但不对外展示12 周)
第 2 阶段(切读):前端/运营策略只读 RS/OS/MS/MLINTIMACY 停止消费
第 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`(默认 0manual_only
5. 上线策略修订:
- 当前未正式上线,直接切换读新表;
- 影子期不再作为强制步骤。
16. 实施更新2026-02-13
1. ML 数据源最终定稿:
- 彻底移除 last-touch 备用路径代码(`_apply_last_touch_ml` 方法已删除);
- 移除 `source_mode` 和 `recharge_attribute_hours` 参数(代码默认值与数据库种子均已清理);
- ML 仅使用人工台账 `dws_ml_manual_order_alloc`,无备用路径。
2. 旧版指数清理:
- `RecallIndexTask` 已删除(由 WBI+NCI 替代);
- `IntimacyIndexTask` 已删除(由 RelationIndexTask 替代);
- 对应数据库表 `dws_member_recall_index` / `dws_member_assistant_intimacy` 通过迁移脚本 DROP
- `cfg_index_parameters` 中 RECALL / INTIMACY 参数已清理。
3. WBI 修复:
- `STOP_HIGH_BALANCE` 会员现在参与评分(之前只记录不评分)。
4. 迁移脚本:`database/migrations/20260213_remove_legacy_index.sql`