按 2026-07-29 四点反馈做:
【1】下线的 5 个筛选项改成**隐藏**而非删除。
PersonaTagFilterDim 加 `hidden?: boolean`,面板 `.filter(d => !d.hidden)`。
这样 API / MCP 仍接受这些维度 —— 已保存的筛选链接、机器人调用不会突然失效;
persona_features 照常写、偏索引照常在,复活只需删一行。
(上一版直接从字典摘掉,连 API 一起禁了,比"前端隐藏"狠。)
【2】【4】新增画像特征 visit_recency —— 一个特征喂三处:
· 列表卡片的「2022-06-19 · 张敏」
· 圈人筛选的「上次时间」(0-3/3-6/6-12/12-18/18+ 月),已接面板
· 「上次医生 / 偏好医生」数据已就位,面板未接(医生是高基数,静态 options 的 chip
面板放不下,需可搜索下拉 —— 已在 persona-tag-filters 注释说明)
⭐ 偏好医生用**主治医生**代替(病历里出现频次最高的医生)——
DW fact_client_out.favor_doctor_id 才是真值,PAC 尚未摄入;换成真值时消费方不用改。
⭐ 到诊口径用 visitFactsOf(encounter + actual treatment + 挂号),与 rfm / lifecycle /
urgency **同一口径**。我上一版卡片是现算 encounter ∪ emr —— 两套口径会算出两个"末诊",
卡片与筛选打架。本次把卡片改成读同一份画像行,fetchLastVisits 删除,
两条查询合并成 fetchCardFeatures 一条(顺带少一次往返)。
⭐ lastDoctor 只认**末诊当天**那份病历的医生,跨天不认 —— 否则"日期是A次、医生是B次",
客服照着说就露馅,宁可留空。本地实测填充率:主治医生 1133/1133,上次医生 392/1133(34.6%)
—— 因为末诊常落在没有当天病历的到诊上(挂号/治疗)。这是刻意的准确性取舍。
⭐ 实现 nextBoundaryAt:纯时间流逝就会跨桶,不报的话水位闸永远不放行、分档停在算的那一刻。
【3】筛选字段加索引:迁移 20260729080000,visit_recency.bucket 的偏索引
(btree(表达式, persona_id),第二列让内层 EXISTS 走 index-only scan)。
这是 persona-tag-filters 顶部那条纪律的兑现 —— 加维度必须同时加索引,
漏了就是 2026-07-29 那个「圈人 20 秒」。新特征建索引时表里还没数据,故无需 CONCURRENTLY。
登记:PersonaFeatureKey / FeatureRegistry / PERSONA_FEATURE_SPECS / PERSONA_FEATURE_META
四处齐全(测试 persona-spec-drift 会卡漏登记,本次就被它卡住两次)。
654 tests / 42 suites 全过;types / service / web typecheck 通过;
本地重算实测特征写入正常。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
| Name |
Last commit
|
Last update |
|---|---|---|
| .. | ||
| ai-invocations | Loading commit data... | |
| assistant | Loading commit data... | |
| host-admin | Loading commit data... | |
| pet | Loading commit data... | |
| plan-detail | Loading commit data... | |
| plans | Loading commit data... | |
| realtime-coach | Loading commit data... | |
| recall-debug | Loading commit data... | |
| ui | Loading commit data... | |
| auth-gate.tsx | Loading commit data... | |
| can.tsx | Loading commit data... | |
| identity-cluster.tsx | Loading commit data... | |
| mock-login-dialog.tsx | Loading commit data... | |
| priority-hover.tsx | Loading commit data... | |
| session-expired.tsx | Loading commit data... |