Commit f3277ba4 by luoqi

fix(types)+docs: referral_champion 时间语义 snapshot→lifetime + 补判别准则

- referral_champion 读 DW recommend_num/amount 全史累计计数器(单调只增)→ lifetime
  (纯声明字段修正,不影响计算逻辑);提取器头注释同步。
- acquisition_channel 注明"实为 static(不变历史定格),退化场景归 snapshot"。
- 速览文档补 snapshot vs lifetime 判别准则:分界看值的演化方向(lifetime 只增不减 /
  snapshot 可逆可变),非评估时点;并注明 entitlement_status 是"曾有"非"现有"。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
parent 42a5b7ab
......@@ -7,7 +7,7 @@ import type {
} from './feature.interface';
/**
* referral_champion 转介绍达人(B.1.2)— 规则层,snapshot · v1
* referral_champion 转介绍达人(B.1.2)— 规则层,lifetime(DW 累计计数器,单调只增)· v1
*
* 口径(图):识别有推荐能力且带来实质转化的客户。家庭型(带家人)/ 社交型(推外人)。
* 有效转化:被推荐人结算排非治疗项后流水 > 200元(瑞尔)/100元(瑞泰)。
......
......@@ -22,14 +22,14 @@
## 16 个标签(全部规则路径,无 LLM)
| key | 中文 | 数据源 | 时间语义 | data 结构要点 |
|---|---|---|---|---|
| rfm | 价值分群 | payment/recharge/refund/encounter | mixed(R=snapshot,F/M=lifetime) | 八象限 segment;M 用**租户级分位数**(缓存 30min) |
| --------------------- | ----- | --------------------------------- | -------------------------------------- | -------------------------------------------------- |
| rfm | 价值分群 | payment/recharge/refund/encounter | mixed(R=snapshot,F/M=lifetime) | M 用**租户级分位数**(缓存 30min) |
| lifecycle_stage | 生命周期 | 末诊时间 + 就诊频次 | mixed(末诊 window + 近1年消费 vs 历史年均 trend) | stage 7 档 + daysFromLastVisit |
| age_bracket | 年龄段 | birthDate | snapshot | 9 档(婴幼儿~老年) |
| gender | 性别 | patient.gender | snapshot | — |
| acquisition_channel | 获客渠道 | profile(取值随宿主) | snapshot(初诊来源,一经判定不改) | channel/sub |
| acquisition_channel | 获客渠道 | profile(取值随宿主) | snapshot(实为 static:不变历史定格) | channel/sub |
| family_structure | 家庭构成 | 亲属关系 | snapshot | 单身/两口/多口/多代 |
| referral_champion | 转介绍达人 | referralCount/Amount | snapshot | family / social |
| referral_champion | 转介绍达人 | referralCount/Amount | lifetime(累计计数器只增) | family / social |
| entitlement_status | 权益身份 | 结算卡券名 | lifetime | labels[](保险/私行/储值/儿牙/医保) |
| treatment_history | 治疗史 | treatment_record.category | lifetime | labels[](种植/正畸/修复/牙周) |
| potential_treatment | 潜在治疗 | diagnosis/recommendation gap | snapshot(常态 gap,随新诊断/治疗重算) | **复用召回 clinical-gap 选择器,但去掉时间冷静门**(画像=常态属性,召回才讲时机) |
......@@ -45,7 +45,12 @@
## 时间语义模型
画像 = 对全历史的**压缩当前态**;每标签在注册表(`persona-feature-specs.ts`)声明 `timeSemantics`,逐标签取值见上表:
画像 = 对全历史的**压缩当前态**;每标签在注册表(`persona-feature-specs.ts`)声明 `timeSemantics`,逐标签取值见上表。
**snapshot vs lifetime 判别准则**(都在重算时刻评估,这点不是分界;分界看**值的演化方向**):
- `lifetime` = 单调累计,**只增不减**(做过种植→治疗史永远有;拿过 9 折→锚点永远 ≤9 折);
- `snapshot` = 可逆的当前态,**可增可减**(gap 治了就消失、禁忌到龄解除、家庭构成会变)。
- 注意 `entitlement_status` 是 lifetime → 语义是"**曾有**"非"现有"(保险过期标签仍在),对外口径要说清。
| 取值 | 含义 | 例 |
|---|---|---|
......
......@@ -109,7 +109,7 @@ export const PERSONA_FEATURE_SPECS: Record<string, PersonaFeatureSpec> = {
key: 'acquisition_channel',
nameZh: '获客渠道',
tier: 'rule',
timeSemantics: 'snapshot', // 初诊来源一经判定不改
timeSemantics: 'snapshot', // 实为 static(不变的历史定格):初诊来源一经判定不改,既不可逆也不累计;退化场景归 snapshot
labelValues: ['走入', '口碑客户', '集团销售渠道', '集团营销渠道', '地区营销渠道', '电商平台', '自媒体网络', '内部员工', '其他'],
dataSource: 'DW fact_client_out.primary_category/sub_category(L2 数仓初诊来源)→ 摄入 PAC 副表 patient_profiles.acquisition_channel/sub(立柱标准枚举)',
dataFields: ['primary_category', 'sub_category'],
......@@ -143,7 +143,7 @@ export const PERSONA_FEATURE_SPECS: Record<string, PersonaFeatureSpec> = {
key: 'referral_champion',
nameZh: '转介绍达人',
tier: 'rule',
timeSemantics: 'snapshot',
timeSemantics: 'lifetime', // recommend_num/amount 是全史累计计数器(单调只增),非可逆当前态
labelValues: ['家庭型', '社交型'],
dataSource: 'DW fact_client_out.recommend_num/recommend_amount(DW 预聚合推荐人数+转化额)+ PatientRelation;未来宿主 CDP social_relations + settlement_records 逐人核',
dataFields: ['recommend_num', 'recommend_amount', 'social_relations'],
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment