merge: feat/persona-explainability → main(画像可解释性 + 历史联系最近一次 + ⑤g 未来回访排除闸)

已在 test(a0d20f82)部署验证。三块内容:

1. 画像可解释性 —— 水位对齐 fact 层 + 写入侧节流;到期改档精确调度(nextBoundaryAt);
   详情页说明收回 @pac/types 单一真理源 + 打通证据链 + 分组定序 + 圈人标签 hint
2. 历史联系「最近一次」—— 程序判定 isLatestPast,摘要开头必须交代;prompt 加数据边界
   硬约束(源里只有标签没有原话,没记的不许补);抽屉标最近一次/未到期;
   修 fallback 拿 items[0] 当最近一次的老 bug;两处 orderBy 改 nulls:'last'
3. ⑤g 未来回访排除闸 —— 诊所已排未来回访则本轮不召,排到哪天挡到哪天,到期自愈

️ 部署后必须做的两件事(见两个 migration 文件内注释):
  a. patient_facts 复合索引已在 migration 内,大表建议先 CONCURRENTLY 预建
  b. 画像回填 **--force 必须加**:next_boundary_at 为 NULL 语义是「不再改档」,
     水位闸认为这些版本新鲜、永远不会重算,不会自愈
  c. ⑤g 需 plan 重算才整体生效(生产预估挡下 30,426 条在池 plan / 12.9%)

本地 477 单测 / service+web tsc 干净;test 服已验闸的两个方向。

Found errors in your .gitlab-ci.yml:

  • jobs:openapi-drift config contains unknown keys: rules
You can also test your .gitlab-ci.yml in the Lint
Status Job ID Name Coverage