-
feat(priority): 优先级 hover 讲清「为什么这个分」和「这分算高还是低」 · 4477a8c2
## 问题 hover 把三维拆解列得很细,但两个关键问题都没答: 1. **看不出高低**。只给「9.78 / 10」,客服会以为满分 10、9.78 只是"还行"。 生产实测分布完全不是这样(active+assigned 23.6 万):p50=31 · p90=66 · p99=82 —— 97.8 分其实是**前 0.05%**。反过来本地库最高才 31 分,那 31 就是该先打的。 没有参照系,这个数字读不出任何决策含义。 2. **解释是口径定义,不是这个患者**。右列写的是「病情多急(末诊/超期)」 「治疗类型 + 牙数预估收入」—— 换谁看都一样,看完仍不知道他为什么是 10 分。 ## 改法 **池内位置**:新增 personas 之外的 PriorityDistributionService —— 租户级整数分直方图, 缓存 30 分钟 + single-flight,算分位纯内存(列表一页只查一次分布,不是每行一次)。 池 <50 返回 null 不显示(样本不足给分位会误导)。查询失败降级 null,不拖垮列表。 **逐患者解释**:文案抽到 priority-explain.ts,能从已有数据推的就不另存 —— 急迫档位 ← urgency 分值;治疗类型/牙数 ← reason.signals.triggers/toothPosition; 主诉命中 ← intentBehavior 二值。只有 RFM 分群与生命周期反推不出(8 分既可能是重要保持 也可能是重要发展),由 scorer 在 breakdown 里带上。code→中文复用圈人字典 (新增 personaTagLabel),不另抄映射表。 实际效果(本地真实数据): 优先级 3.12 / 10 召回池里最该先打的一批(前 1%) 急迫性 10 × 0.4 紧急 · 90 天以上没来 价值性 10 × 0.3 种植 · 缺 6 颗以上 意愿度 2.63 × 0.3 重要挽留 · 没主动问过 · 流失客 × 新鲜度 0.40 诊断偏老,已按时间降权 × 置信度 1.00 来自医生诊断 两个 10 分却只有 3.12,原因一眼可见:意愿度低 + 诊断偏老降权 —— 这是旧版讲不出来的。 ## 连带修的两个坑 **① breakdown 进不去存量 plan。** reasonNeedsRefresh 只比 signals/evidence,所以 「算法给 breakdown 加字段」和「急迫档位跨了 90 天线」都刷不到存量行(和 2026-07 高龄缺牙 同一形态)。把 breakdown 纳入判据,同样剔掉随时间漂移的 freshness / raw —— 否则每日重算 全量重写。本地 17,298 / 17,304 条就地回填,**0 个新版本**。 **② .swcrc 的 exclude 是正则,不是目录名。** 原写 ["node_modules", "dist"], 而 priority-distribution.service.ts 文件名含 "dist" → 被静默排除,271 个源文件只编译 270 个, swc 不报错("Successfully compiled: 270 files"),直到启动才 MODULE_NOT_FOUND。 锚定成 ["^node_modules/", "^dist/"],并加断言防回归 —— 这个坑只在 swc 构建路径复现, nest build(tsc)一切正常,极难排查。 471 tests green · pac-web build 通过。 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>luoqi committed
| Name |
Last commit
|
Last update |
|---|---|---|
| .. | ||
| admin | Loading commit data... | |
| ai | Loading commit data... | |
| assistant | Loading commit data... | |
| auth | Loading commit data... | |
| clinical-gap | Loading commit data... | |
| facts | Loading commit data... | |
| mcp | Loading commit data... | |
| patient | Loading commit data... | |
| persona | Loading commit data... | |
| plan | Loading commit data... | |
| plan-aggregate | Loading commit data... | |
| realtime-coach | Loading commit data... | |
| sync | Loading commit data... | |
| weixin-aibot | Loading commit data... |