Commit bfaae12d by luoqi

docs(persona): 补 treatment_sensitivity + contraindication(15 标签)+ 审查发现/Layer C

- 总览表加 治疗敏感 / 禁忌标签;13→15 标签;多标签 + 稀疏 + 未完整实现(Layer C)说明。
- 审查发现 +2:treatment_sensitivity 关键词精炼排假阳;contraindication 不上规则版(否定泛滥/
  量化无数据/需临床判断 → 仅种植年龄,余留 Layer C)。
- follow-up 加 Layer C(LLM)层标签:禁忌完整版/沟通偏好/意向/家庭社交。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
parent 4f5df5c8
# 画像层 v2(实现版)
> **版本**:W7 · 2026-06 · 反映**已实现的 13 个画像标签** + 架构 + 算法审查发现。
> **版本**:W7 · 2026-06 · 反映**已实现的 15 个画像标签** + 架构 + 算法审查发现。
> **单一真理源**:每个标签的 标签值/数据源/释义/算法/时间语义 在代码注册表
> [`packages/types/src/persona-feature-specs.ts`](../../packages/types/src/persona-feature-specs.ts)(`PERSONA_FEATURE_SPECS`);
> extractor 在 `apps/pac-service/src/modules/persona/features/*.feature.ts`。本文是**人读总览 + 决策记录**,不复制每字段。
......@@ -40,7 +40,7 @@
- **extractor** 实现在 `features/*.feature.ts`,由 `FeatureRegistry` 收集,`PersonaService.recompute` 遍历。
- **重算**:`pnpm recompute-persona -- --host=jvs-dw --force`。⚠️ `--force` 必需 —— 算法/特征变更但数据没变时,水位幂等闸会全 noop;`--force` 跳过闸强制重算(部署也用)。
## 六、13 标签总览(本地 928 样本)
## 六、15 标签总览(本地 928 样本)
| 标签 | 类 | 标签值 | 数据源 | 时间语义 | 覆盖 |
|---|---|---|---|---|---|
| `rfm` 价值分群 | B | 8 分群(重要价值..低活跃) | 付款/就诊 fact | mixed | 928 |
......@@ -55,10 +55,13 @@
| `gender` 性别 | A | 男/女/未知 | patient.gender | snapshot | 928 |
| `family_structure` 家庭构成 | A | 单身/两口/多口/多代 | PatientRelation 直系 | snapshot | 85 |
| `referral_champion` 转介绍达人 | B | 家庭型/社交型 | recommend_num/amount(副表)+ 关系 | snapshot | 26 |
| `treatment_sensitivity` 治疗敏感 | D | 看牙恐惧/晕针/晕血/密闭恐惧(多) | EMR 既往史关键词(精炼排假阳) | lifetime | 2(全量~177) |
| `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。
> 稀疏(依赖数据完整性,全量更准):family_structure / referral_champion(关系边稀疏)、special_attention 的免打扰/不可等候(本地无数据)。
> 多标签(允许并列):treatment_history / time_preference / entitlement_status / special_attention / treatment_sensitivity / contraindication。
> 稀疏(依赖数据完整性,全量更准):family_structure / referral_champion(关系边稀疏)、special_attention 免打扰/不可等候、treatment_sensitivity(本地样本无数据,全量出)。
> **未完整实现(留 Layer C / LLM)**:contraindication 除"种植年龄"外的禁忌(糖尿病/过敏/抗凝/妊娠…需读既往史+处理否定+判控制状态)。
## 七、算法审查发现 + 口径决策(这轮核心 —— 不是照搬 spec)
1. **RFM**:采业务图 B.1.1 口径(M 按**租户分位** p20/40/60/80,非绝对¥;8 段**决策树**非几何八象限)。补全 spec 缺口:`F<3` 也归 develop(近期单次新客不误落"低活跃")。RFM 与生命周期解耦(RFM 管价值,lifecycle 管阶段)。
......@@ -70,11 +73,15 @@
7. **acquisition_channel**:DW 实际一级渠道比图多(走入最大、集团销售渠道、瑞尔员工);按数仓实际值,enum_mapping 归一 PAC 立柱标准。
8. **score 弃用**:特征"马上量化"是伪命题,分值是消费场景的事 → 特征只产 `data`,场景自算分。
9. **treatment_chain_status 移除**:它是 episode 级状态非人级属性 → 移出画像,降级为详情页 episode 视图(人级在治信号并入 lifecycle)。
10. **treatment_sensitivity 关键词精炼**:先扫全量验证再定口径,排假阳——裸"紧张"=颏肌紧张(正畸)、裸"见血"=可见血凝块(临床)、裸"张口受限"=物理开口受限,均剔除;看牙恐惧用"恐惧/害怕看牙/牙科焦虑"。轻微否定风险(否认晕针,量级小)记 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**:逐人有效转化(跨患者图谱 + 全量)。
- **Layer C(LLM 抽取)层标签** ⭐:禁忌标签(糖尿病控制/过敏/抗凝/妊娠… 需读既往史+否定处理+控制状态+时效窗)、沟通偏好/治疗意向/家庭社交关系等。contraindication / treatment_sensitivity 已留 data 多标签位,Layer C 就绪后并入。
- **treatment_sensitivity 否定**:晕针等加否定感知(否认晕针),量级小,随 Layer C 一起规整。
- **discount_anchor 口径**:近免费(>90%off)comp/全保 是否算锚点(现 ≥¥500+ratio>0,未加 floor);¥500 阈值可调。
- **TZ 多宿主**:硬编北京 → 读 host 时区。
- **圈人群 campaign**:未实现;`data` 带 segment + GIN 可查,schema 已 ready(`plan_reasons.campaignId` 预留)。
......
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