Commit 5a268d52 by luoqi

docs(algorithm): pac-algorithms-overview 对齐 v3 优先级模型 + 16 标签

- §三 优先级:6 因子加权启发式 → v3.0 三维(急迫×.4+价值×.3+意愿×.3)× 新鲜度 × 置信度;
  意愿=RFM依从+主诉行为+信任基础;真实例子换 94 分;加 uplift 局限说明。
- §二 画像:加现状指针(16 标签 v3.0;价值/风险并入 RFM、治疗链降级详情页、免打扰并入特别关注 → persona-design-v2)。
- §六 端到端 + FAQ:6 因素/91分 → 三维 × 因子。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
parent dc813254
......@@ -163,7 +163,9 @@ PAC 的算法连成一条流水线,客服拿到的是排好序、带背景、带
筛出候选后,光知道"该召回"还不够,客服打电话前想知道:这人值不值得花时间?会不会已经不想来了?能不能打?
画像算法给每个患者打 **4 个标签**:
> 📌 **现状(W7)**:画像已扩展为 **16 个标签**(对齐业务《画像字典 v3.0》:年龄/性别/获客/家庭/RFM/生命周期/权益/转介/潜在治疗/急迫等级/治疗史/时间偏好/折扣锚点/特别关注/治疗敏感/禁忌)。下面 4 个是早期起步标签的**通俗示例**(价值/风险已并入 RFM,治疗链降级为详情页 episode 视图,免打扰并入特别关注)。完整清单见 [`persona-design-v2.md`](./persona-design-v2.md)。
早期 4 个起步标签(通俗示例):
### 标签 1 · 患者价值
**这个患者对诊所贡献多大?** 按累计净消费分 5 档。
......@@ -221,49 +223,51 @@ PAC 的算法连成一条流水线,客服拿到的是排好序、带背景、带
客服一天能打的电话有限。同样是"该召回",500 个候选里先打谁?优先级算法给每个人打一个 **0–100 的分数**,分越高越优先。
### 分数怎么来(6 个因素)
把它想成给每个召回机会打分,像考试加权。**6 个因素 + 它们怎么影响分数的方向**(具体权重值可配,见下注):
### 分数怎么来(三维 × 两因子,业务《画像字典 v3.0》模型)
| 因素 | 通俗解释 | 方向 | 默认值(可配,作基线对照) |
|---|---|---|---|
| **① 临床基线** | 这种病本身多重要 | 越值钱/越严重 → 起步越高(乘法主项)| 病种 base,见上表(K08=60…K00=25)|
| **② 时间窗因子** | 现在是不是召回最佳时机 | 黄金窗内最高;过早/过晚都打折(乘) | 窗内 ×1.0;过早 0.6→1.0 线性;过晚 1.0→0.4(到 2× 窗末) |
| **③ 患者价值加分** | 高价值患者加分 | 价值档越高 → 加越多(加) | 钻 +20 / 金 +15 / 银 +10 / 普通 +5 / 新客 0 |
| **④ 转化可能加分** | 接电话后真来的可能性 | 越可能转化 → 加越多(加) | `(3−风险档)×2`(0–6)+ 近期回访成功 +4,封顶 +10 |
| **⑤ 临床紧迫加分** | 再拖会出大问题 | 超该病种紧迫临界 → 固定加(加) | 超临界(见上表)→ +5 |
| **⑥ 信号可信因子** | 召回理由多靠谱 | 越可信 → 折扣越接近 1(乘) | 最低 confidence ≥0.9 →×1.0;≥0.7 →×0.9;否则 ×0.75 |
把它想成三个独立问题各打 0-10 分,加权合成,再乘两个"打折"因子:
**算法结构**(形状固定,上面"默认值"列可配):
```
raw = (临床基线 × 时间窗因子 + 价值加分 + 转化加分 + 紧迫加分) × 信号可信因子
score = clamp(round(raw), 0, 100) ← 取整 + 夹到 0~100,保证不越界
综合(0-10) = 急迫性×0.4 + 价值性×0.3 + 意愿度×0.3
最终分(0-100) = 综合 × 新鲜度 × 置信度 × 10
```
- 4 个加分项在括号里**相加**,然后整体乘 ②时间窗 和 ⑥可信度两个**0~1 折扣因子**
- 所以"再急再值钱,信号不可信(⑥低)也会被打折",避免 AI 误抽的理由冲高分。
> 📐 **真理源**:这些默认值都在 `priority-scorer.ts` 的 `computeXxx()` 函数 + 病种字典,
> **按宿主/集团策略调改这一处即可**;上表列默认值仅作基线对照(算法形状稳定,数值可调)。
| 维度 | 通俗解释 | 怎么算(默认值可配) |
|---|---|---|
| **急迫性** ×0.4 | 这病多快要处理(纯客观,不看人)| 取急迫等级:紧急10 / 高7 / 中4 / 低1 / 无0(按末诊 + 复查超期)|
| **价值性** ×0.3 | 这单成交值多少钱(纯客观)| 治疗类型+牙数:种植 单颗8/多颗9/半口+10 · 正畸7 · 根管6 · 修复5-6 · 牙周5 · 拔3 · 补2 |
| **意愿度** ×0.3 | 客户接受这治疗的依从性 | = RFM依从×0.375 + 主诉行为×0.375 + 信任基础×0.25(见下)|
**意愿度三件套**:
- **RFM依从**:RFM 八象限分群(重要价值10 … 低活跃2)——"这人愿不愿来、愿不愿花钱"。
- **主诉行为**:咨询过该治疗(consultation 意向命中)→8;仅医生诊断、客户没表达 →2。
- **信任基础**:生命周期(成熟9/成长7/新4/…/流失0)+ 同类治疗史 +1 + 转介达人 +1 + 近1年到诊履约良好 +1(封顶10)。
### 真实例子:李梦维,91 分(**取自真实召回数据**,用默认权重,换配置则分值随之变)
**两个打折因子**(0~1,乘在最后):
- **新鲜度**:诊断太老降权(黄金窗内 1.0,过窗线性衰减到 2×窗=0.4)——很多年前的老诊断优先级压低(止损;入池不设硬上界,靠这个软衰减)。
- **置信度**:信号来源可信度——医生诊断 ×1.0;影像AI / 医生建议 ×0.9;更低 ×0.75。防影像AI 误判冲高分。
> 李梦维:46 号牙缺失,128 天前医生诊断,至今未启动种植;钻卡客户(累计 ¥98,220)。
> 下表数字逐项取自该患者 `plan_reasons.breakdown` JSONB(可核)。
> 📐 **真理源**:`priority-scorer.ts`(formula + 各映射表)。算法形状稳定,权重/映射可按集团策略调改一处。
| 因素 | 他的情况 | 贡献 | 对应公式 |
| ------ | --------------------------- | ---------- | ----------------------- |
| 临床基线 | 缺失牙 K08 | 60 | base |
| 时间窗 | 缺了 128 天 ∈ [30,180] 黄金窗 | ×1.0 | timeWindowFactor |
| 患者价值 | 钻石卡,累计 ¥98,220(≥¥3 万) | +20 | valueBonus |
| 转化可能 | 流失风险=none(距上次 72 天,活跃)→ (3−0)×2 | +6 | likelihoodBonus |
| 临床紧迫 | 128 > 紧迫临界 120(邻牙倾斜) | +5 | urgencyBonus |
| 信号可信度 | 医生明确诊断 confidence=1.0 | ×1.0 | confidenceFactor |
| **最终** | (60×1.0 + 20 + 6 + 5) × 1.0 | **= 91 分** | clamp(round(raw),0,100) |
### 真实例子:94 分(取自 `plan_reasons.breakdown`,可核)
> 某患者:缺失 4 颗牙(11;14;22;24,潜在种植多颗),咨询过种植,重要价值客户,成熟客,有种植史,近期活跃。
| 维度 | 他的情况 | 得分 |
|---|---|---|
| 急迫性 | 急迫等级=紧急 | 10 |
| 价值性 | 种植多颗(4 颗)| 9 |
| 意愿度 | RFM重要价值10×.375 + 主诉咨询过8×.375 + 信任(成熟9+种植史1)10×.25 | 9.0 |
| 新鲜度 | 在黄金窗内 | ×1.0 |
| 置信度 | 医生诊断 | ×1.0 |
| **最终** | (10×.4 + 9×.3 + 9×.3) × 1.0 × 1.0 × 10 | **= 94 分** |
### 为什么要"可解释"
每个分数都附带**完整的计算明细**(上面那张表),客服详情页能直接看到。
主管问"为什么他排第一",不是"算法说的",而是**6 个因素一条条摆出来**——这是 PAC 跟黑盒推荐系统的根本区别:**可解释 = 可信任**
每个分数附带**完整明细**(`breakdown`:急迫/价值/意愿三维 + 各子项 + 新鲜度/置信度),客服详情页直接看。
主管问"为什么他排第一",不是"算法说的",而是逐项摆出来——**可解释 = 可信任**,这是 PAC 跟黑盒推荐的根本区别。
> ⚠️ **已知局限(科学口径)**:意愿度 ≈ 倾向性(propensity),会偏好"本来就会来的人";要做对"该不该打电话"需测**增益(uplift)**——试点留随机对照组(打 vs 不打的差值),后续迭代。
> **本质**:优先级算法把"该召回的一堆人"排成"今天先打这几个"的有序清单,且每个排序理由透明。
......@@ -378,8 +382,8 @@ PAC 把话术拆成一块块**话术包**(技能 / skill),按患者特征**动
→ 客服打电话前就知道"高价值活跃客户 + 这颗牙治疗卡在最开头,值得好好聊"
③ 优先级算法
综合 6 因素算出 91 分 → 在今天的电话清单里排最前
→ 客服优先打给他,且看得到"为什么是 91 分"(逐项明细)
三维(急迫×.4 + 价值×.3 + 意愿×.3)× 新鲜度 × 置信度 → 高分排进今天电话清单最前
→ 客服优先打给他,且看得到"为什么这个分"(逐项明细)
⑤ AI 话术生成
客服点"生成话术" → 按"种植(K08) + 老客 + 成人"装配话术包 + 大模型生成
......@@ -397,7 +401,7 @@ PAC 把话术拆成一块块**话术包**(技能 / skill),按患者特征**动
A:不会。三道过滤网(合规红线 + 时间冷静期 + 已做就不打)层层把关;且只认医生写下的诊断,不自己编理由。
**Q:为什么有的患者分高有的分低?**
A:6 个因素综合算,每个患者的明细都能在详情页看到,完全透明。
A:三维(急迫/价值/意愿)加权 × 新鲜度 × 置信度算出,每个患者的明细(breakdown)都能在详情页看到,完全透明。
**Q:画像标签准吗?会不会 AI 算错?**
A:画像目前全是明确规则算的(不是 AI 猜),比如"消费多少算高价值"都是写死的,可解释可追溯。
......
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