assignment-proposal.service.ts
20.5 KB
-
fix(plan): 候选总数改 count 出来,别拿取数上限冒充 · e986f5ef
主管在矩阵点「充填 · 窗口外 1,080」,确认单却说「从 170 位候选里取前 100 人」 —— 170 正是 ceil(100*1.5)+20 这个取明细的 LIMIT。而 selectionNote 是要求助手 原话转述的句子(T14),等于让系统当着主管的面报一个他刚看过的、对不上的数。 · 新增 countCandidates():走同一份 cohortWhereSql,count(DISTINCT patient_id) —— 与矩阵格子同一种数法,不是 count(*)(同一患者两条召回会被数两次)。 · candidateTotal / selectionNote 三处判断全改用真候选数;取明细仍只取 1.5 倍窗口。 · zod describe 里那句"已按取数上限截断"一并改掉(它把 bug 写成了规格)。 测试侧同时修一个假绿:原来的假 prisma 不管 LIMIT、一律吐 candidateCount 行, 所以"截断"在测试里根本不可能发生。改成照 LIMIT 截断 + count/明细分流, 并加一条 1080 的回归(已验证:改回旧实现该用例即红)。 本地实测:矩阵 1,080 → 确认单「从 1080 位候选里取前 100 人」。 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
luoqi committed