Commit e077c6ce by luoqi

docs(persona): 补 potential_treatment(16 标签)+ gap 核心共享架构 + 召回种植年龄门 follow-up

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
parent 92f32b19
......@@ -40,12 +40,13 @@
- **extractor** 实现在 `features/*.feature.ts`,由 `FeatureRegistry` 收集,`PersonaService.recompute` 遍历。
- **重算**:`pnpm recompute-persona -- --host=jvs-dw --force`。⚠️ `--force` 必需 —— 算法/特征变更但数据没变时,水位幂等闸会全 noop;`--force` 跳过闸强制重算(部署也用)。
## 六、15 标签总览(本地 928 样本)
## 六、16 标签总览(本地 928 样本)
| 标签 | 类 | 标签值 | 数据源 | 时间语义 | 覆盖 |
|---|---|---|---|---|---|
| `rfm` 价值分群 | B | 8 分群(重要价值..低活跃) | 付款/就诊 fact | mixed | 928 |
| `lifecycle_stage` 生命周期 | B | 潜客/新客/成长/成熟/待激活/沉睡/流失 | 付款/就诊/预约 fact(自算) | window+trend | 928 |
| `treatment_history` 治疗史 | C | 种植/正畸/修复/牙周(多标签) | treatment_record.category | lifetime | 773 |
| `potential_treatment` 潜在治疗 | C | 种植/正畸/早矫/修复/牙周/根管/拔牙/补牙(多) | **复用召回 gap 核心**(clinical-gap) | snapshot | 771 |
| `time_preference` 时间偏好 | D | 工作日/周末/上午/下午/晚间(多) | appointment.planned_for(北京) | window(2y) | 601 |
| `discount_anchor` 折扣锚点 | D | 最低折扣率+日期/项目 | payment.content(应收/折扣额) | lifetime | 338 |
| `special_attention` 特别关注 | D | 屡次爽约/经常迟到/免打扰/不可等候(多) | appointmentsAll + profile + emr | window(1y) | 88 |
......@@ -59,7 +60,7 @@
| `contraindication` 禁忌标签 | D | 种植/正畸/麻醉/手术禁忌(v1 仅种植年龄≤18) | patient.birthDate(余 Layer C) | snapshot | 167 |
| `do_not_contact_status` 勿扰 | — | 可触达/勿扰 | profile + 投诉 | snapshot | 928 |
> 多标签(允许并列):treatment_history / time_preference / entitlement_status / special_attention / treatment_sensitivity / contraindication。
> 多标签(允许并列):treatment_history / time_preference / entitlement_status / special_attention / treatment_sensitivity / contraindication / potential_treatment
> 稀疏(依赖数据完整性,全量更准):family_structure / referral_champion(关系边稀疏)、special_attention 免打扰/不可等候、treatment_sensitivity(本地样本无数据,全量出)。
> **未完整实现(留 Layer C / LLM)**:contraindication 除"种植年龄"外的禁忌(糖尿病/过敏/抗凝/妊娠…需读既往史+处理否定+判控制状态)。
......@@ -74,12 +75,15 @@
8. **score 弃用**:特征"马上量化"是伪命题,分值是消费场景的事 → 特征只产 `data`,场景自算分。
9. **treatment_chain_status 移除**:它是 episode 级状态非人级属性 → 移出画像,降级为详情页 episode 视图(人级在治信号并入 lifecycle)。
10. **treatment_sensitivity 关键词精炼**:先扫全量验证再定口径,排假阳——裸"紧张"=颏肌紧张(正畸)、裸"见血"=可见血凝块(临床)、裸"张口受限"=物理开口受限,均剔除;看牙恐惧用"恐惧/害怕看牙/牙科焦虑"。轻微否定风险(否认晕针,量级小)记 follow-up。
12. **潜在治疗复用召回 gap 核心(单一源 + 分层不倒置)**:召回挖的就是"诊断了但没做对应治疗"=潜在治疗。抽 gap 核心(`clinical-gap/potential-treatment-gap.sql` 的 buildGapCore:牙位相减/⑤a/§E/废用牙)到中立模块,召回(Layer 3,+时间门+打分)与潜在治疗画像(Layer 2,经 PotentialTreatmentSelector,去时间门)共用 → 真单一源、口径一致(圈人群=召回候选超集)。画像**不调召回**(避免 Layer 2→3 倒置)。✅ 召回字节等价两验(EXCEPT 双向 0 diff)。8 标签按年龄/name 拆:种植 K08>18、早矫/正畸 K07 按 3-12/>12≤40、修复 vs 拔牙 按 K03 name(残根残冠→拔)。⚠️ 发现:召回 missing_tooth 缺"种植 age>18"门(画像/禁忌都有)→ 召回可能召 <18 恒牙缺失种植,与禁忌矛盾(follow-up)。
11. **contraindication 不上规则版(医疗安全)**:既往史**否定泛滥**(含"过敏"97% 是"否认过敏",naive 匹配=把无过敏标成麻醉禁忌的事故)+ **量化条件无数据**(HbA1c 全量仅10条、血压自由文本)+ 需控制状态/急性期判断 → 除"种植年龄≤18"(无否定/量化问题)外**整体留 Layer C(LLM 抽取)**。年龄禁忌带 validUntil(满19岁)自动解除。
## 八、follow-up / 未实现
- **appointment 时间 TZ 根治**:`occurred_at` 乱 + `arrived_at` 早 8h(+8h 是 band-aid)→ 修 `in_time` 摄入时区。
- **recommend_num 增量游标**:fact_client_out 无 updated_date,游标=`last_visit_time` → 推荐人不来诊则 recommend_num 更新滞后;改 `greatest(last_visit_time, recommend_last_visit_time)`
- **转介绍 v2**:逐人有效转化(跨患者图谱 + 全量)。
- **潜在治疗**:① 非已丢单(sales_chance)PAC 未摄入 → 现未排丢单;② 召回 missing_tooth 补"种植 age>18"门(与禁忌/潜在治疗对齐);③ Step3 主诉意愿加分(排序)留消费方。
- **gap 核心收敛**:召回与潜在治疗已共用 clinical-gap;治疗链 chain-composer 的同类牙位逻辑后续也可并入。
- **Layer C(LLM 抽取)层标签** ⭐:禁忌标签(糖尿病控制/过敏/抗凝/妊娠… 需读既往史+否定处理+控制状态+时效窗)、沟通偏好/治疗意向/家庭社交关系等。contraindication / treatment_sensitivity 已留 data 多标签位,Layer C 就绪后并入。
- **treatment_sensitivity 否定**:晕针等加否定感知(否认晕针),量级小,随 Layer C 一起规整。
- **discount_anchor 口径**:近免费(>90%off)comp/全保 是否算锚点(现 ≥¥500+ratio>0,未加 floor);¥500 阈值可调。
......
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