本地这一轮的两处展示层修复(同一批文件有重叠,合成一个提交)。
━━ 一、排序键精度(真 bug)━━━━━━━━━━━━━━━━━━━━━━━━
用户截图:召回池按优先级降序,看到的却是「3.12 → 3.12 → 3.10 → 3.10 → 3.10 → 3.12 → …」。
根因是两个数不同源:
排序:ORDER BY priority_score DESC, created_at ASC
而 score = Math.round(raw * 10) —— 0-100 的**整数**
展示:(raw ?? score/10).toFixed(2) —— 取 breakdown.priority.raw,0-10 的**两位小数**
排序精度比展示精度粗 10 倍 → 同一整数档里塞着一堆不同展示分,档内只能按 created_at
兜底排。测试服实测:priority_score=31 一档有 21 种展示分(3.20~2.59);
全池 126,073 张工单只有 93 个排序档位,却有 849 种展示分。
- priority-scorer:不再取整。raw 先定到展示精度(两位小数),score = 该值 × 10,
breakdown.raw 复用同一变量 → **score === raw × 10** 成为不变量。
列本来就是 Float(schema 未动);量纲仍 0-100,queueStats 的 70/40 分档、
前端进度条 score/100 均不受影响。
- PriorityBar(列表页 + 患者轨):展示改用 score/10,删掉 raw 入参。
原来「优先读 breakdown.raw、否则 score/10」是双源,正是分叉起点;两处都加了注释。
- 迁移 20260729060000:一次性回填存量。plan-engine 的 unchanged 分支本来就会就地改
priorityScore,下一轮全量重算(每 2h)能自愈 —— 但在那之前页面所有分会显得"变整"
(2.74 → 2.70),像精度倒退。用 numeric 运算避免 3.12*10=31.200000000000003 的
浮点噪声;带「值确实不同」判断,幂等。
━━ 二、文案:应治未治 → 潜在治疗 ━━━━━━━━━━━━━━━━━━━━
只改**展示层**,共 8 处:场景 chip(labels.ts)、话术段落标题(服务端 SECTION_META +
深度档兜底标题 + 前端流式/空态两处 label)、列表与详情的「其余 N 项…」、助手建议问句、mock。
⚠ ️ SECTION_HEAD_TO_ID 那个 markdown 解析键**一个字没动**,仍是「告知应治未治」——
它匹配的是已落库话术正文里 AI 写下的 `## 告知应治未治`,以及 prompt 当前仍在输出的标题。
改它 = 存量话术全部解析不出 informMissed 段,打开就空白。已在该常量上写了注释说明。
prompt 侧的 {应治未治项} 等约 60 处占位符同样未动(动了要 bump 版本 + 全量重生成)。
━━ 验证(全部本地)━━━━━━━━━━━━━━━━━━━━━━━━━━━━
- 新增 priority-score-precision.spec:锁 score===raw×10;断言「按 score 排序」与
「按展示值排序」结果一致且单调不增;并在邻近分里自动找出一对「旧口径判等、展示不同」
的样本,证明新口径分得开。
- recall-suppression.spec 那条 toBe(45) 锁的是被丢掉的精度,改为 raw=4.49 / score=44.9。
- 本地重算 4 条 friday plan:score 31 → 31.2 / 31,与 breakdown.raw 1:1。
- 迁移本地试跑 13,473 reason + 7,923 plan;复跑 0 行(幂等);
「排序键 ≠ 展示值×10」的行数 0;页面分数从 2.70 恢复 2.74。
- 文案:特意找一条**正文仍是老标题**的存量话术挂到当前 plan 上验证 —— chip 显示
「潜在治疗」、段落标题「告知潜在治疗」、且段落内容完整渲染(老正文照样解析得出)。
- 654 tests / 42 suites 全过;@pac/service 与 @pac/web typecheck 通过。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
| Name |
Last commit
|
Last update |
|---|---|---|
| .. | ||
| adapt-data.ts | Loading commit data... | |
| chain-viz.tsx | Loading commit data... | |
| close-opportunity-dialog.tsx | Loading commit data... | |
| drawer.tsx | Loading commit data... | |
| emr-soap-view.tsx | Loading commit data... | |
| execution-api.ts | Loading commit data... | |
| fact-label.ts | Loading commit data... | |
| facts-timeline.tsx | Loading commit data... | |
| mock-data.ts | Loading commit data... | |
| outcome-form.tsx | Loading commit data... | |
| persona-detail-list.tsx | Loading commit data... | |
| persona-display.ts | Loading commit data... | |
| persona-feature-hover.tsx | Loading commit data... | |
| plan-detail-app.tsx | Loading commit data... | |
| plan-detail-types.ts | Loading commit data... | |
| reason-line.tsx | Loading commit data... | |
| script-deep-process.tsx | Loading commit data... | |
| script-viewer.tsx | Loading commit data... | |
| shared.tsx | Loading commit data... | |
| task-drawer.tsx | Loading commit data... | |
| tooth-timeline.tsx | Loading commit data... | |
| use-script-stream.ts | Loading commit data... | |
| use-summary-stream.ts | Loading commit data... |