| Name |
Last commit
|
Last update |
|---|---|---|
| .. | ||
| activity | ||
| admin | ||
| ai | ||
| assistant | ||
| auth | ||
| clinical-gap | ||
| clinical-signals | ||
| facts | ||
| mcp | ||
| patient | ||
| persona | ||
| plan | ||
| plan-aggregate | ||
| realtime-coach | ||
| sync | ||
| weixin-aibot |
`refresh-clinic-names` 用 `any(organization_name)` 从源表派生诊所名。ClickHouse 的
`any()` 是**任取一个**,不是"取唯一的那个" —— 而诊所会改名,源表里同一个 id 存着历次名字。
2026-09-03 生产 DW 实测(fact_emr_treatment_out,66 家):
273393edd04e4aa4afe9347bb8a2da21
「正大诊所」 91,053 行 2016-07 ~ 2022-08 ← any() 抓到的
「花旗医院」 3,096 行 2023-06 ~ 2023-09
「瑞尔齿科上海花旗诊所」 42,646 行 2023-09 ~ 至今 ← 现名(宿主花名册也是这个)
· **66 家里 53 家(80%)有多个名字**,不是个案
· 旧名用了六七年,**行数往往碾压现名** → 换成"取最高频"一样错
· c59bfc52…(华贸)有 6 个名字,其中两个带前导 `\t`
按最高频/任取都会把停用多年的旧名当成现名下发给前端。改为按 time_field 取最新:
argMax(trimBoth(name), ifNull(toString(time), ''))
`trimBoth` 同时用在取值和 notEmpty 判定上 —— 只用在取值上的话,纯 `\t` 的行仍会被
当作有效名参与比较。
改动:
· 新增 clinic-directory.ts:buildClinicNameQuery / pickLatestNames 两个纯函数
(CLI 底部是 `void main()`,逻辑留在里面没法单测,故抽出)
· 文件源分支同口径 —— 原来是"遍历行、后者覆盖前者",行序即文件顺序,等于随机取名
· manifest schema 加 time_field;jvs-dw 配 updated_date,friday 配 updated_gmt_at
· 缺 time_field 时退化成字典序最大(只保证确定性,不保证是现名)并告警,不再 any()
生产 DW 实跑新 SQL 验证(只读,未写库):66 家全部派生成功,
273393ed… → 瑞尔齿科上海花旗诊所 ✅
c18cadf2… → 江苏瑞泰通善口腔学前街医院 ✅
仍带空白/空名的:0
⚠ ️ 生产 host.clinic_names 目前是空的({}),本次**不含**任何生产写入 ——
要不要跑这个 CLI 单独决策。另注:前端真实显示的诊所名以宿主换票传的
dictionary.clinics 为准(auth.controller 里它覆盖服务端派生值),
服务端这份只是打底,不能据此断言前端现在显示的是 GUID。
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
| Name |
Last commit
|
Last update |
|---|---|---|
| .. | ||
| activity | Loading commit data... | |
| admin | Loading commit data... | |
| ai | Loading commit data... | |
| assistant | Loading commit data... | |
| auth | Loading commit data... | |
| clinical-gap | Loading commit data... | |
| clinical-signals | Loading commit data... | |
| facts | Loading commit data... | |
| mcp | Loading commit data... | |
| patient | Loading commit data... | |
| persona | Loading commit data... | |
| plan | Loading commit data... | |
| plan-aggregate | Loading commit data... | |
| realtime-coach | Loading commit data... | |
| sync | Loading commit data... | |
| weixin-aibot | Loading commit data... |