cohort-attributes.spec.ts
7.42 KB
-
feat(plan): S2.4 画像圈人 —— get_cohort_attributes + 人群取数收口 · cb56c1fd
T9-B「调整阶段画像圈人」落地。主管说「只要商保直付的」「排掉怕疼的」时, 助手先看这批人里各口子多少人,再据实回话,然后带 personaTags 重出确认单。 T10 是真的成立而不只是口号:维度全集直接取 PERSONA_TAG_FILTER_DIMS (与列表页筛选面板、list_recall_queue 的 personaTags 同一张表)—— 以后加权益身份/治疗史/家庭结构是往那张表加一行的事,本工具一个字都不用改。 教条五要合并的 getDedicatedCs + getPersonaFeatures 就是这一个口。
⭐ 人群取数抽成共用的 cohort-filter.ts,出确认单与看分布**同一份 SQL**: 各写一遍必然出现「分布说商保 32 人、提案只有 28 人」,主管当场不信且分不清哪边错。 顺带把温度(矩阵 Y 轴)与 personaTags 接进 propose_assignment —— 在此之前 主管的收窄条件没有任何通路能流进确认单。⭐ noTag(没有这条画像证据)≠ 反面: 「32 人有商保标签」剩下的**不是自费**,是院内没留痕。模型极容易说成「其余 68 人自费」, 那是凭空造事实(T14),而主管会拿它去定价。返回结构单列 noTag + 提示词写死,双保险。⭐ 隐藏维度可点名但默认不给:教条举的「排掉怕疼的」正落在 treatment_sensitivity (hidden:true)上 —— hidden 语义是「面板不展示」不是「不能用」; 但默认推 16 个维度,模型会挑个不相干的开始发挥。⭐ temperatureUnknown:上线到全量重算跑完之间,老画像没有窗口边界, 三档之和会少于该行总数。把差额报出来(而不是塞进「冷」把数字凑上)—— 凑上是假分布,报出来主管知道那是重算进度。 本地真实数据验证(5,825 患者 / 2,724 池子): 三档求和对数 44+25+304 = 373 = 潜在种植全部 373✅ 口径对数 分布 22 → 收窄 22 → 提案 candidateTotal 22✅ 隐藏维度点名 treatment_sensitivity → 看牙恐惧 2 人✅ 耗时 23-96ms 937 tests passing。 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>luoqi committed