-
perf(gap): resolvedTeeth 集合式形态 + 对拍工具(默认 legacy,生产不启用) · 1bde4764
把 buildGapCore 的 resolvedTeethSql 从**逐 (患者×信号) 行相关子查询**改成 **集合式预聚合 + 反连接**。核心恒等式 ∃x∈G: t(x) ⋛ a ⟺ max{t(x)} ⋛ a, 分组 G=(患者,牙位)。13 个分支对 sig 的相关性只有三类: 时间门(10)/ 病历号等值(1)/ 无相关(2),外加「建议优先」一条的 sig.type 标量谓词。⚠ ️ 集合式是**独立重写一份**,刻意不与 legacy 共用片段 —— 共用则重构写错的地方两边 一起错、对拍互相抵消。等价性靠 verify-gap-equivalence 逐行差分来证。 全口码(K05/K07)不进集合式:其 lateral PG 本来就会摘掉(零收益),硬套还慢 2~3 倍。 **默认 legacy**,靠 PAC_GAP_VARIANT=setbased 显式开启。生产不设该变量 → 行为零变化。 验证(测试机 585K 患者 / 本地 30K): · SQL 层 11/11 子场景逐 (患者×信号×牙位) **零差异**,行数逐个相同 · 画像消费方 2000 位患者零差异,单患者 p95 47→27ms 不劣化 · 端到端 plan_reasons 行级 diff=0;测试机 32 万条差异仅时间漂移、**零删除** · 交互路径(详情页刷新)200 位 × 11 子场景零差异,一次刷新 89→75ms · 13 条分支源行全部非空 —— 零差异不是空转 收益(测试机相邻两轮,并发4):场景段 794s → 545s(×1.46)。**生产未验**。 新增 src/cli/verify-gap-equivalence.cli.ts:两版同一 REPEATABLE READ 快照双向 EXCEPT ALL 差分;--self 自对拍先证工具可信;--persona/--single/--conc 覆盖 画像、交互、并发标定四条路径。 新增 tests/gap-setbased-parity.spec.ts:结构对拍,守「两种形态的分支集合不许走散」 (加分支只改一边 = 静默错召,tsc 和现有 spec 都发现不了)。 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>luoqi committed
| Name |
Last commit
|
Last update |
|---|---|---|
| .. | ||
| clinical-gap.module.ts | Loading commit data... | |
| potential-treatment-gap.sql.ts | Loading commit data... | |
| potential-treatment.selector.ts | Loading commit data... |