assignments-api.ts
6.47 KB
-
feat(中间表): 分页改滚动加载 + 姓名/病历号/医生/客服 四个筛选(服务端过滤) · b3334df7
翻页按钮换成滚到底继续加载(与批次列表同一套:scroll 事件 + inFlight ref 守卫 + 按 planId 去重,
⛔ 不用 IntersectionObserver —— 零高度哨兵不回调、内置浏览器面板里 整个不工作,那条路没法在我们的验证环境里证伪)。 筛选四个:姓名/病历号(防抖 300ms)、医生(主治**或**上次接诊任一命中,候选走 /plans/doctors)、专属客服(候选走本诊所名册,另有「无专属」一档)。🔴 全部在**服务端**过滤:滚动加载只加载了前几页,放前端过滤就成了"在已加载的那几页里搜", 第 7 页的张三搜不到还不报错。🔴 **筛选只影响"看",不影响"分"**:确定按钮上永远写整格人数(「确定,交给助手(420 人)」), 筛选条旁边再明说一遍。这是"筛到 12 人却分出去 420"这个误解唯一的拦截点。 要让筛选参与圈人是另一件事(医生/客服本就是画像维度,得一并传给助手),⛔ 别偷偷用 filtered。🔴 途中真炸过一次,注释钉住了:`input.agentUserId === NO_OWNER` 这种写法,在服务进程 抱着旧 @pac/types dist 时 `NO_OWNER` 是 undefined,而不传筛选时 agentUserId 也是 undefined → 恒等成立 → **每次查询都被悄悄加上"只看无主的"**,420 人的格子只回 20 行, 而 count 仍是 420(它不走这段)。改成先判"传没传"再判哨兵。 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>luoqi committed