index.ts
218 Bytes
-
feat(web): 详情页一页式工作台 — 固定左栏选患者列(4列)+ 画像标签筛选 · 21645e8e
把"我的任务"hover 抽屉升级为详情页固定左栏(列表页将弃用,核心要素并入;KPI 面板按需求不带): - plans/layout.tsx:布局挂在动态段之上 — 选中 planId 时渲染「左栏 300px + 详情(原三列)」=4列; 切患者只重渲染右侧,左栏不重挂(筛选/已加载分页/滚动位置全保留);/plans 列表页不受影响。 - PatientPickerRail:召回池/我的/全部(权限)tab + 搜索(300ms 防抖)+ 排序 + 真实号码开关 +
⭐ 画像标签筛选(popover 四维分组多选:价值分群8/生命周期7/紧迫度3/潜在治疗8,选中 chips 可单删); 紧凑患者卡(名/性别年龄/真角标/优先级分色/场景/掩码号/状态),触底+按钮双加载;选中 teal 高亮。 - usePatientPicker:use-my-tasks 泛化版 — 全套筛选上服务端,筛选变化自动回第一页。 - 后端:ListPlansQuery.personaTags("key:value" 逗号串)→ plan.service 匹配患者当前版画像 (personas.supersededAt IS NULL)的 features:同维多选 OR、跨维 AND;数组型(潜在治疗) 用 JSON array_contains;非法 key/value 静默丢弃。 - @pac/types persona-tag-filters.ts:可筛维度字典(code↔ 中文,单一真理源,与 extractor 枚举对齐)。 - 详情页移除 TaskDrawer(被左栏取代)。 验证:API 对 DB 直查口径一致(重要价值 57==57;OR 173 / AND 10 / 数组 contains 40 / 非法=全量); web tsc 0 + Next 生产构建过。仅本地,未部署。 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>luoqi committed