prompt.ts
3.85 KB
-
fix(recall): 回访摄入去掉 EMR 诊所白名单 + 历史联系摘要不再把未来排程当漏做 · 33dcecb6
生产排查(张学军 BJ0D036664 等)带出的两个独立问题。 ## 1. 摄入:删除 fact_returnvisit_out 的 org 白名单 原条件 `organization_id IN (SELECT ... FROM fact_emr_treatment_out)` 本意"与核心 数据同范围",但那张 EMR 表 **瑞尔 63 家 / 瑞泰仅 2 家**,而回访表瑞泰有 98 家: 瑞尔 保留 3,238,588 / 丢 7,212 → 丢 0.2% 瑞泰 保留 119,884 / 丢 10,039,288 → 丢 98.8% 后果:PAC 的 6.3 万瑞泰患者只有 5.4% 有回访记录(瑞尔 78.9%),历史联系整体空白。 回访是纯展示数据、不进召回信号,没理由绑定 EMR 诊所集合 → 删掉,范围交给 cohort。
⚠ ️ 排查中的一个反转,记在 manifest 注释里防后人再踩:DW 的 patient_id **跨品牌复用** (374 万 id 中 196 万重号,如 708971 在瑞尔=张学军、瑞泰=余盼盼)。所以 cohort 必须用 `(patient_id, brand)` 复合键;摄入侧 sourceUnit 取自本行 brand、按 `brand#patient_id` 索引患者,跨品牌行天然各归各家,不会串号。按品牌正确切分后,瑞尔患者其实一条没漏。 ## 2. 摘要:未来排程被写成"未执行,需优先补做" patient_return_visits.task_date **含未来排程**,而 prompt 既无今日锚点、又按 taskDate desc 排序 → 未到期的排程恒排第一被当成"最新一次",status=未回访 就被判成漏做。 生产实测:934 条已生成摘要中 196 条最新回访是未来排程,其中 158 条(81%)带 "未执行/补做/漏/尚未"措辞;对照组(最新在过去)仅 38%。 修复按"能程序算的事实全算好、LLM 只润色"这条既有纪律: · orchestrator 算 today 与每条的 isFuture(确定性比较,不交给模型) · prompt 渲染成【未来排程·尚未到期】显式标记 + 条数警告 + 硬约束文案 · 补 taskStatus(「已预约」≠「没做」,原先根本没喂给模型) · promptVersion → draft_recall_summary@2026-07-24-e ## 本地验证 - 325 单测通过(新增 11 例锁住"未来排程不得说成漏做" + promptVersion 必须 bump) - 摄入:导入瑞泰患者 殷海霖(2332662,12 条回访旧过滤下一条留不住)→ 12 条全部落库 - 摘要:吕学文(未来排程 2026-10-09 + 真·过期未执行 2026-03-28)连跑 3 次稳定输出 「3月28日种植咨询回访未执行…需优先跟进;…10月9日已排复查洁牙邀约」 —— 未来的说"已排"、真漏做的仍报出,两个方向都对 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>luoqi committed