{
  "currentVersion": "v2.241",
  "versions": [
    {
      "version": "v2.241",
      "date": "2026-11-13",
      "title": "MFA 切换留痕 + admin-reset 路由级鉴权实证 + TOTP 二维码验证方法沉淀（降级维持）",
      "changes": [
        {
          "module": "安全",
          "title": "【11-05#10 半收口】MFA warn↔enforce 切换结构化留痕：/v1/settings 保存前后快照模式，仅真变化产出 mfa.enforce.switch 审计事件（from/to/detail），auditEmit 白名单补 from/to 透传（此前新增字段会被吞）。等保核查可追溯谁在何时切换了强制模式。"
        },
        {
          "module": "安全",
          "title": "【行动#5 补口】v2.240 的 admin-reset 补路由级鉴权对抗：匿名/坏token→401、普通账号/hospital_admin→403、super_admin→404（未绑定）/原因必填；三档实证通过（服务层 3 例+路由 3 例双保险）。"
        },
        {
          "module": "工程",
          "title": "TOTP 二维码降级维持：本地离线 QR 编码器尝试经独立信源（Python qrcode 参考矩阵 + OpenCV 解码）验证未通过——根因=v7-L 为 2 个 RS 块（每块 78+20），实现按单块编码导致数据区错位；格式信息 MSB-first 与 gfPow 两处已修且验证，分块表未修故整体不交付。方法与下批正解写入 docs/OPS-runbook-20261113.md 第四节。"
        },
        {
          "module": "测试",
          "title": "3625→3629 全绿（新增路由对抗 3 例+切换审计契约 1 例）。"
        }
      ]
    },
    {
      "version": "v2.240",
      "date": "2026-11-13",
      "title": "MFA 管理员留痕重置通道（丢设备救援）+ 危急值卡片处置/结论可见 + 运维台账入仓",
      "changes": [
        {
          "module": "安全",
          "title": "【行动#5 半项】MFA 管理员留痕重置：新增 POST /v1/hosp/security/2fa/admin-reset（仅平台管理员）——用户丢失认证器且恢复码耗尽时的唯一救援通道（此前只能 DB 手工删）。原因必填强制留痕（mfa.admin.reset 审计：actor/target/reason），未绑定 404，锁内读改写；重置后用户须立即重新绑定。新增 3 例服务层回归（含 TOTP 算法对拍）。"
        },
        {
          "module": "临床",
          "title": "【D组P3 余量】危急值卡片处置/复核结论直接可见（此前 outcome 只进 history）；登记成功文案不再直出技术 ID；登记徽标暗色变体（浅绿暗底对比不足）。"
        },
        {
          "module": "运维",
          "title": "【行动#19】systemd 双 unit 实档入仓（deploy/systemd/，Restart=always+3s 实锤）+ 换机 checklist README——仓=实机单向权威。staging 根级 54 个调试杂项归档清理（/root/staging-residue-archive-*.tgz，域外目录 backups/cli/diarize/electron/infra/data-old 只清点待拍板）。"
        },
        {
          "module": "说明",
          "title": "TOTP 二维码子项降级维持（引入可信 QR 库+静态路由登记值得单独一轮做对）；kuma 建监控项仍需凭据（待确认#4 联动）。"
        }
      ]
    },
    {
      "version": "v2.239",
      "date": "2026-11-13",
      "title": "行动清单维护窗口批：账号库路径显式化 + fileVault 遗留明文备份显形 + MFA并发丢更新 + HL7 多帧/MSH-2 + soapFormatter 中文化",
      "changes": [
        {
          "module": "数据",
          "title": "【行动#14】账号库路径三段式解析：显式 config.accounts.file 优先；billing.file 以 billing.json 结尾时派生（主流路径不变）；非标准名保留旧行为但一次性 warn 语义模糊——消除「账号库与卡密库同文件互写」的配置歧义面。"
        },
        {
          "module": "安全",
          "title": "【行动#13】fileVault 状态页显形迁移遗留明文备份：summarizeStorage 扫描各数据目录的 *.plain.*.bak（明文 PHI 泄漏面此前无人认领）计入 legacyPlainBak + cleanupHint 提示删除；*.enc.*.bak 一并清点。"
        },
        {
          "module": "并发",
          "title": "【微修包】MFA enrollStart 全程入锁——原锁外读改写，并发注册时后写者覆盖前写者 pending 记录（丢更新）；对齐 enrollConfirm 既有锁内范式。"
        },
        {
          "module": "集成",
          "title": "【行动#32】HL7 两项：unwrapMllp 改逐帧解封（TCP 粘包多帧不再残留帧界字节，返回帧数组，完全非帧输入保留旧行为）；validateV2 显式校验 MSH-2 编码字符（对端魔改分隔符时提前拒收不再静默错位）。"
        },
        {
          "module": "临床",
          "title": "【微修包】soapFormatter 兜底中文化：关键词中英双语+中文句读分句（原只按英文标点分句，中文病历整段漏配、四段只剩英文占位句）；perfDashboard 床位使用率夹取 0~100%；termLexicon 占位符改私有区成对字符（纯数字词条不再误改）；fhirExport id 字符集清洗（下划线无损转短横线，中文/斜杠剥离，全非法回落 doc-）。"
        },
        {
          "module": "运维",
          "title": "【行动#22/#24】新增 docs/OPS-runbook-20261113.md：五库熔断处置流程（停写→备份→判损→修复→重启→验证）+ staging 端口口径勘误（28788）+ guard push 接口生效说明。"
        },
        {
          "module": "工程",
          "title": "orgService 死代码与未用 import 清理。测试 3619→3623 全绿（新增 fhir 清洗/HL7 多帧/MSH-2 断言）；flake 连跑 20 轮基线同步采集。"
        }
      ]
    },
    {
      "version": "v2.238",
      "date": "2026-11-12",
      "title": "危急值手工登记入口（LIS/电话报告场景）+ 危急值全链埋点六钩子（行动清单执行批）",
      "changes": [
        {
          "module": "临床",
          "title": "【行动#1】危急值面板新增「手工登记」表单（项目必填/数值/单位/床位/病历尾号选填）——LIS 或电话口头报告的危急值不必等 AI 复核卡片，与风险卡登记走同一 register 端点（个人医生落个人记录、组织医生落医院台账）；成功后自动清表单并刷新列表。配套防死面板静态契约测试（v2.217 锚点：8 元素接线断言）。"
        },
        {
          "module": "运营",
          "title": "【行动#2】危急值全链埋点六钩子：面板展开/列表刷新/风险卡登记/手工登记提交/接收处置/复核关闭（analyticsLog，含 personal 维度）——v2.235/238 大改面首次具备使用数据，运营期观察项有了数据基础。"
        },
        {
          "module": "文案",
          "title": "【D组P3】危急值时限提示不再硬编码「30 分钟」——从服务端 slaMs 推导（配置改了文案不漂）；登记按钮文案对个人医生已有分支口径（个人记录/医院台账分述）。"
        },
        {
          "module": "工程",
          "title": "缓存戳统一 bump 20261112（app.html/index.html/assets/app.js 内部 import 19 处全量，v217 闸门 19/19）。测试 3615→3619 全绿。"
        }
      ]
    },
    {
      "version": "v2.237",
      "date": "2026-11-12",
      "title": "会员令牌哈希化落盘 + 隐私政策音频出站明示 + 预算计量双计修复（待确认清单执行批）",
      "changes": [
        {
          "module": "安全",
          "title": "【待确认#3 落地】会员令牌不再明文落盘：activations 只存 sha256 哈希，明文仅在激活响应一次性返回（accounts 范式）。旧明文记录在加载时就地迁移（存量会员令牌继续有效）；幂等恢复改为「重铸造」新令牌（会员期/套餐不变，原令牌自然失效，防回放面）；鉴权缓存键同步改哈希。新增 4 例回归（磁盘零明文/存量迁移/重铸造/异设备 409）。"
        },
        {
          "module": "隐私",
          "title": "【待确认#2 落地】隐私政策补音频/图片出站明示：问诊音频原文经加密连接调用阿里云智能语音服务转写、图片识别同理，转写后即释放；文字仍脱敏后出站；私有化部署可用 EGRESS_MODE=local-only 全量阻断（最后更新 2026-11-12）。"
        },
        {
          "module": "预算",
          "title": "【行动#7】用量计量 seed 双计根除：启动回读由异步改创建时同步读——原异步 seed 与 record 并发，启动窗口内的调用既进内存又被读回重放=日预算虚高提前熔断；轮转失败（EPERM）不再静默，改为一次性 console.warn（文件继续增长可被发现）。"
        },
        {
          "module": "临床",
          "title": "【行动#6】过敏原关键词通道改逐出现位置否定语境判定：「无药物过敏史」「青霉素皮试阴性」「否认磺胺过敏」不再误报为过敏原（保守方向：拿不准仍报）；新增 3 例正反回归。同期修复头孢药名提取仅首匹配——「头孢克肟+头孢呋辛」同文两药全量提取（11-05 遗漏#20）。"
        },
        {
          "module": "性能",
          "title": "【行动#8】cryptoVault 派生密钥 LRU 缓存（64 键）：scryptSync ~50ms/次同步阻塞，MFA 登录链重复派生同一 (口令,salt) 的路径不再重复计算。"
        },
        {
          "module": "说明",
          "title": "个人医生手工登记表单与危急值埋点顺延：app.js 正被独立的模块化拆分会话占用（appjs-split-plan 立项），本批避开双写冲突；拆分收口后随下批落地。"
        }
      ]
    },
    {
      "version": "v2.236",
      "date": "2026-11-11",
      "title": "第四轮体检执行批次：危急值监管双旁路修复 + 备份越权收紧 + privacy 默认拒绝式 + HL7 PV1 第5处",
      "changes": [
        {
          "module": "安全",
          "title": "【P1】危急值 close 监管旁路：rejectPersonalMutation 嵌在 !authz.ok 分支内，SYSTEM_SCOPE（checkObjectAccess 恒放行）整段跳过——平台监管可代关闭个人医生的危急值记录。修复：防代办检查独立于 authz 顺序执行（对齐 mutate 路径），新增复现回归（SYSTEM_SCOPE 代关闭→404）。"
        },
        {
          "module": "安全",
          "title": "【P1·D组】db/backup 文件级旁路：任意 hospital_admin 可触发全库备份，快照含全部个人危急值记录+他院台账+账号卡密/MFA，打穿 v2.235 记录级隔离。修复：/v1/hosp/db/backup、/backups、/backups/verify 三端点收紧为 SUPER_ADMIN（与 restore 同权），新增院管 403 对抗回归。"
        },
        {
          "module": "临床",
          "title": "【P2·D组】个人记录孤儿化：个人医生入组后（isPersonalScope 不再成立）本人对自己登记的个人记录也 404、super_admin 只读不可代办，记录永久滞留 pending。修复：recordVisible / checkObjectAccess / rejectPersonalMutation 三处 owner 判定改为按 ownerUsername 认人不认岗（记录仍 personal 不混入医院台账；同院同事仍 404），新增入组闭环回归。"
        },
        {
          "module": "安全",
          "title": "【P2·行动#7】checkObjectAccess 记录不存在判断移到 isSystemScope 放行之前——系统作用域查不存在对象原先返回 ok:true，deptQcStats/criticalValueLedger/adverseEvent 三服务随后解引用即 500；现一律如实 404。"
        },
        {
          "module": "隐私",
          "title": "【P2·行动#3】privacy provider 门控反转为默认拒绝式（LOCAL_PROVIDERS 白名单：mock 系/cli/whisper 系/local/ollama），未知与未来新增云通道一律默认脱敏；tqsz 不进本地名单（本机网关但上游是云）。原枚举式 EXTERNAL_PROVIDERS 的结构敞口：deepgram/googleSpeech/tqsz 等云通道不在枚举即静默 bypass。新增 4 例门控测试。"
        },
        {
          "module": "集成",
          "title": "【P2】HL7 PV1-3「科室^床位」组件分隔符被误转义（v2.234 同类第 5 处，A1 组实锤）：床位存在时 ^ 被转义为 \\S\\，对端组件切分丢失床位。修复：buildSegment('PV1', fields, new Set([2])) 豁免 + 位置级断言回归。"
        },
        {
          "module": "运维",
          "title": "脚本五连：fulltest.sh BASE 参数化（YILIAO_FULLTEST_BASE，附 staging TRUSTED_PROXY_HOPS 语义说明）+ 注册赠送额度改从 /v1/public-config 实值断言（原硬编码 100 必误报）；smoke.sh 新增 staging 密钥隔离防呆（API_BEARER_TOKEN/ZHIFU_API_KEY 指纹必须不同）；_work/tunnel.py HOST 改 fail-closed（默认废弃机 103.240.196.70 移除）；deploy_full.py BLOCKED_HOSTS 补 103.145.60.192/202.189.22.187。"
        },
        {
          "module": "测试",
          "title": "v2.234 五连熔断补全常驻回归：templateMarket/preconsult 两库损坏 503+文件字节保留测试（此前仅手工对抗复算）；chsDrg11 adrgName 恒空串死条件清理（语义不变）。测试 3597→3607 全绿。"
        }
      ]
    },
    {
      "version": "v2.235",
      "date": "2026-11-10",
      "title": "危急值登记开放给个人医生（用户拍板落地）+ 工作台危急值记录面板",
      "changes": [
        {
          "module": "临床",
          "title": "危急值登记开放给个人医生（第四轮体检待确认 #3，2026-11-09 用户拍板）：未加入组织的登录账号登记危急值落「个人记录」（personal=true + ownerUsername），与医院台账同表共存但跨体系双向隔离——个人作用域只见/只操作自己的记录（本人接收处置、本人复核关闭，单人闭环），医院侧账号对个人记录一律 404 不泄露存在性，super_admin 监管面可见（list）但不可代办（mutate/close 404），客户端伪造 hospitalId 对个人分支一律忽略；其余 /v1/hosp/* 端点对未入组织账号维持 403 门槛不变"
        },
        {
          "module": "前端",
          "title": "工作台新增「危急值记录」面板：登记入口在高危项复核的致命级风险卡片；面板内查看全部自己名下记录（医院台账条目与个人记录同列标注来源）、待接收 30 分钟时限超时标红、接收处置/复核关闭全闭环操作；登记按钮文案按登记去向（个人记录/医院台账）如实区分"
        },
        {
          "module": "安全",
          "title": "accessPolicy 新增个人作用域（personalScope/isPersonalScope）与个人记录可见性/对象级授权分支：个人记录防平台监管代办（系统作用域对 personal 记录的变异显式 404，堵 checkObjectAccess 对 isSystemScope 无条件放行的旁路）"
        }
      ]
    },
    {
      "version": "v2.234",
      "date": "2026-11-08",
      "title": "第四轮全项目深度体检即修批次：数据损坏熔断五连 + 审计哈希链跨段连续 + HL7 v2 报文字段定位三修 + 危急值检出→登记断链闭合 + R120 相互作用漏报修复",
      "changes": [
        {
          "module": "安全",
          "title": "数据损坏只读保护五连（B1-P1/P2）：billing 卡密库 / purchase 订单库 / clientAccess 游客配额库 / templateMarket 模板市场 / preconsult 预问诊库——此前 loadState 对损坏 JSON 静默返回空态，下一次写操作把空态写回=全库清零（卡密/订单/配额/问卷一次触发即永久丢失）。现在损坏即 503 只读保护 + 启动告警，损坏文件字节原样保留；首次启动 ENOENT 正常开库不受影响（3 组复现测试 + 全链路断言）"
        },
        {
          "module": "安全",
          "title": "审计哈希链两处结构性修复（B1-P1）：①轮转（>10MB 分段）后新段首条记录从末段继承 seq/prevHash——旧实现归零重记，verifyChain 在段边界必报 tampered，审计防篡改证据链数据量到 10MB 即自毁可信度；②审计库与普通审计日志强制分文件（默认 *-vault.log 兄弟文件，显式同文件配置拒绝启用）——旧默认两者同写 data/audit.log 互相污染，且日志保留期清理会误删 vault 的 .seg 段与 .anchor.json 锚（清理器已加排除规则）"
        },
        {
          "module": "修复",
          "title": "HL7 v2 对外报文三连修（B3-P1）：①esc() 反斜杠最后转义导致所有含分隔符文本双重损坏——改为最先转义；②PID 出生日期/性别右移一格（落在 PID-8/9）、OBX 状态落在 OBX-9、MSH 头部双竖线全段右移——全部改为程序化定长填充（对齐 PV1 范式）+ 位置级回归断言；③MSH-9/OBX-3 的组件分隔符 ^ 是语义本身，从转义中豁免；MSH-7 时间戳规范为 YYYYMMDDHHMMSS±hhmm"
        },
        {
          "module": "临床",
          "title": "危急值「检出→登记」断链闭合（B2-P1）：风险扫描的 critical 项新增「登记危急值台账」一键入口（预填项目/来源/时间，接既有医院级 register 路由；无医院权限如实提示走本院上报流程，不自动写、不编造流程；同草稿同项目去重防重复入账）——此前 37 条 critical 规则检出后只能人工手工登记，台账为空导致 30 分钟 SLA/催办升级/闭环率全部失真"
        },
        {
          "module": "临床",
          "title": "R120 中西药相互作用漏报修复：western 匹配的全文兜底被写在提取集内层——西药既不在硬编码关键词表、又无「药名 剂量」模式时静默漏报（麻黄碱+氨氯地平实测 0 提示；华法林/他汀恰在表内故未暴露）；同时把无断言的 r120 调试脚本转正为回归测试（转正首跑即抓出本漏报）"
        },
        {
          "module": "质控",
          "title": "首页质控畸形日期显式报出（B2-P1）：新增 date-parseable 规则（入院/出院/死亡/手术日期填了就必须可解析，「不详」「2026年13月40日」记 major）——旧实现 NaN 比较为 false 静默放行，垃圾日期照常入档污染 DRG/DIP 分组与时效统计；date-order 仅双侧可解析时比较"
        },
        {
          "module": "性能",
          "title": "DIP 目录单进程单份解析（B2-P1）：dipService/dipEncoder/dipValidator 此前各自 readFileSync+JSON.parse 同一份 1.1MB 目录（9520 组，单进程 3 次解析 3 套索引）——抽共享加载器按路径缓存；目录缺失/损坏从静默空表改为启动告警 + stats() 带 catalogLoaded 标志；清洗器 dipCatalogClean 接入加载链（防御未来目录重导时 PDF 页脚粘连回流）"
        },
        {
          "module": "修复",
          "title": "随访日期时区 off-by-one（B3-P2）：taskStatusTracker.addDays 本地时区解析 + UTC 取日期，东八区全部随访到期日提前一天——改全程 UTC"
        },
        {
          "module": "安全",
          "title": "杂项加固：dbStore.restore 备份名白名单（对齐 sqliteStore，堵 ../ 越出备份目录）；leadService Windows 轮转失效（目标已存在 rename 抛 EPERM 被吞、leads.jsonl 无限增长——先删旧 .old 再改名）；fulltest.sh 硬编码 admin token 出码为环境变量门控（fail-closed）；scan-secrets 补 .jsonl 路径扩展名误报"
        },
        {
          "module": "清理",
          "title": "死代码与卫生（阶段 A）：public/modules/archive.js+core.js 死模块对（365 行，仅测试引用）与 11 个一次性脚本归档至 _archive/round4-20261108/（git mv 保留历史）；src/services/analytics/ 空目录删除；根目录 nul 残渣删除；Math.random→CSPRNG 统一 4 处（streamHandler/clinicalPathway×2/rationalDrugStats）；printNote 死三元删除；#9f1239 危急色 12 处收敛为 --danger-ink token；index.html「数据在您自己的服务器上」补「私有化部署模式下」限定；.env.example 补全 config.js 全部 125 个环境变量文档"
        },
        {
          "module": "运维",
          "title": "104 生产备份 cron 装机（阶段 0 P0）：/root/deploy/yiliao_backup.sh（data/ 排除 audio-tmp + changelog.json，保留 14 天，出档即 600）+ 每日 03:30 crontab，装机当日断言通过（data_20261108.tgz 364K）；百炼主链免费探活 200（models 列表 + 13 token 真实生成，通道活性确认，余额仍待控制台核对）"
        }
      ]
    },
    {
      "version": "v2.233",
      "date": "2026-11-05",
      "title": "第三轮体检即修批次：MFA 强制覆盖面补口（注册/提权同门）+ 绑定体验闭环 + 202→103 迁移保真修复",
      "changes": [
        {
          "module": "安全",
          "title": "MFA 强制覆盖面补口（两条 P1）：①注册自动登录过门——seedMember 预植 admin 角色后「注册即拿管理会话」的绕过链已堵（403+票据，与登录同门）；②角色提权过门——enforce 下把未绑定账号提为强制名单角色返回 403 mfa_enroll_required + 审计 mfa.enforce.role-deny（warn 放行+审计 role-warn），存量会话借提权拿管理权的旁路关闭"
        },
        {
          "module": "安全",
          "title": "绑定体验闭环（第三轮六视角 P1/P2）：输错动态码不再烧票据/登录挑战（peek 先验后耗，向导与登录页均可原地重试，一次性与防重放语义不变）；设置区双因子卡片补确认启用/解除接线（warn 模式「去安全设置开启」不再是死路，解绑有 UI）；恢复码改页面内可复制文本（原 alert 手机上无法选中复制）；mfa.login.verify/mfa.recovery.use 事件补 tenantId（院管可见本院双因子登录成败，v2.231 收口余项）"
        },
        {
          "module": "安全",
          "title": "MFA 加固三件：mfa.json 落盘即 600；MFA_ENFORCE_MODE 非法值（typo 静默降级 warn）与 enforce 未配 CRYPTO_MASTER_KEY（事实性锁死）启动时大声告警；医生主工作台登录补 MFA 感知（mfaRequired 二步验证+enforce 403 如实分流指引，修「无 token 却弹登录成功」假象）"
        },
        {
          "module": "运维",
          "title": "202→103 全量迁移保真修复（服务器侧，逐项断言）：nginx ESM 白名单插回（上轮 P0-1 修复被旧 vhost 快照丢失致生产 /app 交互瘫约 3 天；公网 7 路模块路由恢复 200、R72 防线仍全拦）；生产 restart 对齐 v2.232 运行时（此前进程停留 v2.228、/health 为读盘假象）；staging 恢复 enable（迁移后断档 2.8 天）并同步 v2.232；regression_guard 探针恢复 REG_OK 20/20 + cron 输出修复；deploy_full.py 旧版（含明文口令残留）等 11 件上轮清理件被迁移复活，全部备份后移走；webroot 与 /data10t 重复安装包去重（backups 458M→18M）"
        },
        {
          "module": "文档",
          "title": "等保对照表按实况加限定（组织四级权限≠三权分立需现场补充说明/ENCRYPT_BUSINESS_FILES 默认关需迁移/强制=下次登录生效/API_BEARER_TOKEN 等部署层令牌不在 MFA 覆盖内/丢认证器+恢复码用尽的线下救援边界）；hospital.html 删除「高危操作二次确认」无代码对应的过度承诺；README 补 v2.230~v2.233 特性段；scan-secrets 排除 docs/audit 历史审计指纹（消除 5 条常驻误报）"
        },
        {
          "module": "测试",
          "title": "+4 项运行时测试：注册门（enforce 403+票据/warn 放行标记）、提权门+审计 tenantId、票据与挑战先验后耗（输错可重试）+一次性语义仍成立、第二因子事件 tenantId"
        }
      ]
    },
    {
      "version": "v2.232",
      "date": "2026-11-02",
      "title": "MFA 强制开关（等保一键合规）：管理员双因子 warn/enforce 两级 + 一次性绑定票据防锁门外",
      "changes": [
        {
          "module": "安全",
          "title": "MFA_REQUIRED_ROLES + MFA_ENFORCE_MODE 双开关上线（默认关=SaaS 现状可选，个人医生不在组织内天然不受影响）：warn 观察期放行+响应提示+审计；enforce 拒发会话"
        },
        {
          "module": "安全",
          "title": "防「强制即锁死」设计：密码验证通过但未绑定时签发 10 分钟一次性 bootstrap 票据（只能走绑定流程、不能调业务接口），院级控制台（hospital-admin）登录页内嵌绑定向导（密钥手输→动态码→恢复码一次性下发）【2026-11-05 勘误：原文「工作台/扫码」与实况不符——医生工作台无向导、暂无二维码渲染（已列待办）】，绑定后正常双因子登录——凭证轮换「先证明不会把自己锁在门外」教训的 MFA 版落地"
        },
        {
          "module": "等保",
          "title": "等保三级合规对照表刷新：身份鉴别条款可如实声明「管理员双因子强制启用」；同时标注启用前置条件=必须配置 CRYPTO_MASTER_KEY（绑定密钥加密落盘依赖）"
        },
        {
          "module": "测试",
          "title": "+3 项运行时测试：默认关零变化/warn 放行标记/enforce 全链 roundtrip（403→票据→绑定→双因子登录拿会话）+票据一次性+个人医生与非名单角色不受影响"
        }
      ]
    },
    {
      "version": "v2.231",
      "date": "2026-11-02",
      "title": "运维收口批次：MFA 审计事件归属租户（院管可见）+ staging systemd 化 + 服务器卫生",
      "changes": [
        {
          "module": "等保",
          "title": "mfa.* 审计事件补 tenantId（登记/确认/解除三方法，医院版路由传会话 hospitalId）——v2.227 租户过滤后 MFA 事件对院管隐身的 fail-closed 代价收回；平台账号场景不误标"
        },
        {
          "module": "运维",
          "title": "staging 环境从 nohup 裸进程改 systemd 托管（yiliao-staging.service：重启自拉起 + journal 可观测 + Restart=always）；restart_staging.sh 保留为 systemctl 包装（旧脚本备份留痕）"
        },
        {
          "module": "运维",
          "title": "回归守卫日志双写修复（脚本内写文件 + cron 重定向同文件=每轮两行）；guard 输出按半数误读的历史消除"
        },
        {
          "module": "运维",
          "title": "yiliao vhost 卫生：死 .cn conf（DNS 已不指本机）与 2 个 .bak conf 归档（nginx -t + reload 后 .com 200 复核）；旧安装包 0.1.0~0.1.2 迁 /data10t 归档区（webroot backups 455M→15M）"
        }
      ]
    },
    {
      "version": "v2.230",
      "date": "2026-11-02",
      "title": "行动清单高价值批次：失败率熔断上线 + 赠送文案动态化（根治三代漂移）+ 不确定表述扫描入口 + 语音指令诚实化 + 口令/会话策略",
      "changes": [
        {
          "module": "可靠性",
          "title": "失败率熔断落地（批量 AI 消费管控红线 #3）：同一 AI 通道连续失败 ≥10 次（AI_FAILURE_TRIP_COUNT 可调）自动断开 5 分钟（AI_FAILURE_COOLDOWN_MS），期内快速 503 不再把重试风暴打进故障上游；成功即复位，冷却到时半开放行；覆盖转写（漏斗层）/病历生成/chat 全部次级调用；管理端用量快照含熔断状态"
        },
        {
          "module": "文案",
          "title": "注册赠送/邀请奖励动态化：/v1/public-config 返回 .env 实值，新增 grant-copy.js 全站改写赠送数字（6 页接入 + app.js 运行时取实值）——.env 调值全站自动跟随，根治 100→500→2500 三代人工对齐链；静态 2500 仅作拉不到时的兜底"
        },
        {
          "module": "质控",
          "title": "质控面板新增「❓ 扫描不确定表述（免费）」入口：/v1/note/uncertainty 端点 v2.227 已接线但无 UI（上轮行动16 半程），点击即扫、结果就地渲染，纯本机规则零算力"
        },
        {
          "module": "体验",
          "title": "语音指令诚实化：旧版引用不存在的输入框却谎报「已清空过敏史」，且把「血压是140/90」等临床语句从对话稿删除（AI 生成丢数据）；现未执行如实提示 ⚠️ 并保留原语句，指令执行改为由调用方显式传目标元素（未来加表单即自动激活）"
        },
        {
          "module": "安全",
          "title": "注册口令下限 6→8 位（等保三级身份鉴别基线；存量用户不受影响，注册/改密时校验，前端提示同步）"
        },
        {
          "module": "安全",
          "title": "会话空闲上限可配 ACCOUNT_SESSION_MAX_IDLE_DAYS（默认维持 90 天滑动；等保场景可收紧至 30/7），鉴权运行时即时拒绝超限令牌"
        },
        {
          "module": "文档",
          "title": ".env.example 补新键（熔断两参/会话空闲/赠送注释更新）"
        }
      ]
    },
    {
      "version": "v2.229",
      "date": "2026-11-02",
      "title": "第二轮全项目体检即修批次：nginx 误杀 /app 模块图 P0 修复 + 空转写防线 + 次级通道成对 + timeliness 前端接线 + 文案对齐 2500",
      "changes": [
        {
          "module": "P0 修复",
          "title": "nginx「源码直读拦截」规则误杀两条合法前端 ESM 路由（/modules/*.js 与 /src/services/*.js，app.js 静态 import 硬断点），生产工作台自 10-25 起页面骨架在、全部交互死——按应用路由表语义精确放行（平铺 .js），R72 防线其余不变，公网 7 路由恢复 200"
        },
        {
          "module": "可靠性",
          "title": "regression_guard 新增 3 条公网静态路由探针（17→20 断言）——此前守卫直连 8787 绕过 nginx，部署层断裂永远测不到；smoke.sh 同步修正（旧模块死清单 7 项误报 + 新增公网 ESM 硬断点检查）"
        },
        {
          "module": "转写",
          "title": "空转写防线：上游 HTTP 200 但 text 为空时统一在漏斗层抛 503 asr_empty_output 走失败退费（覆盖 openai/berget/deepgram/google/dashscope 全部云端通道与未来新增），此前空文本流进生成链照常扣算力"
        },
        {
          "module": "配置",
          "title": "tqsz 自有套件默认 baseUrl 由已废弃的 api.tongqiansuanzhi.cn（.cn 弃用且旧 DNS 指向境外机——医疗音频不能默认出境）改为 202 本机直连 127.0.0.1:8100（egress 私网白名单，任何模式放行）"
        },
        {
          "module": "AI 链",
          "title": "次级通道成对生效：OPENAI_SECONDARY_BASE_URL 生效范围扩大到全部次级功能（icd/鉴别诊断/宣教/说明书/证明/chat/预问诊/角色归并，此前只 chat/角色归并接通）；新增 OPENAI_SECONDARY_API_KEY（次级凭据与主通道不同场景）；预问诊补 usage 记账（此前只熔断不计量）并从主档模型降为次级档（价差 5~10 倍）"
        },
        {
          "module": "AI 链",
          "title": "note 三通道（openai/anthropic/gemini）显式 180s 超时与 berget/azure 对齐——postJson 默认 60s，qwen-plus 长病历（max_tokens 6500）高峰期稳定超时；Azure 转写路径补 120s 超时（chat 路径早已有）"
        },
        {
          "module": "质控",
          "title": "环节/时效质控前端接线：v2.227 服务端已计算 timeliness 字段但前端从未渲染（changelog 宣称功能医生看不到），工作台质控面板新增「⏱ 环节/时效提示（不计分）」组 + info 级样式"
        },
        {
          "module": "安全",
          "title": "服务端三处 CSV 渲染器（质控明细/批量统计/病历导出）补公式注入中和（=+-@ 前缀加撇号），与 admin 导出/researchExtract 同口径统一——患者姓名/诊断等不可信值此前可注入 Excel 公式"
        },
        {
          "module": "安全",
          "title": "archiveHandoff/templateMarket 安全码生成 Math.random → crypto randomInt（防枚举凭据熵源统一 CSPRNG）；生产未配 API_BEARER_TOKEN 且 APP_ENV 含 prod 时启动大声告警"
        },
        {
          "module": "文案",
          "title": "注册赠送算力全站对齐生产实配 2500 点/邀请 250 点（此前 index/features/activate/app 写 500、guide/support/admin/app.js 写 100、邀请写 50——三代漂移）；跨页一致性契约测试钉死；模板口径统一「六大规范 + 自定义」"
        },
        {
          "module": "体验",
          "title": "429 限流不再归入「升级会员」引导——限流是小时窗口与算力无关，付费解决不了，此前误导用户付费；独立「稍后再试」出口"
        },
        {
          "module": "可观测",
          "title": "每日心跳行落 journald（系统级 vacuum 会滚掉启动行，事故取证链出现空窗）；streamHandler 归因注释如实化"
        },
        {
          "module": "运维",
          "title": "webroot 残留清理：旧版 deploy_full.py（明文口令+.cn 旧机，P1）、上游残留 .github/README-EN、1.7G 死 .cn webroot 整体迁 /data10t 归档；staging publicBaseUrl 修正 28788；旧安装包 0.1.3 迁出；data/ 账本与 staging .env 权限收紧 600"
        },
        {
          "module": "文档",
          "title": ".env.example 补录运维关键项 30+（DB_BACKEND/MEMBERSHIP_ENABLED/ZHIFU_*/CRYPTO_*/SHUTDOWN_TOKEN/STREAM_*/DASHSCOPE_*/AZURE_* 等，config 实读 123 键此前只收录 50）；README 补 v2.223~228 特性段；等保合规对照表刷新（MFA/加密「待接入」改已实现实况）；smoke.sh 域名 .cn→.com；v2.228 changelog「激活页」勘误"
        },
        {
          "module": "归档",
          "title": "stream.js 孤儿文件（上游 WS 客户端，零引用）与 site_probe 过时副本归档进 _archive/；同目录同名迭代报告加后缀消歧；v214 发布文档加历史形态横幅"
        },
        {
          "module": "回归",
          "title": "新增 v229-audit-regressions 13 项测试钉死本轮修复；全量 3561/3561 绿（基线 3548）"
        }
      ]
    },
    {
      "version": "v2.228",
      "date": "2026-10-30",
      "title": "收尾批次：staging 基建修复（28788）+ Gemini/Google key 改 header 鉴权 + 动态模块缓存戳",
      "changes": [
        {
          "module": "安全",
          "title": "Gemini 与 Google Speech 的 API Key 从 URL query（?key=…）改为 x-goog-api-key 请求头（官方等效鉴权）——query 会进 nginx/代理/上游各级访问日志，header 消除 key 泄露面"
        },
        {
          "module": "界面",
          "title": "工作台两处动态加载的模块（语音指令/历史交叉核对）补缓存版本戳，并全站静态戳统一更新——30 天长缓存下此前改动对存量浏览器不生效（v2.206 教训同类）。【v2.229 勘误：原文误写作「激活页」，该两处动态 import 在工作台 app.js】"
        },
        {
          "module": "界面",
          "title": "激活页 HTML 嵌套修复：卡密卡片提前闭合导致两个孤立闭合标签（浏览器自愈掩盖，结构纠正）"
        },
        {
          "module": "运维",
          "title": "staging 基建修复：8788 已被其他应用占用，staging 固化迁移至 28788 端口（restart_staging.sh 升级 node v22.23.3 钉住 + 健康检查更新 + 本地隧道脚本同步）——发版纪律的 staging 回归环节恢复可用"
        },
        {
          "module": "文档",
          "title": ".env.example 补全历史缺口项：自有套件 ASR（TQSZ_ASR_*）、次级通道独立地址、AI 链闸门两开关、审计留存天数、ASR/LLM 分离开关、模型价目覆盖、出站白名单（此前只在代码/手册中出现）"
        }
      ]
    },
    {
      "version": "v2.227",
      "date": "2026-10-30",
      "title": "确认清单执行批次：自有套件 ASR 通道 + AI 链 fail-closed + 环节时效质控 + 五服务补测试",
      "changes": [
        {
          "module": "语音",
          "title": "新增「自有套件 whisper」转写通道（transcriptionProvider=tqsz）：对接 api.tongqiansuanzhi.cn/ai/asr（faster-whisper small，OpenAI 兼容 multipart + X-Api-Key），医疗语音数据不出自家机房（等保友好、边际成本≈0），句级时间戳复用既有溯源对齐；未配 TQSZ_ASR_API_KEY 时 503 显式失败"
        },
        {
          "module": "安全",
          "title": "AI 链三处 fail-closed：①chat 多通道降级链（berget→azure→openai）默认关闭（CHAT_FALLBACK_CHAIN=true 显式开）——该链非单价升序、静默切换付费通道；②Azure 兜底默认关闭（AZURE_FALLBACK_ENABLE=true 显式开）并修复降级路径丢 extraSystem（医生自定义要求曾全部失效）与无输出校验（改 parseNotePayload，残缺输出不再照常计费）；③WS 流式转写纳入日预算熔断（AI_DAILY_COST_LIMIT_CNY）与用量账本归因"
        },
        {
          "module": "质控",
          "title": "新增环节/时效质控规则（10-27 医院调研的质控科真实缺口）：术前小结缺填、三级查房记录缺失（住院≥3天无主任/副主任查房）、首次主治医师查房未提及、出院小结书写时限超限（显式双时间差>24h）——全部提示级不计分，数据不全静默跳过（宁漏勿误）"
        },
        {
          "module": "功能",
          "title": "不确定状态分析端点接线（POST /v1/note/uncertainty）：uncertaintyHandler 服务 v2.12 起存在且有 8 项测试但从未进路由（服务层死面板）；纯本地零算力"
        },
        {
          "module": "配置",
          "title": "次级通道独立地址：OPENAI_SECONDARY_BASE_URL——chat 问答与说话人角色归并等次级任务可指向自建套件（如 103 Qwen3-Coder 跑短输出），主生成仍走主通道；未配置与主通道同址（行为不变）"
        },
        {
          "module": "安全",
          "title": "病历生成四条用户可控串（检验原文/自定义模板/上次病历/风格样板）补提示词注入特征扫描——此前只有 customPrompt/styleHint 过扫描，这四条同样直达 system 通道；命中 400 拒绝与 customPrompt 同口径"
        },
        {
          "module": "医院版",
          "title": "审计事件查询删除无租户放行分支：无 tenantId 标记的平台级事件此前任意院管可见（跨租户信息面），现仅平台管理员可见；官网关键数字按仓库实测刷新（11 规则包/1017 提示类型/628 DRG 入组规则，移除不可核实的「8 家 HIS 预设」）"
        },
        {
          "module": "运维",
          "title": "演示种子口令硬化：DEMO_PASSWORD 必填且≥10位（此前默认 Demo-2026! 会注册真实可登录账号）；两个模型下载脚本补 hf-mirror 镜像回退（与浏览器端 v2.06 同策略，HF 直连国内不可达）；用量账本对未知模型按兜底价估算时一次性告警（防日预算提前触发无人知因）"
        },
        {
          "module": "界面",
          "title": "纠错账本 CSV 导出补 =+-@ 公式注入防护（与 csv-export.js 同口径）；本地 ONNX 转写缺音频改 400 显式报错（此前静默返回英文占位文本）"
        },
        {
          "module": "测试",
          "title": "五个零测试服务补测试（fhirExport/noteBatch/noteDiff/noteTemplates/taskStatusTracker，10 项）+ 环节时效规则 8 用例矩阵；docs/ 上游残留 8 项移 docs/upstream/（guide/privacy/support 三份生产路由文件保留）"
        }
      ]
    },
    {
      "version": "v2.226",
      "date": "2026-10-30",
      "title": "全项目深度体检即修批次：6 处打印空白页 + 埋点看板复活 + 危急值药名剂量误报修复 + 渠道占位文本扣费封堵 + 工作台 CSS 缺口补齐",
      "changes": [
        {
          "module": "打印",
          "title": "修复 6 个公卫/宣教打印入口打出全白页：当月随访路线、宣教要点、体检通知单、肝肾功趋势、在服药清单、上门诊路线此前写入 #print-area（被打印 CSS display:none），统一改走 print-sheet 结构；顺带补上 selfmed-print-text 类的 CSS 定义（此前 4 处使用零定义）"
        },
        {
          "module": "医院版",
          "title": "修复院级控制台 HIS/FHIR 页签两个 HL7 按钮（MDM^T02/ORU^R01）死接线：querySelector 用错卡片容器抛 TypeError，按钮永远点不动"
        },
        {
          "module": "埋点看板",
          "title": "修复转化漏斗/功能使用率看板自 v2.13 起恒返回「审计日志不可读」：ESM 模块里 require() 未定义被 catch 吞掉（死面板病），改为同步 fs 导入 + 大文件只读最后 1MB"
        },
        {
          "module": "质控",
          "title": "修复危急值规则把给药剂量当检验值：「10%氯化钾10ml 口服」被报成「血钾10 高钾血症」丙级扣分、「0.9%氯化钠100ml」被报血钠极低等——新增 clinicalNotation.isDoseTail 单点判定，钾/钠/钙/镁/磷五条规则统一接入（数字后紧跟 g/mg/ml/片/支 等剂量单位即跳过）"
        },
        {
          "module": "计费",
          "title": "封堵 11 个 AI 通道「未配 Key 返回占位英文且照常扣算力」：转写 6 通道（openai/berget/deepgram/google/cli/whisper.cpp 空输出）+ 病历生成 5 通道，统一改抛 503 走失败退费路径（与 dashscope 2026-10-09 修复同口径）"
        },
        {
          "module": "计费",
          "title": "修复管理员保存设置后 AI 用量计量与日预算熔断（AI_DAILY_COST_LIMIT_CNY）静默失效直到重启：rebuildProviders 重建管线时漏传 usage（首建带、重建漏）"
        },
        {
          "module": "桌面端",
          "title": "修复购买台账与商务线索落盘路径漏过 DATA_DIR：覆盖安装/卸载即财务对账数据丢失；本地模式 worker 补加载失败兜底（CDN 不可达不再永久卡「正在准备本地模型」）与 isSwedish 未定义崩溃"
        },
        {
          "module": "安全",
          "title": "游客令牌对免算力重算端点（质控/风险扫描/药物相互作用/批量）补每令牌 120 次/小时频控——此前 member/account 都有限流唯独 client 裸奔，单个免费试用令牌即可循环调用占满事件循环；管理后台两处 CSV 导出补 =+-@ 公式注入防护（复用 csv-export.js 单一实现）"
        },
        {
          "module": "医保",
          "title": "DRG 预判表修复 HIV(B20-B24) 永远归传染病 MDC1 的遮蔽缺陷与 B24.x/D48.x 字典序边界漏（改字母+数字区间解析）；DIP 版本口径诚实化：数据文件实为 2.0（9520 组），对院方页面从「3.0/5125 组」统一改按实际标注"
        },
        {
          "module": "医保",
          "title": "DIP 拒付预警修复跨分句误压制：「无发热，行阑尾切除」里否定的是发热不是切除，否定判定收窄到同分句内紧邻手术词（拒绝手术 场景仍正确排除）"
        },
        {
          "module": "协作",
          "title": "用药冲突检测三处修复：界面显示正则源码乱码（extractDrugs 返回 re.source）、两版相同用药被误标「重复用药」（语义颠倒，改为一版有一版无才提示）、合并建议出现【undefined】"
        },
        {
          "module": "界面",
          "title": "补齐工作台约 140 个「有使用零定义」的 CSS 类（版本历史/质控/词库/质控清单/趋势条/团队/儿科剂量/自检/页脚等 30 余家族约 1100 行），录音电平条恢复可见；设置页补齐 Anthropic/Gemini/Ollama 密钥输入框（此前选了必失败且无处配钥）；首页/功能页算力赠送文案统一为实际值 500 点"
        },
        {
          "module": "等保",
          "title": "审计日志留存升级：从「只保留一份 .old（最多 20MB 历史）」改为时间戳轮转 + 默认 190 天保留期（AUDIT_RETENTION_DAYS 可调），对齐等保三级 ≥6 个月留存要求；启动日志带版本号 + unhandledRejection/uncaughtException 落 journald（此前崩溃史不可重建）"
        },
        {
          "module": "运维",
          "title": "服务器文档四份统一到 202.189.22.187（AGENTS/CLAUDE/ops-runbook/部署手册）；部署手册修复启动命令路径（src/index.js）并补 TRUSTED_PROXY_HOPS=1 必读说明（漏配时全部按 IP 限流共享一个桶）；webroot 归档 backup_r119/r120、旧版 riskScan.js、ai项目 空壳等 14 项惰性残留至 backups/20261030/；摘除指向不存在脚本 /root/yiliao_weekly_check.sh 的死 cron"
        },
        {
          "module": "回归",
          "title": "新增 v2.226 审计回归测试 10 项（危急值剂量/看板可读/MDC 边界/PV1-19 落位/冲突药名/情绪规则/未配 Key 503/打印静态契约/否定窗口），全量套件 3539+ 项全绿；本地建 git 仓两笔提交固化基线"
        }
      ]
    },
    {
      "version": "v2.225",
      "date": "2026-10-27",
      "title": "DRG 分组升级为 CHS-DRG 1.1 真实引擎（移植 OpenDRG）+ 销售演示环境一键种子",
      "changes": [
        {
          "module": "医保",
          "title": "新增 CHS-DRG 1.1 国家标准分组引擎：移植 OpenDRG chs_drg_11（Apache-2.0），覆盖 26 个 MDC、376 个 ADRG、628 个 DRG，含 MCC/CC/CCE 排除表、先期分组、歧义病案（QY）、多发创伤部位、新生儿体重日龄等全部特殊机制"
        },
        {
          "module": "医保",
          "title": "移植方式可审计：AST 提取器把 448 个 Python 模块机械转为 JSON 规则表 + 16 种闭合原语的 Node 解释器；与上游 Python 原版对 3000 条随机病历全量差分输出完全一致（test/chsDrg11.test.js）"
        },
        {
          "module": "医保",
          "title": "/v1/hosp/drg/group 双模式：提供医保版 ICD 编码（zdList/ssList 或 mainIcd）时走真实引擎；仅有诊断文字时回落起步表。两种模式各自携带成熟度声明（calculation / demo-table）"
        },
        {
          "module": "合规",
          "title": "能力声明如实升级：DRG 编码模式标为 calculation（依据=与开源上游的软件等价性，非临床验证）；verifiedAgainst 保留给临床金标准仍为 null；新增 drgDemoTable 声明承载文字模式"
        },
        {
          "module": "院级控制台",
          "title": "DRG 面板改版：编码模式（主诊断/其他诊断/手术编码/性别年龄 → MDC+ADRG+DRG+分组名称）+ 文字模式保留"
        },
        {
          "module": "运维",
          "title": "新增 scripts/seed-demo-hospital.mjs 销售演示种子：一键灌入演示医院/科室/成员/危急值四态/14 天质控记录/整改任务/不良事件闭环/临床路径（幂等+dry-run+系统级作用域不绕过授权）"
        },
        {
          "module": "合规",
          "title": "第三方声明：src/services/drg/OPENDRG-NOTICE.md + Apache-2.0 许可证原文随源码分发"
        }
      ]
    },
    {
      "version": "v2.224",
      "date": "2026-10-27",
      "title": "医院版商业官网上线：面向医院管理者的方案页 + 预约演示线索闭环",
      "changes": [
        {
          "module": "官网",
          "title": "新增医院版页面 /hospital：面向院长、医务科、病案科、信息科的完整方案页——医保结算/等级评审/免责留痕三驱动、六大方案模块、安全与合规（数据不出院/等保技术底座/权限留痕）、部署与对接、试点三步、采购 FAQ 与预约演示表单"
        },
        {
          "module": "官网",
          "title": "预约演示表单直连新接口 POST /v1/leads：前端本地校验 + 服务端二次校验（姓名/医院/电话格式、字段限长）+ 蜜罐字段静默丢弃机器人 + 按 IP 每小时 5 次限流"
        },
        {
          "module": "后端",
          "title": "商务线索台账 data/leads.jsonl（append-only，超 5MB 轮转）：只存联系方式与需求摘要，不进院级业务库与审计库；管理台 GET /v1/leads/admin/list 需 API_BEARER_TOKEN"
        },
        {
          "module": "管理台",
          "title": "运营后台新增「商务线索」卡片：累计/近7天统计、线索明细表（textContent 渲染防注入）、超过 500 条提示查文件"
        },
        {
          "module": "官网",
          "title": "首页与功能总览页导航新增「医院版方案」入口；sitemap.xml 收录 /hospital"
        },
        {
          "module": "测试",
          "title": "新增 test/leads.test.js 5 例（提交落库/校验/蜜罐/IP限流/管理端鉴权）全过"
        }
      ]
    },
    {
      "version": "v2.223",
      "date": "2026-10-27",
      "title": "会员在线支付上线：接入 zhifu 统一支付网关（微信扫码/H5/公众号自适应）",
      "changes": [
        {
          "module": "支付",
          "title": "激活页新增在线支付区：月卡 ¥39.9 / 季卡 ¥99 / 年卡 ¥299，跳转收银台自适应桌面扫码/手机 H5/微信内拉起，支付成功自动发放卡密并自动激活，全程无需联系管理员"
        },
        {
          "module": "支付",
          "title": "接入通千算智统一支付网关（zhifu.tongqiansuanzhi.com，微信支付公钥模式）：服务端代下单，API Key 只存服务端 .env，浏览器只拿收银台地址"
        },
        {
          "module": "支付",
          "title": "支付结果三通道互备：webhook 推送（HMAC-SHA256 验签 + 时间戳新鲜度防重放 + 原始 body 字节校验）、前端轮询（订单令牌防冒领）、网关实时查证兜底——任何一条链路断了都能完成交付"
        },
        {
          "module": "支付",
          "title": "订单台账 data/purchases.json：金额一致性防御（网关金额与套餐价不符拒绝发码）、webhook 重投幂等（只发一张码）、退款自动作废未用卡密"
        },
        {
          "module": "支付",
          "title": "下单按 IP 限流 10 次/小时（每单触发微信预下单接口，防第三方 API 放大）；网关未配置/会员关闭时支付区自动隐藏，不渲染死按钮"
        },
        {
          "module": "合规",
          "title": "退款处理如实分层：未激活的卡密自动作废；已激活后退款的令牌无法自动回收，台账标记 + 审计留痕转人工客诉路径（不做虚假自动化承诺）"
        },
        {
          "module": "测试",
          "title": "新增支付回归 8 项（验签正误/状态机/幂等/金额防御/限流/路由 e2e 全走本地桩网关零真实网络出口）+ 浏览器实测 2 项（27/27），全量 3519/3519"
        }
      ]
    },
    {
      "version": "v2.222",
      "date": "2026-10-26",
      "title": "第十轮三视角审计修复：微信录音P0 + 计费幂等断链 + 桌面端退出硬杀（28 项）",
      "changes": [
        {
          "module": "P0",
          "title": "修复微信内录音点「结束」完全失效：分段时长硬编码导致停止判定恒为假（死代码），录音在后台继续录满 5 分钟；现在 resolve 真实时长、停止信号可立即叫停分段循环，录音态 UI 也在录音期间正确显示（此前录完才显示「正在录音…」）"
        },
        {
          "module": "计费",
          "title": "修复 /v1/chat/completions 幂等键「先删后用」：chargeLedger 持久台账拿不到键，弱网并发重试双扣算力、双跑付费上游"
        },
        {
          "module": "计费",
          "title": "修复 /v1/note/dip/stats 纯查表白扣 1 点算力（v2.16 同族缺陷漏网点，兄弟端点均已免费）"
        },
        {
          "module": "计费",
          "title": "五个付费端点（icd/vision/chat/transcribe/upload）游客预扣延后到 body 解析后：幂等键带上 body/表单的 requestId，弱网重试不再每次白扣 1 次试用"
        },
        {
          "module": "计费",
          "title": "流式 WS 转写接入计费（账号 1 点算力/游客 1 次试用，通道建立失败退还）——此前 ENABLE_STREAM_WS 一开就是零计费旁路"
        },
        {
          "module": "计费",
          "title": "AI 日预算熔断补齐四条漏网通道：refine、图片识别、chat、预问诊出题/摘要"
        },
        {
          "module": "隐私",
          "title": "修复换账号登录（不登出直接登录）不清屏：上一位医生的病历草稿与患者信息留在屏幕上、内存档案会被写进新账号分区（数据串区）；患者姓名/性别/年龄/体重等一般项目纳入登出清屏清单"
        },
        {
          "module": "安全",
          "title": "修复语音指令反馈气泡 XSS：转写内容未转义直接进 innerHTML，可读走登录令牌（与已修复的 14823 同族漏网点）"
        },
        {
          "module": "安全",
          "title": "两处 <b> 富文本渲染改白名单净化（预防性：后续拼入患者姓名即成注入点）"
        },
        {
          "module": "安全",
          "title": "TOTP 重放防护改「命中时隙」口径：同一验证码在下一个 30 秒时隙内不能再用于登录/确认第二因子"
        },
        {
          "module": "限流",
          "title": "患者预问诊 questions 端点独立限流计数器（此前与 open 共享，诊所出口 NAT 下开码流量挤死患者提问）"
        },
        {
          "module": "限流",
          "title": "四个只增不清的限流/激励 Map 纳入 janitor（含匿名端点的 IP 表，防外部扫描撑大内存）；模板广场分享奖励每日封顶落盘（防进程重启重置后重复领奖）"
        },
        {
          "module": "可靠性",
          "title": "备份恢复：校验挪进写锁内（TOCTOU）；恢复后立即失效鉴权缓存（被恢复删除的 token 不再有 15 秒宽限期）"
        },
        {
          "module": "可靠性",
          "title": "情绪/周期任务/协作冲突三个本地分析端点补输入限长（此前 64MB 文本直达本地正则，事件循环阻塞型 DoS）"
        },
        {
          "module": "桌面端",
          "title": "修复每次退出都硬杀服务子进程：Windows 上 SIGTERM=TerminateProcess，审计冲刷/计费台账收尾永远不执行；改为 HTTP 令牌关停端点（/v1/admin/shutdown）触发服务端优雅关闭链，12 秒观察窗后兜底强杀"
        },
        {
          "module": "桌面端",
          "title": "修复注入 DATA_DIR 后审计日志被静默整体禁用（auditLogger 仍是旧的仅-cwd 校验，医疗敏感操作零留痕）；改用 dataRoot 白名单"
        },
        {
          "module": "桌面端",
          "title": "服务子进程启动即崩时快速失败（<1 秒）而非傻等 30 秒；llama-server 补 spawn error 监听/隐藏控制台窗口/日志进 main.log/启动期退出快速失败；本地 LLM 启动失败不再拖死整个应用（降级提示后继续）"
        },
        {
          "module": "桌面端",
          "title": "数据迁移半份失败可见化：成功写完成标记，目标非空但无标记时首启弹窗提醒「上次迁移可能只完成了一半」；主进程日志改缓冲异步写（不再每行同步写盘阻塞 UI）"
        },
        {
          "module": "桌面端",
          "title": "full 构建配置 asar:false + 删除 app.asar 打包根候选（该分支命中时 spawn cwd 指向文件必崩）"
        },
        {
          "module": "前端",
          "title": "院级控制台修复：备份表格挂错节点（firstChild 拿到说明段落 <p>，备份列表永远为空）；十余个面板统一容错——接口抖动显示「加载失败」卡片而非静默半渲染，快速切页签不再卡片交叠"
        },
        {
          "module": "前端",
          "title": "埋点设备标识改用持久化 installId（此前读全站从未写入的 deviceId 键，每次加载随机换新，设备维度统计全失真）；uiConfirm 防叠加（连点确认框不再永挂 Promise、泄漏键盘监听）"
        },
        {
          "module": "文档",
          "title": "桌面端已知缺口补 ELECTRON_RUN_AS_NODE=1 + 双击启动的结构性缺口（进程内无解，给出排障口诀与可行出路）"
        },
        {
          "module": "测试",
          "title": "新增 34 项回归测试（行为 10 + 静态闸门 24），全量 3511/3511 通过；三项审计视角覆盖后端计费链、前端竞态、桌面端真机形态"
        }
      ]
    },
    {
      "version": "v2.221",
      "date": "2026-10-25",
      "title": "桌面客户端 v0.1.2：品牌一致性修正 + 渲染崩溃可见化",
      "changes": [
        {
          "module": "桌面端",
          "title": "F-28 窗口标题从「Open Medical Scribe」改为「通千算智AI医疗系统」，与产品名/页面标题一致——此前标题栏永久显示旧英文名（page-title-updated 被拦截不跟随页面标题）"
        },
        {
          "module": "桌面端",
          "title": "F-29 新增渲染进程崩溃处理（render-process-gone）：页面崩溃时弹错误框告知用户原因，不再静默白屏/冻结让用户反复点鼠标"
        },
        {
          "module": "分发",
          "title": "下载页「本次版本能力」标题修正为 v0.1.1（此前误标 v0.1.0）；安装包 v0.1.2（含 F-28/F-29 修复）"
        },
        {
          "module": "质量",
          "title": "新增 F-28/F-29 护栏 2 条（禁旧品牌名、必须监听 render-process-gone）；全量测试 3477/3477"
        }
      ]
    },
    {
      "version": "v2.220",
      "date": "2026-10-25",
      "title": "桌面客户端 v0.1.1：首次启动引导 + www 主站下载中心上架",
      "changes": [
        {
          "module": "桌面端",
          "title": "F-27 首次启动引导：装完第一次打开，明确交代「病历、计费、审计数据只存当前用户目录」、备份方式、运行日志位置；若旧版本数据自动迁移成功或失败，都会当场告知去向——此前是静默迁移，用户只看到「病历不见了」"
        },
        {
          "module": "桌面端",
          "title": "引导弹窗改用异步 showMessageBox 并放在建窗之后。实测坐实：同步版会卡住主进程，DevTools/CDP 端点失联，自动化窗口实测超时（SIGTERM）。已加护栏禁止 showMessageBoxSync"
        },
        {
          "module": "分发",
          "title": "www 主站下载中心（tongqiansuanzhi.com/download/）上架「AI 医疗系统 · 桌面客户端」卡片，直链 yiliao 下载目录；改前已备份 index.html"
        },
        {
          "module": "分发",
          "title": "安装包 v0.1.1（154164305 字节，SHA-256 69fdaafd…05680）与 v0.1.0 一并保留，SHA256.txt 含历史版本可核对"
        },
        {
          "module": "质量",
          "title": "全量测试 3475/3475（新增 F-27 护栏 4 条）；窗口实测 7/7（含合成音频录音链路）；安装流程实测 6/6（安装/注册表/数据落点/覆盖升级保数据/卸载清程序/卸载后数据留存）"
        }
      ]
    },
    {
      "version": "v2.219",
      "date": "2026-10-25",
      "title": "桌面客户端安装包 v0.1.0 开放下载（Windows x64）",
      "changes": [
        {
          "module": "分发",
          "title": "Eir Scribe 桌面客户端 v0.1.0 安装包（154 MB，NSIS）开放下载：https://yiliao.tongqiansuanzhi.com/download/ 。内容与 Web 版 v2.218 同源同测（全量 3471/3471），含 F-24 启动环境自愈、F-25 加载工作台、F-26 数据目录迁用户目录三项加固"
        },
        {
          "module": "分发",
          "title": "新增下载页 /download/：安装三步、系统要求、SHA-256 校验（点击复制）、卸载/升级/日志位置说明，并如实标注安装包暂未代码签名（SmartScreen 提示未知发布者）"
        },
        {
          "module": "分发",
          "title": "SHA-256 校验表 /download/files/SHA256.txt：EirScribe-Setup-0.1.0.exe = 2b340e2c060addf0b8fe5a86fe92686ccd3002ad06677d6b0feb44b3dae2e214（154161577 字节），服务器端已复核一致"
        },
        {
          "module": "运维",
          "title": "nginx 新增 /download/ 静态直出（安装包 154 MB 不过 Node 代理，支持 Range 断点续传、Content-Disposition attachment）；已改 yiliao-https.conf 并保留备份，nginx -t 通过后 reload"
        },
        {
          "module": "说明",
          "title": "本次仅分发与运维变更，应用代码与 v2.218 完全一致（未改动 src/public/test）；版本号提升用于标记「桌面安装包首次开放下载」这一交付里程碑"
        }
      ]
    },
    {
      "version": "v2.218",
      "date": "2026-10-25",
      "title": "桌面端分发加固：安装包可卸载不丢病历 + 窗口真渲染 + 体积降 35%",
      "changes": [
        {
          "module": "桌面端",
          "title": "启动环境自愈：检测到被当成纯 Node 启动（ELECTRON_RUN_AS_NODE 被宿主注入）时不再静默退出，而是清掉变量自我重启——修复坐实了「双击没反应且一行日志都不写」的完整成因"
        },
        {
          "module": "桌面端",
          "title": "窗口改为加载工作台 /app。此前加载的是根路径，也就是官网营销首页：用户装完双击先看到一遍官网，还得自己找登录入口"
        },
        {
          "module": "数据",
          "title": "业务数据目录迁到用户数据目录（DATA_DIR），不再写在安装目录里：此前卸载/覆盖安装会连病历、计费、审计日志一起删，装到 Program Files 还会因无写权限而保存失败；老版本数据在升级时一次性搬移"
        },
        {
          "module": "数据",
          "title": "修数据目录白名单：FHIR 输出目录校验原本只认进程 cwd，导致上一条的「数据放用户目录」直接判非法、服务子进程启动即崩（实测错误：FHIR 输出目录非法）；现允许 cwd 与 DATA_DIR 双根，且补上分隔符比较，避免 /app-evil 被误判为在 /app 内"
        },
        {
          "module": "构建",
          "title": "安装包体积 236MB→154MB、安装后 823MB→465MB：剔除 onnxruntime-node 里的 linux/darwin/win-arm64 二进制与 Node 侧用不到的 onnxruntime-web；裁剪后已在打包树内跑通真实语音转写再出包"
        },
        {
          "module": "质量",
          "title": "新增桌面窗口内端到端实测（7 项断言）：真 Electron 窗口 + CDP 截图 + 渲染断言 + 用合成音频走通录音链路（getUserMedia→MediaRecorder→非空音频），并区分「未登录 401」与「契约/服务端错误」"
        },
        {
          "module": "质量",
          "title": "新增安装包生命周期实测（6 项断言）：静默安装、注册表登记、数据落点、覆盖升级保数据、卸载清程序、卸载后用户数据保留；三轮连续通过"
        },
        {
          "module": "质量",
          "title": "全量测试 3471/3471，发版预检 21/21，业务数据基线无变化，凭证扫描 0 命中"
        }
      ]
    },
    {
      "version": "v2.217",
      "date": "2026-10-25",
      "title": "累积批次上线：安全加固体系首次进入生产 + 前端模块化重构 + 工程护栏补齐",
      "changes": [
        {
          "module": "P0",
          "title": "修复工作台初始化被静默跳过（TDZ）——临床计算器 12 个页签整版不渲染、页面却看起来正常；已把启动入口移回文件末尾并加变量声明兜底"
        },
        {
          "module": "授权",
          "title": "统一授权策略层：角色常量 + 数据访问矩阵 + 对象级授权（危急值/整改任务/不良事件/临床路径），路由层不再信任客户端提交的角色与作用域"
        },
        {
          "module": "账号",
          "title": "双因子认证真实接通（登记→确认→启用→登录第二因子），此前 TOTP 与登录无关、密码正确即发令牌"
        },
        {
          "module": "数据",
          "title": "业务数据文件透明加密与迁移、审计日志防篡改哈希链、业务数据备份、文件保险库、计费并发幂等与退款矩阵"
        },
        {
          "module": "导出",
          "title": "CSV 公式注入（CWE-1236）防护：8 个导出统一走同一转义实现，以 = + - @ 制表符 回车开头的单元格加前导单引号"
        },
        {
          "module": "运维",
          "title": "补齐 SIGTERM/SIGINT 优雅关闭（此前注释声称已有、代码里没有）：先停新连接再排空，docker stop 实测 215ms 正常退出而非 10 秒强杀"
        },
        {
          "module": "构建",
          "title": "修复容器镜像在 Linux 上无法构建：onnxruntime-node 安装期会去下载 CUDA provider（受限网络返回 302 且脚本不跟随），改用跳过安装 + 构建期 require 自检；镜像已在 docker 29.8.2 真实构建并运行验证"
        },
        {
          "module": "前端",
          "title": "app.js 模块化：拆出账号分区、本机数据面板、12 个临床计算器、CSV 导出、病历文本结构化、儿科说明书批量解析 6 个模块；静态资源改为唯一路由表登记"
        },
        {
          "module": "引擎",
          "title": "合理用药扫描引擎拆为 11 个规则包 + 共享基座，并用 71 例黄金快照与生产/预演六场景差分证明规则输出零变化"
        },
        {
          "module": "合规",
          "title": "补齐源码树缺失的合规与交付资产（Electron 桌面端、CLI、离线转写、部署基础设施、MDR Class I 路线资料），并加目录存在性守卫防止整类资产再次丢失"
        },
        {
          "module": "质量",
          "title": "全量测试 3451/3451、真实浏览器断言 25/25、DOM 与请求序列快照网（31 步，指纹全等才算通过）、规则依据溯源清单（136 规则 / 1627 条目，标注 109 条待专家签字）"
        }
      ]
    },
    {
      "version": "v2.216",
      "date": "2026-10-24",
      "title": "医院采购视角院级能力 P0–P2b：18 项院级服务 + 等保三级 + HL7/FHIR + 私有化就绪",
      "changes": [
        {
          "module": "P0",
          "title": "院级基础——组织架构三级权限（院/科/人数据作用域）、危急值闭环台账、病案首页质控、科室质控统计与整改闭环、DRG 入组预判、审计防篡改哈希链、JSON 存储原子写+并发互斥锁"
        },
        {
          "module": "P1",
          "title": "院级业务——不良事件闭环、单病种质控（51 个国家级病种目录，10 个可自动判定）、科研队列提取、国考绩效看板、合理用药统计、FHIR R4 适配推送、电子病历分级评估"
        },
        {
          "module": "P2",
          "title": "私有化就绪——临床路径（模板/入径/步骤达标率）、SQLite 关系库后端（node:sqlite 零原生依赖，DB_BACKEND=sqlite 切换）、私有化部署手册"
        },
        {
          "module": "P2b",
          "title": "对接与等保——HL7 v2.6 适配（MDM^T02/ORU^R01 + MLLP 帧 + 字段转义）、等保三级 AES-256-GCM 存储加密、TOTP 双因子（RFC6238）"
        },
        {
          "module": "前端",
          "title": "院级管理控制台 /hospital-admin 15 个功能标签页（独立登录），含 HL7 推送、加密、双因子面板"
        },
        {
          "module": "质量",
          "title": "全量测试 3219/3219 通过；端到端演示 scripts/hospital-suite-demo.mjs 17 环节全通过；v177 用量落盘偶发 flake 改轮询根治"
        }
      ]
    },
    {
      "version": "v2.215",
      "date": "2026-10-24",
      "title": "R242 药物性狼疮（DIL）风险检测（5条规则+兜底）",
      "changes": [
        {
          "module": "R242",
          "type": "feature",
          "description": "新增药物性狼疮风险检测模块——填补SLE+DIL诱发药4种高危药全部未检出的缺口：① 高危DIL药(普鲁卡因胺/肼屈嗪/米诺环素)+SLE→狼疮活动爆发(critical)；② 高危DIL药(无SLE)→DIL风险(high)；③ 抗TNF-α(英夫利昔/阿达木)+SLE→矛盾性狼疮(critical，禁用)；④ 中危DIL药(异烟肼/磺胺/氯丙嗪/HCTZ/奎尼丁/甲基多巴/青霉胺)+SLE→狼疮活动(high)；⑤ 中危DIL药(无SLE)→基线ANA推荐(medium)。含SLE用药安全审查兜底"
        },
        {
          "module": "R242-test",
          "type": "test",
          "description": "新增 riskScanR242.test.js（10例断言），覆盖普鲁卡因胺+SLE critical/肼屈嗪无SLE high/抗TNF矛盾性狼疮/磺胺+SLE high/异烟肼 medium/综合场景/阴性/抗TNF无SLE不触发/SLE+关节痛标注/兜底info。全量测试 3064/3064 通过（155套件）"
        }
      ]
    },
    {
      "version": "v2.214",
      "date": "2026-10-24",
      "title": "R241 血清素综合征多药叠加风险检测（5条规则+兜底）",
      "changes": [
        {
          "module": "R241",
          "type": "feature",
          "description": "新增血清素综合征多药叠加风险检测模块——填补SSRI+曲坦+曲唑酮+曲马多多药联用缺口：① SSRI/SNRI+MAOI→致命性血清素综合征(critical，绝对禁忌，14天清洗期)；② SSRI/SNRI+曲坦→血清素综合征(critical，FDA 2006年安全警告)；③ 3+种血清素能药→叠加毒性(critical，Hunter标准：≥2种即可触发)；④ 曲唑酮(SARI)+SSRI/SNRI→血清素叠加+过度镇静(high)；⑤ 2种血清素能药→风险(high)。覆盖SSRI×6、SNRI×4、MAOI×5、曲坦×7、曲唑酮、曲马多、利奈唑胺、亚甲蓝、圣约翰草、丁螺环酮、昂丹司琼、芬太尼、哌替啶、右美沙芬、锂盐共31种血清素能药物。含单药监测提醒兜底"
        },
        {
          "module": "R241-test",
          "type": "test",
          "description": "新增 riskScanR241.test.js（10例断言），覆盖SSRI+MAOI绝对禁忌/SSRI+曲坦FDA警告/3药叠加/2药联用/曲唑酮+SSRI/4药综合/阴性对照/圣约翰草OTC/SNRI+曲坦/单药兜底。全量测试 3054/3054 通过（154套件）"
        }
      ]
    },
    {
      "version": "v2.213",
      "date": "2026-10-24",
      "title": "R240 透析患者用药风险检测（6条规则+兜底）",
      "changes": [
        {
          "module": "R240",
          "type": "feature",
          "description": "新增透析患者用药风险检测模块——填补4个透析特异性缺口：① ACEi/ARB+透析→透前低血压(high，IDH发生率20-35%)；② β受体阻滞剂+透析→低血压+水溶性药物透后药效不足(high)；③ 经透析清除药物（头孢类/万古霉素/氨基糖苷/锂盐/茶碱/MTX）→需透后补药(high)；④ NSAID+透析→残余肾功能不可逆丧失(critical，RRF每↓1mL/min死亡率↑40%)；⑤ 二甲双胍+透析→乳酸酸中毒(critical，透析间期蓄积致死)；⑥ 磷结合剂（碳酸钙/司维拉姆/镧）→药物吸收干扰(medium)。含透析用药安全审查兜底提醒。覆盖血液透析/腹膜透析/ESRD/CKD 5期等识别关键词"
        },
        {
          "module": "R240-test",
          "type": "test",
          "description": "新增 riskScanR240.test.js（10例断言），覆盖ACEi透前低血压/β阻滞剂透前低血压+清除/头孢吡肟透后补药/NSAID残余肾功能丧失/二甲双胍乳酸酸中毒/磷结合剂药物相互作用/综合场景三药联用/阴性对照/腹膜透析/兜底info。全量测试 3044/3044 通过（153套件）"
        }
      ]
    },
    {
      "version": "v2.212",
      "date": "2026-10-23",
      "title": "R239 重症肌无力用药风险检测（5条规则+兜底）",
      "changes": [
        {
          "module": "R239",
          "type": "feature",
          "description": "新增重症肌无力（MG）用药风险检测模块——填补3个FDA黑框警告级缺口：① 氨基糖苷类+MG→肌无力危象/呼吸衰竭(critical，FDA黑框)；② 氟喹诺酮类+MG→肌无力危象(critical，FDA黑框，2008年)；③ β受体阻滞剂+MG→肌无力加重(high)；④ 镁盐+MG→神经肌肉阻滞/呼吸衰竭(high)；⑤ 肌松剂+MG→延长性麻痹/无法脱机(critical，麻醉场景)。含MG用药安全审查兜底提醒"
        },
        {
          "module": "R239-test",
          "type": "test",
          "description": "新增 riskScanR239.test.js（10例断言），覆盖氨基糖苷critical/氟喹诺酮critical/β受体阻滞剂high/镁盐high/肌松剂critical/综合场景/阴性对照/MG危象/莫西沙星检出/兜底info。全量测试 3034/3034 通过（152套件）"
        }
      ]
    },
    {
      "version": "v2.211",
      "date": "2026-10-23",
      "title": "R238 肝硬化用药风险检测（5条规则+兜底）+ Beers上限扩展",
      "changes": [
        {
          "module": "R238",
          "type": "feature",
          "description": "新增肝硬化用药风险检测模块——填补肝硬化Child-Pugh B/C场景5个致命/高危缺口：① APAP+肝硬化→急性肝衰竭(critical，GSH储备↓50-80%，美国急性肝衰竭46%由APAP引起)；② NSAID+肝硬化→肝肾综合征+消化道出血(high，PG代偿性扩张入球小动脉被阻断)；③ PPI+肝硬化→自发性细菌性腹膜炎SBP(high，OR 2.77)；④ 苯二氮卓类+肝硬化→肝性脑病诱发/加重(high，半衰期延长至80-100h)；⑤ 利尿剂+低钾+肝硬化→肝性脑病诱发(high，肾脏产氨↑)。含肝硬化用药安全综合审查兜底提醒。Child-Pugh分级自动评估(A/B/C)"
        },
        {
          "module": "R238-test",
          "type": "test",
          "description": "新增 riskScanR238.test.js（10例断言），覆盖APAP肝衰竭/NSAID肾衰出血/PPI SBP/苯二氮脑病/利尿剂低钾脑病/利尿剂腹水监测/综合场景三药联用/阴性对照/Child-Pugh C绝对禁忌/兜底info。全量测试 3024/3024 通过（151套件）"
        }
      ]
    },
    {
      "version": "v2.210",
      "date": "2026-10-23",
      "title": "R237 妊娠期药物禁忌风险检测（10条规则+兜底）+ R171 测试适配",
      "changes": [
        {
          "module": "R237",
          "type": "feature",
          "description": "新增妊娠期药物禁忌风险检测模块——填补妊娠场景4个致命致畸缺口：① 华法林+妊娠→胎儿华法林综合征(critical，骨骺点状钙化/鼻发育不全，孕6-12周最高危)；② ACEi/ARB+妊娠→胎儿肾衰竭/羊水过少(critical，FDA D类)；③ 甲氨蝶呤+妊娠→堕胎/强致畸(critical，FDA X类)；④ 丙戊酸钠+妊娠→神经管缺陷(critical，脊柱裂1-2%)；⑤ 锂盐+妊娠→Ebstein畸形(high)；⑥ 氟喹诺酮+妊娠→软骨损伤(high)；⑦ SSRI+妊娠→PPHN/新生儿戒断(high)；⑧ 四环素+妊娠→牙齿/骨骼(high)；⑨ 利巴韦林+妊娠→强致畸(critical，停药后6个月仍致畸)；⑩ 异维A酸+妊娠→颅面/心脏/CNS畸形(critical，停药后1个月仍致畸)。含妊娠期用药安全审查兜底提醒"
        },
        {
          "module": "R237-test",
          "type": "test",
          "description": "新增 riskScanR237.test.js（12例断言），覆盖华法林致畸/ACEi胎儿肾衰/甲氨蝶呤堕胎/丙戊酸钠神经管/锂盐Ebstein/氟喹诺酮软骨/SSRI PPHN/利巴韦林致畸/异维A酸致畸/综合场景/阴性/文本检出。R171旧测试适配（锂盐+妊娠同主题去重由R237更具体版本代表）。全量测试 3014/3014 通过（150套件）"
        }
      ]
    },
    {
      "version": "v2.209",
      "date": "2026-10-23",
      "title": "R236 Beers 上限 4→8 + R233-b 锂盐 eGFR 阈值 <50→<60（KDIGO 2024）",
      "changes": [
        {
          "module": "R236-a",
          "type": "fix",
          "description": "Beers 标准模块 MAX_RESULTS 从 4 提升到 8——修复老年极限场景（7+药）50% Beers 违反被截断的漏报问题（PER_SOURCE_CAP=3 在管线层面仍控制席位）"
        },
        {
          "module": "R236-b",
          "type": "fix",
          "description": "新增 hasCKDLithium 变量（eGFR<60），锂盐+CKD 规则（Rule 3）改用此阈值——KDIGO 2024 建议锂盐在 eGFR<60 时减量 25-50%，此前 eGFR<50 阈值漏报 50-59 范围"
        },
        {
          "module": "R236-c",
          "type": "fix",
          "description": "Rule 3 锂盐蓄积检测改用 hasCKDLithium（eGFR<60），地高辛仍使用 hasCKDSignificant（eGFR<50）——两药肾脏清除阈值差异化"
        }
      ]
    },
    {
      "version": "v2.208",
      "date": "2026-10-23",
      "title": "R235 免疫抑制剂毒性风险检测（6条规则+兜底）",
      "changes": [
        {
          "module": "R235",
          "type": "feature",
          "description": "新增免疫抑制剂毒性风险检测模块——填补肾移植+CMV场景4个致命/高危缺口：① 他克莫司浓度>15ng/mL→急性肾毒性+神经毒性(critical)；② 更昔洛韦+骨髓抑制→致命性粒缺/全血细胞减少(critical，ANC<500需停药+G-CSF)；③ 免疫抑制剂+白细胞减少→机会性感染高风险(critical，PCP/CMV/曲霉菌)；④ CNI+CKD→肾毒性评估(high)；⑤ MMF/硫唑嘌呤+肝功能异常→肝毒性(high)；⑥ CNI+CYP3A4抑制剂/诱导剂→浓度异常(high)。含免疫抑制剂监测计划兜底提醒"
        },
        {
          "module": "R235-test",
          "type": "test",
          "description": "新增 riskScanR235.test.js（11例断言），覆盖他克莫司浓度超标/更昔洛韦骨髓抑制/免疫抑制+白细胞减少/CNI+CKD/MMF肝毒性/CYP3A4相互作用/兜底/阴性/综合场景。全量测试 3002/3002 通过（149套件）"
        }
      ]
    },
    {
      "version": "v2.207",
      "date": "2026-10-23",
      "title": "R234 抗栓药物组合风险检测（6条规则+兜底）+ R234 测试适配",
      "changes": [
        {
          "module": "R234",
          "title": "新增抗栓药物组合风险检测模块——填补抗凝+抗血小板+NSAID极限场景3个致命缺口：① 三联抗栓(OAC+DAPT)→极高危出血(critical，大出血年发生率10-15%，WOEST/AUGUSTUS证据支持降阶)；② 华法林+阿司匹林→致命性出血(OR 2.0, critical)；③ DOAC+阿司匹林→出血风险(AFIRE试验证据, high)；④ 华法林+氯吡格雷→出血风险(双联方案, high)；⑤ 抗凝+NSAID→出血协同(高)；⑥ DAPT+PCI→疗程监测(medium)。含抗栓药物监测计划兜底提醒",
          "type": "feature"
        },
        {
          "module": "R234-test",
          "title": "新增 riskScanR234.test.js（11例断言），覆盖三联抗栓/华法林+阿司匹林/DOAC+阿司匹林/华法林+氯吡格雷/抗凝+NSAID/DAPT疗程/兜底/阴性/综合场景。R234-5/R234-10适配华法林+NSAID同主题去重（由R232更具体的critical版本代表）。全量测试 2991/2991 通过（148套件）",
          "type": "test"
        }
      ]
    },
    {
      "version": "v2.206",
      "date": "2026-10-23",
      "title": "R233 窄治疗窗药物毒性风险检测（8条规则+兜底）+ R187 测试适配",
      "changes": [
        {
          "module": "R233",
          "title": "新增窄治疗窗药物毒性风险检测模块——填补精神科+老年极限场景5个致命缺口：① 地高辛+低钾→致命性心律失常(critical，低钾使心肌敏感性增加2-3倍)；② 地高辛+CKD→蓄积中毒(critical，75%经肾排泄，eGFR<50半衰期延长至3.5-5天)；③ 锂盐+CKD→蓄积中毒(critical，95%经肾排泄，治疗窗0.6-1.2mmol/L)；④ 锂盐+SSRI/SNRI/MAOI/曲坦→血清素综合征(critical，双重5-HT增强)；⑤ 氯氮平→粒细胞缺乏症(critical应急/高风险ANC监测，1-2%发生率致死率10-16%)；⑥ 地高辛+P-gp抑制剂(胺碘酮/维拉帕米/奎尼丁)→浓度飙升70-100%(high)；⑦ 锂盐+NSAID/ACEi/利尿剂→血锂升高25-60%(high)；⑧ 地高辛+老年+低体重→中毒高危(medium)。含窄治疗窗药物监测计划兜底提醒",
          "type": "feature"
        },
        {
          "module": "R233-test",
          "title": "新增 riskScanR233.test.js（12例断言），覆盖地高辛低钾/CKD蓄积/P-gp抑制、锂盐CKD蓄积/5-HT综合征/药物相互作用、氯氮平粒缺应急/ANC监测、老年高危、兜底/阴性/综合场景。R187旧测试适配（锂盐+NSAID同主题去重由R233更具体版本代表）。全量测试 2980/2980 通过（147套件）",
          "type": "test"
        }
      ]
    },
    {
      "version": "v2.205",
      "date": "2026-10-23",
      "title": "R232 致命性药物组合联用检测（6条规则）+ R168/R183 严重度适配",
      "changes": [
        {
          "module": "R232",
          "title": "新增致命性药物组合联用检测模块——6条规则填补压力测试中发现的3个完全未检出缺口+3个严重度提升：华法林+SSRI→致命GI出血(OR 3.6, critical)、CKD+别嘌醇未减量→致死性DRESS/SJS超敏综合征(critical)、阿仑膦酸钠+CKD(eGFR<35)→禁忌使用(high)、华法林+胺碘酮→INR飙升致命出血(critical)、苯二氮+阿片→CNS呼吸抑制致死FDA黑框(critical)、华法林+NSAID→致命GI出血RR 13.3(critical，从R168/R183的high提升)",
          "type": "feature"
        },
        {
          "module": "R232-test",
          "title": "新增 riskScanR232.test.js（11例断言），覆盖全部6条规则+多critical并发+阴性场景。R168/R183 旧测试适配华法林+NSAID critical 严重度提升。全量测试 2968/2968 通过（146套件）",
          "type": "test"
        }
      ]
    },
    {
      "version": "v2.204",
      "date": "2026-10-23",
      "title": "R231-d critical 严重度全链路修复（level/highCount/infoCount/lowItems/buildSummary）",
      "changes": [
        {
          "module": "R231-d",
          "title": "critical 严重度全链路修复：① level 字段现在正确返回 \"critical\"（此前错误返回 \"high\"）；② 新增 criticalCount 字段；③ highCount 不再误计 critical 项；④ infoCount 正确排除 critical；⑤ lowItems 过滤器排除 critical 避免低危轮重复处理；⑥ buildSummary 新增 critical level 专属摘要（「⚠️ 发现致命级风险…请立即逐项核对并处理」）",
          "type": "fix"
        }
      ]
    },
    {
      "version": "v2.203",
      "date": "2026-10-23",
      "title": "R231 QT延长多药叠加风险检测 + 展示管线critical优先轮",
      "changes": [
        {
          "module": "R231",
          "title": "新增QT延长多药叠加风险检测模块——5条规则填补多药QT累积评估缺口：≥3种QT药物联用→尖端扭转型室速紧急风险(critical，含电解质合并)、2种QT药物→高风险(high)、QT药物+电解质紊乱→协同风险(high)、单药+高危人群→加强监测(medium)、单药无高危→监测计划兜底(info)。覆盖胺碘酮/西酞普兰/莫西沙星/氟哌啶醇/美沙酮/索他洛尔等20种QT延长药物",
          "type": "feature"
        },
        {
          "module": "R231-b",
          "title": "展示管线新增critical优先轮——修复severity=\"critical\"被错归低危轮的引擎级缺陷。此前管线只识别high/medium/低危三档，critical项在16席被high占满后被静默截断（三联QT致死性心律失常=漏报）。现critical无条件占TOP_TYPES之后、high之前",
          "type": "fix"
        },
        {
          "module": "R231-c",
          "title": "三联+电解质紊乱场景：电解质信息合并到紧急项detail/advice（不另产独立electrolyte_synergy项），避免关键临床信息被管线截断丢失",
          "type": "fix"
        },
        {
          "module": "R231-test",
          "title": "新增 riskScanR231.test.js（9例断言），覆盖三联紧急/双药high/电解质协同/单药高危/兜底/阴性对照/合并信息完整性。全量测试 2957/2957 通过（145套件）",
          "type": "test"
        }
      ]
    },
    {
      "version": "v2.202",
      "date": "2026-10-23",
      "title": "药物性器官损伤系列续：R230 药物性呼吸系统风险检测（5条规则+监测兜底）",
      "changes": [
        {
          "module": "R230",
          "title": "新增药物性呼吸系统风险检测模块——5条规则填补4个关键缺口：ACEi→干咳/血管性水肿（medium）、阿片类→呼吸抑制（老年人/COPD/联用苯二氮䓬高危，high）、博来霉素→肺纤维化（终身累积剂量限制，high）、甲氨蝶呤→药物性肺炎（亚急性超敏反应，high）、替诺福韦→Fanconi综合征/肾小管损伤（medium）。含呼吸系统药物监测计划兜底提醒",
          "type": "feature"
        },
        {
          "module": "R230-test",
          "title": "新增 riskScanR230.test.js（10例断言），覆盖全部5条规则+监测兜底+阴性场景。全量测试 2948/2948 通过（144套件）",
          "type": "test"
        }
      ]
    },
    {
      "version": "v2.201",
      "date": "2026-10-23",
      "title": "药物性器官损伤系列续：R228 药物性代谢/酸碱紊乱风险检测（6条规则）",
      "changes": [
        {
          "module": "R228",
          "title": "新增药物性代谢/酸碱紊乱风险检测模块——6条规则填补3个检测缺口：噻嗪类→低钠血症（老年人/低体重高危，high）、袢/噻嗪利尿剂→低钾血症（地高辛联用风险倍增，high）、碳酸酐酶抑制剂→代谢性酸中毒（碳酸氢盐丢失，medium）、糖皮质激素→高脂血症（甘油三酯+LDL↑，medium）、顺铂→低镁血症（肾小管损伤累积性，high）、他汀类→新发糖尿病风险（血糖监测，info）",
          "type": "feature"
        },
        {
          "module": "R228-test",
          "title": "新增 riskScanR228.test.js（8例断言），覆盖全部6条规则+阴性场景。全量测试 2938/2938 通过（143套件）",
          "type": "test"
        }
      ]
    },
    {
      "version": "v2.200",
      "date": "2026-10-22",
      "title": "药物性器官损伤系列续：R227 药物性眼损伤风险检测（12条规则+监测兜底）",
      "changes": [
        {
          "module": "R227",
          "title": "新增药物性眼损伤风险检测模块——12条规则覆盖：糖皮质激素→青光眼/白内障、羟氯喹/氯喹→视网膜病变（牛眼黄斑）、胺碘酮→角膜微沉积+视神经病变、乙胺丁醇→视神经炎（TB方案high）、异维A酸→干眼/夜盲/假性脑瘤、抗VEGF→眼内炎/视网膜脱离（high）、α受体阻滞剂→术中虹膜松弛综合征(IFIS)、托吡酯→急性闭角型青光眼（high）、他莫昔芬→视网膜/角膜病变、PDE5抑制剂→NAION、伏立康唑→光视症/色觉异常、吩噻嗪类→角膜/晶状体色素沉着。含眼科监测计划兜底提醒",
          "type": "feature"
        },
        {
          "module": "R227-test",
          "title": "新增 riskScanR227.test.js（14例断言），覆盖全部12条规则+监测兜底+阴性场景。全量测试 2930/2930 通过（142套件）",
          "type": "test"
        }
      ]
    },
    {
      "version": "v2.199",
      "date": "2026-10-22",
      "title": "核心检测加固：source 字段统一化 + 正则性能优化 + 过敏正则边界修复 + R102 软失败修复",
      "changes": [
        {
          "module": "R226-a",
          "title": "核心检测函数统一补 source 字段——checkNegation(R1)/checkAllergyQuality(R2)/checkLaterality(R3)/checkUnsourced(R4)/checkNumbers(R5)/checkDosage(R6)/checkPolypharmacyRisk(R102) 产出的 item 此前缺 source 字段，导致 suppressed 透明展示时 source 显示为 undefined。统一补齐后所有核心模块的预警项均可追溯来源",
          "type": "fix"
        },
        {
          "module": "R226-b",
          "title": "findNegatedObjects 正则预编译——NEGATION_WORDS.join('|') 提升为模块级常量 NEGATION_WORDS_ALT，避免每次调用重复拼接；collectNumbers 去重从 Array.includes O(n) 改为 Set.has O(1)。全量测试耗时从 ~19s 降至 ~16.5s（↑13%）",
          "type": "performance"
        },
        {
          "module": "R226-c",
          "title": "ALLERGY_RE 字符类排除括号——原 [^\\s，。；：、,] 会把【】[] 匹配进过敏物名（如「【青霉素】过敏」→ 过敏物名含括号），现补 \\u3010\\u3011\\[\\] 排除",
          "type": "fix"
        },
        {
          "module": "R102",
          "title": "修复 R102 多重用药检测软失败——checkPolypharmacyRisk 补 source:'R102' 后，polypharmacy-risk 项不再因缺 source 字段被管线截断，6/6 测试全部 PASS",
          "type": "fix"
        },
        {
          "module": "测试",
          "title": "全量 2916/2916 通过（141 套件），R102 软断言全部转为 PASS",
          "type": "test"
        }
      ]
    },
    {
      "version": "v2.198",
      "date": "2026-10-22",
      "title": "展示管线加固：去重排序性能优化 + 中危保底席位 + 残留调试文件清理",
      "changes": [
        {
          "module": "R225-a",
          "title": "dedupByTopic 排序性能优化——kept 恢复管线序时 indexOf O(n²) → indexMap O(1)；洪水场景（16+ 项）排序比较函数从每次 O(n) 降至 O(1)，总排序 O(n log n)",
          "type": "performance"
        },
        {
          "module": "R225-b",
          "title": "中危保底席位 MEDIUM_RESERVED=4——复杂多药场景（7药+75岁+多合并症）实测 21 条不同主题 high 占满 16 席，中危预警（肾功能调整/INR监测/地高辛浓度等）完全不可见。当 medium≥6 且 high 已占超 12 席时，回退末尾 high 项为中危预留 4 席。实测 complex polypharmacy 场景 high 16→12、medium 0→4 入席",
          "type": "feature"
        },
        {
          "module": "清理",
          "title": "删除 3 个残留调试副本（riskScan_patched.js/riskScan_debug.js/riskScan_debug2.js，各~480KB）；修复 Line 416 注释重复",
          "type": "chore"
        },
        {
          "module": "测试",
          "title": "新增 test/riskScanR225.test.js（8 例：去重排序管线序保持/中危保底生效/high 不被移除/来源多样性/低中危不触发/严重度层级覆盖/洪水回归）；全量测试 2916/2916 通过（141 套件）",
          "type": "test"
        }
      ]
    },
    {
      "version": "v2.197",
      "date": "2026-10-22",
      "title": "扫描展示机制升级：同主题 high 洪水去重 + 左旋甲状腺素规则修正",
      "changes": [
        {
          "module": "R224-a",
          "title": "同主题 high 洪水去重——苯二氮+阿片场景实测 16 条 high 仅约 6 个主题（呼吸抑制×4/跌倒认知×4/依赖×3），重复报警占光 16 席后中危预警被整体截断。新增主题判定（type 分词+同义词归一+停用词+患者面保护）与分组去重：仅当 high 条目>8（真洪水）时启动，每组保留最具体者（token 多者优先，不可逆耳毒性不再被通用版抑制），被合并项透明记录于返回体 suppressed 字段。实测洪水场景 high 16→11、中危 0→5 条入席",
          "type": "feature"
        },
        {
          "module": "R224-b",
          "title": "左旋甲状腺素规则修正+补缺——①Rule 8 原以裸 tsh 触发「过量→甲亢」警告，方向错误（TSH 升高实为替代不足），已改为仅压低 TSH 的证据触发；②新增 Rule 8b 替代不足规则（LT4 治疗中 TSH 未达标→先查依从性/吸收/相互作用再盲目加量）；③补「左甲状腺素」常见写法关键词（原只认「左旋甲状腺素」）",
          "type": "fix"
        },
        {
          "module": "测试",
          "title": "新增 test/riskScanR224.test.js（9 例：洪水去重/主题不过度合并/suppressed 透明性/独立主题互不抑制）；12 个既有测试文件共 16 例改用去重感知断言助手 topicItem（具体项入席或因洪水进 suppressed 且同主题有代表，兼顾展示层去重与规则触发回归敏感性）；全量测试 2910/2910 通过",
          "type": "test"
        }
      ]
    },
    {
      "version": "v2.196",
      "date": "2026-10-22",
      "title": "药物性器官损伤系列完结（肺/耳/胃肠/精神/肌骨/甲状腺）",
      "changes": [
        {
          "module": "R218",
          "title": "药物性肺损伤风险检测——胺碘酮肺炎/博来霉素纤维化/MTX超敏肺炎/呋喃妥因/NSAIDs嗜酸肺炎/ICI免疫性肺炎/mTOR/TKI-ILD/生物制剂ILD/烷化剂纤维化/肺水肿/肺栓塞/肺动脉高压/胸膜积液/肺泡出血/结节病样/COP/高浓度吸氧/IPF/监测计划共20条规则",
          "type": "feature"
        },
        {
          "module": "R219",
          "title": "药物性耳毒性风险检测——氨基糖苷/顺铂/卡铂/袢利尿剂/万古霉素/大环内酯/水杨酸/奎宁氯喹/抗病毒药/铁螯合剂/滴耳液/CNI耳鸣/细胞毒/β内酰胺/耳鸣鉴别/突发聋急症/肾-耳毒性叠加/线粒体基因m.1555A>G一针致聋/围手术期/基线听力/康复转诊共21条规则",
          "type": "feature"
        },
        {
          "module": "R220",
          "title": "药物性胃肠/胰腺损伤风险检测——NSAIDs溃疡出血/激素溃疡/抗凝出血/DAPT/抗血小板+SSRI/化疗黏膜炎/伊立替康腹泻/CDAD/阿片便秘/抗胆碱/二甲双胍/阿卡波糖/秋水仙碱/药物性胰腺炎/GLP-1/药物性食管炎/泻药滥用/DILI前驱/穿孔/PPI评估共20条规则",
          "type": "feature"
        },
        {
          "module": "R221",
          "title": "药物性精神障碍风险检测——激素精神症状/抗胆碱谵妄/苯二氮䓬老年风险/阿片镇静撤药/SSRI激活转躁自杀/NMS/抗精神病代谢EPS-QT/停药综合征/β阻滞剂情绪/多巴胺能ICD/AED精神/催眠药异常睡眠/兴奋剂/抗菌药精神症状/酒精相互作用/锂盐中毒/ICU-PICS/肿瘤治疗精神/自杀意念安全评估/多重用药/基线检查共21条规则",
          "type": "feature"
        },
        {
          "module": "R222",
          "title": "药物性肌肉骨骼损伤风险检测——他汀肌病横纹肌溶解/贝特肌病/喹诺酮肌腱断裂/激素骨坏死/双膦酸盐MRONJ非典型骨折/地诺单抗反跳/AI-GnRH骨丢失/AED骨软化/PPI长期/其他肌病神经病/MTX周疗/肌痛鉴别/跌倒骨折高危/骨保护评估/降尿酸药/牙龈增生/关节腔注射/肿瘤骨保护/近端肌无力鉴别/基线评估共20条规则",
          "type": "feature"
        },
        {
          "module": "R223",
          "title": "药物性甲状腺损伤风险检测——胺碘酮甲状腺/锂盐甲减/干扰素甲状腺炎/ICI甲状腺irAE垂体炎/TKI甲减/抗甲状腺药毒性/碘源性甲亢/L-T4过量/吸收相互作用/妊娠甲减/亚临床甲减/检测干扰/甲状腺危象/黏液水肿昏迷/结节碘131随访/替代剂量调整/代谢影响/监测缺失/胺碘酮多系统/抗体风险分层/检查完整性共21条规则",
          "type": "feature"
        },
        {
          "module": "R218-f",
          "title": "扫描结果展示机制重构——MAX_ITEMS 12→16；分源轮排（per-source round-robin）每源≤3席替代顺序扫描，解决后置模块中危项被前排模块挤光的系统性漏报；低危轮拆分两相（具体可行动提醒优先于通用监测提醒），修复R189术后抗凝恢复提醒被6条通用监测提醒挤占的回归",
          "type": "improvement"
        },
        {
          "module": "R218-e",
          "title": "全库大小写缺陷类批量修复——约360处大写关键词匹配小写化文本（flat.includes('INR')等）永不命中的死代码/误报修复：149处直接includes转小写、170处数组includes转小写、44处短缩写词边界化（\\bpe\\b/\\bhit\\b等）、5处否定条件手动修复",
          "type": "fix"
        },
        {
          "module": "R218-c",
          "title": "R183重复用药规则修复——同药重复要求出现≥2次且排除过敏/禁忌行，修复单次出现即误报（R70-d阴性总检红）",
          "type": "fix"
        },
        {
          "module": "R218-b",
          "title": "恢复R179管线调用（曾整行丢失致1200行皮肤/眼科/耳鼻喉规则成死代码）；补回R197血液模块5条丢失规则、R193呼吸模块7处覆盖；R217地高辛关键词扩展；R155疗程守卫（用药<5天不报停药建议）",
          "type": "fix"
        },
        {
          "module": "测试",
          "title": "全量测试2900/2900通过（新增R218-R223六个测试文件共123例；重写R177/R180/R171/R72适配现行规则）",
          "type": "test"
        }
      ]
    },
    {
      "version": "v2.195",
      "date": "2026-10-22",
      "title": "药物性皮肤损伤风险检测",
      "changes": [
        {
          "module": "R216",
          "title": "药物性皮肤损伤风险检测——别嘌醇HLA-B*5801/卡马西平HLA-B*1502 SJS/TEN、磺胺DRESS、拉莫三嗪+丙戊酸SJS、万古霉素红人综合征/LAGA、氟喹诺酮光敏、EGFR抑制剂痤疮样皮疹、苯妥英DRESS/牙龈增生、青霉素荨麻疹、胺碘酮蓝灰色素沉着、华法林皮肤坏死、免疫检查点抑制剂皮肤irAE、四环素光敏/牙齿变色、固定型药疹、利福平体液着色、化疗手足综合征、头孢血清病样反应等20条规则",
          "type": "feature"
        }
      ]
    },
    {
      "version": "v2.194",
      "date": "2026-10-22",
      "title": "药物性神经系统损伤风险检测",
      "changes": [
        {
          "module": "R215",
          "title": "药物性神经系统损伤风险检测——苯二氮卓+阿片类FDA黑框呼吸抑制、抗精神病药EPS/NMS、SSRI+MAOI血清素综合征、异烟肼B6缺乏周围神经病变、氟喹诺酮CNS毒性/癫痫、锂盐神经毒性、甲硝唑周围神经/小脑毒性、长春新碱剂量限制性神经病变、抗胆碱能老年人谵妄、曲马多癫痫阈值降低、甲氧氯普胺迟发性运动障碍FDA黑框、丙戊酸钠高氨血症脑病、糖皮质激素精神症状、β阻滞剂CNS效应、抗癫痫药自杀风险FDA警告、多巴胺激动剂冲动控制障碍等20条规则",
          "type": "feature"
        }
      ]
    },
    {
      "version": "v2.193",
      "date": "2026-10-22",
      "title": "药物性血液系统损伤风险检测",
      "changes": [
        {
          "module": "R214",
          "title": "药物性血液系统损伤风险检测——氯霉素再生障碍性贫血、甲氨蝶呤巨幼红细胞贫血/全血细胞减少、G6PD缺乏+氧化性药物溶血、肝素诱导血小板减少症(HIT)、利奈唑胺骨髓抑制、抗甲状腺药粒细胞缺乏、华法林凝血障碍/出血、氯氮平粒细胞缺乏REMS、卡马西平再障/粒细胞缺乏、磺胺类多重血液毒性、高铁血红蛋白血症、去甲基化药物全血细胞减少、替格瑞洛出血、化疗中性粒细胞减少性发热、利妥昔单抗B细胞耗竭/HBV再激活、奎宁TTP、达比加群出血蓄积、新型口服抗凝药逆转剂、柳氮磺胺吡啶血液毒性等20条规则",
          "type": "feature"
        }
      ]
    },
    {
      "version": "v2.192",
      "date": "2026-10-22",
      "title": "药物性肾损伤(DIKI)风险检测",
      "changes": [
        {
          "module": "R213",
          "title": "药物性肾损伤(DIKI)风险检测——氨基糖苷肾毒性、万古霉素+哌拉西林他唑巴坦AKI、两性霉素B肾小管损伤、NSAIDs肾毒性/间质性肾炎、ACEI+NSAIDs+利尿剂三重打击、造影剂肾病、顺铂肾毒性/耳毒性、甲氨蝶呤结晶尿、阿昔洛韦结晶性肾病、磺胺结晶尿、锂盐肾性尿崩症/慢性肾病、环孢素/他克莫司CNI肾毒性、替诺福韦Fanconi综合征、利尿剂+脱水AKI、二甲双胍乳酸酸中毒、地高辛中毒、PPI间质性肾炎、SGLT2i-eGFR初始下降、ACEI/ARB起始肌酐升高等20条规则",
          "type": "feature"
        }
      ]
    },
    {
      "version": "v2.191",
      "date": "2026-10-22",
      "title": "药物性肝损伤(DILI)风险检测",
      "changes": [
        {
          "module": "R212",
          "title": "药物性肝损伤(DILI)风险检测——异烟肼+利福平联合肝毒性、吡嗪酰胺抗结核中最强肝毒性、甲氨蝶呤肝纤维化/肝硬化、对乙酰氨基酚过量急性肝衰竭、口服唑类抗真菌肝毒性、他汀类转氨酶升高、阿莫西林克拉维酸胆汁淤积性肝炎、丙戊酸钠儿童致命性肝衰竭、胺碘酮磷脂沉积性肝病、何首乌等中草药DILI、靶向抗肿瘤药TKI肝毒性、PTU黑框肝衰竭、尼美舒利多国禁用、辛伐他汀80mg FDA警告、免疫检查点抑制剂免疫性肝炎、氟康唑高剂量肝毒性、来氟米特超长半衰期洗脱、Hy法则高死亡率评估、DILI再激发危险等20条规则",
          "type": "feature"
        }
      ]
    },
    {
      "version": "v2.190",
      "date": "2026-10-22",
      "title": "药物过敏交叉反应风险检测",
      "changes": [
        {
          "module": "R211",
          "title": "药物过敏交叉反应风险检测——青霉素/头孢交叉(1-10%)、磺胺/磺脲/噻嗪/COX-2交叉、NSAIDs交叉/AERD、芳香族抗癫痫交叉(DRESS/SJS)、造影剂再暴露预处理、乳胶过敏医疗操作、氨基糖苷交叉耳肾毒性、万古霉素红人综合征(非真性过敏)、HLA-B*5801/1502/5701筛查、胰岛素/鱼精蛋白/NMBA交叉、青霉素/碳青霉烯(<1%)、单抗免疫原性ADA、碘过敏误区澄清、多药过敏综合征MDS、脱敏方案、妊娠哺乳特殊考虑等20条规则",
          "type": "feature"
        }
      ]
    },
    {
      "version": "v2.189",
      "date": "2026-10-22",
      "title": "麻醉科药物风险检测增强",
      "changes": [
        {
          "module": "R210",
          "title": "麻醉科药物风险检测增强——琥珀胆碱烧伤高钾心脏骤停、恶性高热触发药禁忌、丙泊酚输注综合征PRIS、罗库溴铵残余肌松未拮抗、局麻药全身毒性LAST脂肪乳解救、氟哌利多QT延长TdP、阿片类+OSA术后呼吸抑制、氯胺酮颅高压/眼压禁忌、右美托咪定心动过缓、新斯的明肠梗阻/哮喘禁忌、假性胆碱酯酶缺乏延长麻痹、依托咪酯脓毒症肾上腺抑制、氧化亚氮封闭腔膨胀/B12灭活、非去极化肌松+氨基糖苷增强、瑞芬太尼术后痛觉过敏、阿曲库铵组胺释放、咪达唑仑老年人过度镇静、PONV高危未预防、琥珀胆碱儿童心脏骤停、麻醉监测方案缺失等20条规则",
          "type": "feature"
        }
      ]
    },
    {
      "version": "v2.188",
      "date": "2026-10-22",
      "title": "营养/代谢药物风险检测增强",
      "changes": [
        {
          "module": "R209",
          "title": "营养/代谢药物风险检测增强——肠内营养误吸风险、TPN导管相关血流感染、再喂养综合征电解质紊乱、TPN高血糖感染、TPN相关肝病、维生素K+华法林拮抗、维生素D过量高钙血症、维生素B6周围神经病变、叶酸掩盖B12缺乏、静脉铁剂过敏反应、锌过量铜缺乏贫血、硒中毒、白蛋白容量超负荷、支链氨基酸肝性脑病、精氨酸HSV激活、谷氨酰胺肾功能不全蓄积、ω-3+抗凝出血、左旋肉碱癫痫阈值、辅酶Q10+华法林INR降低、营养药物监测计划缺失等20条规则",
          "type": "feature"
        }
      ]
    },
    {
      "version": "v2.187",
      "date": "2026-10-22",
      "title": "康复/疼痛科药物风险检测增强",
      "changes": [
        {
          "module": "R208",
          "title": "康复/疼痛科药物风险检测增强——阿片类+苯二氮卓FDA黑框呼吸抑制、COPD/OSA呼吸衰竭、曲马多+SSRI血清素综合征/癫痫、可待因儿童扁桃体切除禁忌、美沙酮QT延长TdP、NSAIDs+抗凝药出血、三联肾毒性、对乙酰氨基酚过量肝衰竭、加巴喷丁类+阿片类FDA警告、阿米替林心脏毒性、环苯扎林老年人Beers标准、巴氯芬戒断综合征、利多卡因贴剂全身毒性、辣椒素灼烧感教育、阿片耐受/痛觉过敏、多模式镇痛缺失、老年人NSAIDs风险、卡马西平神经痛监测、丁丙诺啡+苯二氮卓等20条规则",
          "type": "feature"
        }
      ]
    },
    {
      "version": "v2.186",
      "date": "2026-10-22",
      "title": "风湿科药物风险检测增强",
      "changes": [
        {
          "module": "R207",
          "title": "风湿科药物风险检测增强——甲氨蝶呤肝毒性/骨髓抑制/肾蓄积/TMP-SMX致命交互、来氟米特致畸/肝毒性、柳氮磺胺吡啶磺胺过敏/G6PD溶血、羟氯喹视网膜毒性、TNF抑制剂感染/结核/HBV再激活/脱髓鞘禁忌、环磷酰胺出血性膀胱炎/不孕、硫唑嘌呤骨髓抑制/TPMT、别嘌醇HLA-B*5801/SJS、非布司他心血管死亡、秋水仙碱毒性/CYP3A4交互、NSAIDs肾/心血管/GI风险、糖皮质激素骨质疏松/感染/高血糖/肾上腺抑制、托珠单抗中性粒细胞减少等20条规则",
          "type": "feature"
        }
      ]
    },
    {
      "version": "v2.185",
      "date": "2026-10-22",
      "title": "精神科药物风险检测增强",
      "changes": [
        {
          "module": "R206",
          "title": "精神科药物风险检测增强——SSRI+MAOI血清素综合征/停药综合征/老年人SIADH低钠、氯氮平粒细胞缺乏/ANC监测、抗精神病药痴呆黑框、锂盐毒性/TDM、丙戊酸钠致畸/肝毒性、卡马西平HLA-B*1502/SJS、拉莫三嗪皮疹、年轻患者抗抑郁自杀黑框、苯二氮卓戒断癫痫/依赖、奥氮平代谢综合征、QT延长、安非他酮癫痫禁忌、ADHD兴奋剂心血管、纳曲酮阿片戒断、丙戊酸钠+拉莫三嗪交互、氟哌啶醇EPS等20条规则",
          "type": "feature"
        }
      ]
    },
    {
      "version": "v2.184",
      "date": "2026-10-22",
      "title": "感染科药物风险检测增强",
      "changes": [
        {
          "module": "R205",
          "title": "感染科药物风险检测增强——利巴韦林致畸/两性霉素B肾毒性/氟康唑肝毒性QT延长/伏立康唑视觉CYP交互/异烟肼肝炎B6缺乏/利福平CYP诱导/乙胺丁醇视神经炎/吡嗪酰胺痛风肝毒性/更昔洛韦骨髓抑制/替诺福韦Fanconi综合征/依非韦伦CNS/阿昔洛韦结晶肾病/奥司他韦儿童精神事件/羟氯喹视网膜毒性/替加环素死亡率黑框/达托霉素肺炎禁忌/磷霉素剂量/多黏菌素肾神经毒性等30条规则",
          "type": "feature"
        }
      ]
    },
    {
      "version": "v2.183",
      "date": "2026-10-22",
      "title": "急诊/重症药物风险检测增强",
      "changes": [
        {
          "module": "R204",
          "title": "急诊/重症药物风险检测增强——去甲肾上腺素外渗/多巴胺心律失常/丙泊酚PRIS/咪达唑仑谵妄/右美托咪定心动过缓/芬太尼胸壁僵硬/氯胺酮颅压/肌松剂CIPNM/应激性溃疡/DVT预防/谵妄评估/氯化钾静推禁忌/高渗盐水/胰岛素低血糖/抗生素降阶梯/碳酸氢钠/肠内营养/胺碘酮QT等20条规则",
          "type": "feature"
        }
      ]
    },
    {
      "version": "v2.182",
      "date": "2026-10-22",
      "title": "老年科药物风险检测增强",
      "changes": [
        {
          "module": "R203",
          "title": "老年科药物风险检测增强——Beers标准苯二氮卓/Z药/第一代抗组胺/NSAIDs/格列本脲/地高辛/甲氧氯普胺/胺碘酮/氟喹诺酮/PPI长期、抗精神病药痴呆黑框警告、抗胆碱能负荷、跌倒风险多药联用、多重用药、肾功能剂量调整、认知障碍药物选择、华法林出血、镇痛阶梯、抗抑郁药TCA避免等20条规则",
          "type": "feature"
        }
      ]
    },
    {
      "version": "v2.181",
      "date": "2026-10-22",
      "title": "儿科药物风险检测增强",
      "changes": [
        {
          "module": "R202",
          "title": "儿科药物风险检测增强——氯霉素灰婴综合征、头孢曲松新生儿胆红素脑病/钙沉淀、四环素牙齿变色、氟喹诺酮软骨损伤、可待因/曲马多儿童呼吸抑制禁用、阿司匹林Reye综合征、第一代抗组胺/异丙嗪婴儿呼吸抑制、甲氧氯普胺锥体外系、丙戊酸钠婴儿肝衰竭、对乙酰氨基酚剂量超量、布洛芬婴儿肾毒性、减充血剂幼儿CNS风险、磺胺核黄疸、儿童剂量计算等20条规则",
          "type": "feature"
        }
      ]
    },
    {
      "version": "v2.180",
      "date": "2026-10-22",
      "title": "妇产科药物风险检测增强",
      "changes": [
        {
          "module": "R201",
          "title": "妇产科药物风险检测增强——缩宫素子宫过度刺激、米索前列醇瘢痕子宫破裂、宫缩抑制剂心脏禁忌、硝苯地平+硫酸镁低血压、硫酸镁肾中毒、复方避孕药血栓/吸烟/偏头痛禁忌、HRT乳腺癌/子宫内膜癌禁忌、促排卵OHSS、吲哚美辛羊水过少/动脉导管早闭、达那唑致畸、GnRH激动剂骨密度下降、米非司酮异位妊娠、阿托西班胎盘早剥等20条规则",
          "type": "feature"
        }
      ]
    },
    {
      "version": "v2.179",
      "date": "2026-10-22",
      "title": "口腔科药物风险检测增强",
      "changes": [
        {
          "module": "R200",
          "title": "口腔科药物风险检测增强——局麻药高铁血红蛋白血症/苯佐卡因儿童禁忌、氯己定长期着色、四环素儿童牙齿变色/妊娠禁忌、含氟制剂儿童吞咽毒性、阿莫西林EBV皮疹、甲硝唑双硫仑反应、口腔激素念珠菌、唾液刺激剂肾蓄积/哮喘禁忌、NSAIDs肾损伤/消化道出血、含肾上腺素局麻药MAOI高血压危象、唑类抗真菌华法林/他汀交互、儿童局麻误咬伤、含碘造影剂过敏/甲亢、牙齿美白敏感/牙龈刺激等20条规则",
          "type": "feature"
        }
      ]
    },
    {
      "version": "v2.178",
      "date": "2026-10-22",
      "title": "耳鼻喉科药物风险检测增强",
      "changes": [
        {
          "module": "R199",
          "title": "耳鼻喉科药物风险检测增强——鼻用激素鼻中隔穿孔/鼻出血、伪麻黄碱心血管禁忌/MAOI高血压危象、氨基糖苷耳毒性/肾蓄积、喹诺酮滴耳液鼓膜穿孔安全性、新霉素鼓膜穿孔耳毒性禁忌、抗组胺鼻喷嗜睡、咽喉局麻误吸、苯佐卡因高铁血红蛋白血症黑框、鼻腔冲洗中耳炎、异丙托溴铵抗胆碱能、布地奈德雾化感染禁忌、鼻腔术后NSAIDs出血、儿童鼻用激素生长抑制、硼酸滴耳液穿孔毒性、孟鲁司特精神事件黑框等20条规则",
          "type": "feature"
        }
      ]
    },
    {
      "version": "v2.177",
      "date": "2026-10-22",
      "title": "眼科药物风险检测增强",
      "changes": [
        {
          "module": "R198",
          "title": "眼科药物风险检测增强——糖皮质激素眼药青光眼/白内障、β阻滞剂眼药心脏禁忌、前列腺素类似物葡萄膜炎、抗VEGF心血管/眼内炎、散瞳药闭角禁忌、氟喹诺酮肌腱断裂、抗过敏BAK干眼、人工泪液防腐剂毒性、碳酸酐酶抑制剂磺胺过敏、α2激动剂儿童CNS抑制、缩瞳药视网膜脱离、抗病毒角膜毒性、免疫抑制剂感染、NSAIDs角膜溶解等20条规则",
          "type": "feature"
        }
      ]
    },
    {
      "version": "v2.176",
      "date": "2026-10-22",
      "title": "血液系统药物风险检测增强",
      "changes": [
        {
          "module": "R197",
          "title": "血液系统药物风险检测增强——华法林INR超标/DOAC肾蓄积/HIT/DAPT手术/ESA血栓/G-CSF脾破裂/铁剂过敏/氯吡格雷CYP2C19/阿司匹林Reye综合征/鱼精蛋白/去铁酮/羟基脲/地拉罗司/凝血因子抑制物/艾美赛珠TMA等20条规则",
          "type": "feature"
        }
      ]
    },
    {
      "version": "v2.175",
      "date": "2026-10-22",
      "title": "神经系统药物风险检测增强",
      "changes": [
        {
          "module": "R196",
          "title": "神经系统药物风险检测增强——丙戊酸钠致畸/肝毒性、卡马西平HLA-B*1502/SJS、拉莫三嗪皮疹/快速滴定、苯妥英毒性/TDM、左旋多巴运动障碍/精神病、多巴胺激动剂冲动控制障碍、曲普坦冠脉/脑血管禁忌、苯二氮卓老年人Beers标准、Z药复杂睡眠行为黑框警告、SSRI+MAOI血清素综合征、氯氮平粒细胞缺乏/ANC监测、锂盐毒性/TDM、阿片类呼吸抑制/COPD、加巴喷丁类呼吸抑制FDA警告、琥珀胆碱高钾血症、恶性高热触发禁忌、胆碱酯酶抑制剂心动过缓、托吡酯代谢性酸中毒、丙戊酸钠+拉莫三嗪交互等20条规则",
          "type": "feature"
        }
      ]
    },
    {
      "version": "v2.174",
      "date": "2026-10-22",
      "title": "呼吸系统药物风险检测增强",
      "changes": [
        {
          "module": "R193",
          "title": "呼吸系统药物风险检测增强——SABA过量/LABA单药哮喘黑框警告/抗胆碱能青光眼前列腺禁忌/ICS念珠菌肺炎/茶碱毒性TDM交互/第一代抗组胺Beers标准/孟鲁司特精神事件黑框警告/抗结核药肝毒性B6缺乏/利福平CYP诱导/乙胺丁醇视神经炎/可待因儿童致命呼吸抑制/CYP2D6超快代谢/右美沙芬血清素综合征/COPD高流量氧疗CO2麻醉等27条规则",
          "type": "feature"
        }
      ]
    },
    {
      "version": "v2.173",
      "date": "2026-10-22",
      "title": "内分泌系统药物风险检测增强",
      "changes": [
        {
          "module": "R192",
          "title": "内分泌系统药物风险检测增强——抗甲状腺药粒细胞缺乏/肝毒性、左甲状腺素过量/不足、双膦酸盐ONJ/AFF、GLP-1RA胰腺炎/MTC禁忌、SGLT2i正常血糖DKA/Fournier坏疽、胰岛素单位混淆、磺脲类低血糖/Beers标准、生长激素禁忌、HRT血栓、睾酮心血管/前列腺、他莫昔芬子宫内膜癌、AI骨质疏松、多巴胺激动剂体位性低血压、卡麦角林瓣膜纤维化、特立帕肽禁忌等20条规则",
          "type": "feature"
        }
      ]
    },
    {
      "version": "v2.172",
      "date": "2026-10-22",
      "title": "免疫抑制剂药物风险检测增强",
      "changes": [
        {
          "module": "R191",
          "title": "免疫抑制剂药物风险检测增强——CNI肾毒性/TDM/CYP3A4交互、MMF致畸/TPMT、mTOR肺毒性/伤口愈合、利妥昔单抗输注反应/PML/HBV再激活、活疫苗禁忌、PCP预防、激素骨质疏松、高钾血症、移植感染、他汀横纹肌溶解、ATG血清病等20条规则",
          "type": "feature"
        }
      ]
    },
    {
      "version": "v2.171",
      "date": "2026-10-22",
      "title": "肿瘤化疗药物风险检测增强",
      "changes": [
        {
          "module": "R190",
          "title": "肿瘤化疗药物风险检测增强——顺铂肾毒性/耳毒性、蒽环类心脏毒性、紫杉醇过敏/神经病变、HD-MTX解救、5-FU DPD缺乏、伊立替康腹泻/UGT1A1、环磷酰胺出血性膀胱炎、长春新碱神经毒性/鞘内致命、博来霉素肺毒性、EGFR/VEGF抑制剂靶向毒性、TLS预防、止吐方案等20条规则",
          "type": "feature"
        }
      ]
    },
    {
      "version": "v2.170",
      "date": "2026-10-22",
      "title": "围手术期抗凝桥接治疗风险检测增强",
      "changes": [
        {
          "module": "R189",
          "title": "围手术期抗凝桥接治疗风险检测增强——机械瓣膜桥接/DOAC围手术期/VTE预防/HIT/椎管内麻醉时机等20条规则",
          "type": "feature"
        }
      ]
    },
    {
      "version": "v2.169",
      "date": "2026-10-22",
      "title": "药物遗传代谢风险检测增强",
      "changes": [
        {
          "module": "R188",
          "title": "药物遗传代谢风险检测增强——HLA-B*1502/5801/5701、CYP2C9/2C19/2D6/3A5、DPYD、TPMT/NUDT15、UGT1A1、SLCO1B1、NAT2、ALDH2基因型指导用药",
          "type": "feature"
        }
      ]
    },
    {
      "version": "v2.166",
      "date": "2026-10-22",
      "title": "药物-疾病相互作用检测增强",
      "changes": [
        {
          "module": "R185",
          "title": "药物-疾病相互作用检测增强——20条临床常见禁忌组合",
          "type": "feature"
        }
      ]
    },
    {
      "version": "v2.165",
      "date": "2026-10-22",
      "title": "药物疗程与用药监测风险检测增强",
      "changes": [
        {
          "module": "R184",
          "title": "药物疗程与用药监测风险检测增强——疗程不足/过长/监测缺失/停药提醒",
          "type": "feature"
        }
      ]
    },
    {
      "version": "v2.164",
      "date": "2026-10-22",
      "title": "药物重复治疗与相似药物风险检测增强",
      "changes": [
        {
          "module": "R183",
          "title": "药物重复治疗与相似药物风险检测增强——同成分重复/同类联用/药-药相互作用",
          "type": "feature"
        }
      ]
    },
    {
      "version": "v2.163",
      "date": "2026-10-22",
      "title": "抗感染药物风险检测增强",
      "changes": [
        {
          "module": "R182",
          "title": "抗感染药物风险检测增强——青霉素/头孢菌素/大环内酯/喹诺酮/氨基糖苷/万古霉素/抗真菌/抗病毒",
          "type": "feature"
        }
      ]
    },
    {
      "version": "v2.162",
      "date": "2026-10-22",
      "title": "肌肉骨骼系统药物风险检测增强",
      "changes": [
        {
          "module": "R181",
          "title": "肌肉骨骼系统药物风险检测增强——NSAIDs/糖皮质激素/DMARDs/生物制剂/痛风药/骨代谢药/肌松剂",
          "type": "feature"
        }
      ]
    },
    {
      "version": "v2.161",
      "date": "2026-10-21",
      "title": "血液系统药物风险检测增强",
      "changes": [
        {
          "module": "R180",
          "title": "血液系统药物风险检测增强——抗凝/抗血小板/促红素/铁剂/溶栓药/骨髓抑制",
          "type": "feature"
        }
      ]
    },
    {
      "version": "v2.155",
      "date": "2026-10-21",
      "title": "心血管/脂质代谢药物风险检测增强",
      "changes": [
        {
          "module": "R174",
          "title": "心血管/脂质代谢药物风险检测增强",
          "type": "feature"
        }
      ]
    },
    {
      "version": "v2.153",
      "date": "2026-10-21",
      "title": "营养补充剂/中草药风险检测增强",
      "changes": [
        {
          "module": "R172",
          "title": "营养补充剂/中草药风险检测增强",
          "type": "feature"
        }
      ]
    },
    {
      "version": "v2.152",
      "date": "2026-10-21",
      "title": "精神神经类药物风险检测增强",
      "changes": [
        {
          "module": "R171",
          "title": "精神神经类药物风险检测增强",
          "type": "feature"
        }
      ]
    },
    {
      "version": "v2.151",
      "date": "2026-10-21",
      "title": "镇静催眠/抗焦虑药物风险检测增强",
      "changes": [
        {
          "module": "R170",
          "title": "镇静催眠/抗焦虑药物风险检测增强",
          "type": "feature"
        }
      ]
    },
    {
      "version": "v2.150",
      "date": "2026-10-21",
      "title": "抗生素/抗菌药物风险检测增强",
      "changes": [
        {
          "module": "R169",
          "title": "抗生素/抗菌药物风险检测增强",
          "type": "feature"
        }
      ]
    },
    {
      "version": "v2.149",
      "date": "2026-10-21",
      "title": "解热镇痛/抗炎药物风险检测增强",
      "changes": [
        {
          "module": "R168",
          "title": "解热镇痛/抗炎药物风险检测增强",
          "type": "feature"
        }
      ]
    },
    {
      "version": "v2.148",
      "date": "2026-10-21",
      "title": "抗凝血/抗血小板药物风险检测增强",
      "changes": [
        {
          "module": "R167",
          "title": "抗凝血/抗血小板药物风险检测增强",
          "type": "feature"
        }
      ]
    },
    {
      "version": "v2.147",
      "date": "2026-10-21",
      "title": "抗癫痫/抗惊厥药物风险检测增强",
      "changes": [
        {
          "module": "R166",
          "title": "抗癫痫/抗惊厥药物风险检测增强",
          "type": "feature"
        }
      ]
    },
    {
      "version": "v2.146",
      "date": "2026-10-21",
      "title": "激素类药物风险检测增强",
      "changes": [
        {
          "module": "R165",
          "title": "激素类药物风险检测增强",
          "type": "feature"
        }
      ]
    },
    {
      "version": "v2.145",
      "date": "2026-10-21",
      "title": "免疫抑制剂风险检测增强",
      "changes": [
        {
          "module": "R164",
          "title": "免疫抑制剂风险检测增强",
          "type": "feature"
        }
      ]
    },
    {
      "version": "v2.144",
      "date": "2026-10-21",
      "title": "抗肿瘤药物风险检测增强",
      "changes": [
        {
          "module": "R163",
          "title": "抗肿瘤药物风险检测增强",
          "type": "feature"
        }
      ]
    },
    {
      "version": "v2.143",
      "date": "2026-10-21",
      "title": "抗病毒药物风险检测增强",
      "changes": [
        {
          "module": "R162",
          "title": "抗病毒药物风险检测增强",
          "type": "feature"
        }
      ]
    },
    {
      "version": "v2.142",
      "date": "2026-10-21",
      "title": "抗结核药物风险检测增强",
      "changes": [
        {
          "module": "R161",
          "title": "抗结核药物风险检测增强",
          "type": "feature"
        }
      ]
    },
    {
      "version": "v2.141",
      "date": "2026-10-21",
      "title": "抗真菌药物风险检测增强",
      "changes": [
        {
          "module": "R160",
          "title": "抗真菌药物风险检测增强",
          "type": "feature"
        }
      ]
    },
    {
      "version": "v2.140",
      "date": "2026-10-21",
      "title": "抗菌药物管理系列续——联合用药/预防指征/治疗评估",
      "changes": [
        {
          "module": "R157",
          "title": "抗菌药物联合用药合理性检测增强",
          "type": "feature"
        },
        {
          "module": "R158",
          "title": "抗菌药物预防使用指征检测增强",
          "type": "feature"
        },
        {
          "module": "R159",
          "title": "抗菌药物治疗性使用评估检测增强",
          "type": "feature"
        }
      ]
    },
    {
      "version": "v2.139",
      "date": "2026-10-21",
      "title": "科室质控分析报告一键导出（HTML 可打印 / CSV 可进 Excel）",
      "changes": [
        {
          "type": "feature",
          "module": "批量导出",
          "title": "新增「质控分析报告」入口：把生成记录一次汇总成科室报告（均分、甲级率、高频缺陷 TOP10、科室对比、逐份明细），HTML 双击打开即可 Ctrl+P 打印或另存 PDF"
        },
        {
          "type": "feature",
          "module": "批量导出",
          "title": "质控明细 CSV 导出：逐份病历的分数、等级、缺陷条目可进 Excel / WPS 做二次统计"
        },
        {
          "type": "fix",
          "module": "批量导出",
          "title": "质控等级与质控分下限筛选未生效时明确提示：这两项需服务端逐份评分，本机筛选无法预判，静默忽略会被误认为报告算错"
        }
      ]
    },
    {
      "version": "v2.138",
      "date": "2026-10-21",
      "title": "抗菌药物疗程、停药时机与升降级建议检测",
      "changes": [
        {
          "type": "feature",
          "module": "R154",
          "title": "抗菌药物疗程与疗效评估检测"
        },
        {
          "type": "feature",
          "module": "R155",
          "title": "抗菌药物停药时机判断检测"
        },
        {
          "type": "feature",
          "module": "R156",
          "title": "抗菌药物升级与降级建议检测"
        }
      ]
    },
    {
      "version": "v2.137",
      "date": "2026-10-21",
      "title": "抗菌药物肝肾功能剂量调整检测增强",
      "changes": [
        "R153: 抗菌药物肝肾功能调整检测增强——肝功能异常时大环内酯类/抗结核药剂量调整、肾功能异常时万古霉素/氨基糖苷类/碳青霉烯类/喹诺酮类剂量调整、肾毒性抗菌药物联用风险、肝毒性抗菌药物使用风险"
      ]
    },
    {
      "version": "v2.136",
      "date": "2026-10-21",
      "title": "麻精药品与特殊人群抗菌药物安全检测增强",
      "changes": [
        "R152: 抗菌药物特殊管理（麻精药品）检测增强——麻精药品联用中枢抑制、碳青霉烯+丙戊酸钠惊厥风险、喹诺酮+中枢兴奋药、甲硝唑+酒精双硫仑样反应、肝代谢药物相互作用"
      ]
    },
    {
      "version": "v2.135",
      "date": "2026-10-21",
      "title": "抗菌药物相互作用检测细化（代谢酶与吸收环节）",
      "changes": [
        "R151: 抗菌药物相互作用检测增强（CYP3A4/CYP1A2代谢、磺胺+华法林、甲硝唑+酒精、氨基糖苷+肌松药、四环素/喹诺酮+抗酸药）"
      ]
    },
    {
      "version": "v2.134",
      "date": "2026-10-21",
      "title": "抗菌药物相互作用检测增强",
      "changes": [
        "R151: 抗菌药物相互作用检测增强"
      ]
    },
    {
      "version": "v2.133",
      "date": "2026-10-21",
      "title": "抗菌药物超说明书用药检测增强",
      "changes": [
        "R150: 抗菌药物超说明书用药检测增强"
      ]
    },
    {
      "version": "v2.132",
      "date": "2026-10-21",
      "title": "抗菌药物分级处方权限检测增强",
      "changes": [
        "R149: 抗菌药物分级处方权限检测增强"
      ]
    },
    {
      "version": "v2.131",
      "date": "2026-10-21",
      "title": "抗菌药物使用前病原学送检检测增强",
      "changes": [
        "R148: 抗菌药物使用前病原学送检检测增强"
      ]
    },
    {
      "version": "v2.130",
      "date": "2026-10-21",
      "title": "R143-R147 抗菌药物管理系列增强",
      "tags": [
        "新增",
        "安全"
      ],
      "items": [
        "新增 checkAntibioticGradeManagement(R143)：抗菌药物分级管理检测，特殊级/限制级使用指征筛查",
        "新增 checkAntibioticCombination(R144)：抗菌药物联合用药合理性检测，检测同类联用/协同/拮抗",
        "新增 checkProphylacticTiming(R145)：手术预防用药时机检测，切皮前0.5-1h给药、疗程≤24h",
        "新增 checkAntibioticDuration(R146)：抗菌药物疗程评估，长期/短期用药提示",
        "新增 checkAntibioticResistance(R147)：耐药菌感染预警，MRSA/VRE/CRE/CRAB/ESBL等",
        "修复R147规则增加resistanceKeywords支持，修复R144同类药物检测逻辑"
      ]
    },
    {
      "version": "v2.129",
      "date": "2026-10-21",
      "title": "R138-R142 药物风险检测增强",
      "tags": [
        "新增",
        "安全"
      ],
      "items": [
        "新增 checkDrugAbuseRisk(R138)：药物滥用/误用风险检测，覆盖阿片类、苯二氮卓类、镇静催眠药、右美沙芬等成瘾风险",
        "新增 checkDrugInteractionAlert(R139)：药物相互作用预警系统，覆盖CYP450代谢、药效学叠加、治疗窗药物监测等30+规则",
        "新增 checkMedTimingConflict(R140)：用药时间冲突检测，支持QD/BID矛盾、重复剂量、给药间隔过短",
        "新增 checkDrugRouteConflict(R141)：药物给药途径冲突检测，覆盖胰岛素/肾上腺素/硝酸甘油等口服错误",
        "新增 checkDrugCompatibility(R142)：药物配伍禁忌检测，覆盖青霉素-氨基糖苷、头孢曲松-钙剂、TPN等"
      ]
    },
    {
      "version": "v2.124",
      "date": "2026-10-21",
      "title": "R137 药物-实验室指标相互作用检测增强",
      "tags": [
        "新增",
        "安全"
      ],
      "items": [
        "新增 checkDrugLabRisk(R137)：药物-实验室指标相互作用检测",
        "覆盖华法林-INR、他汀类-肝酶/CK、万古霉素谷浓度、锂盐血药浓度等治疗窗监测",
        "支持ACEI/ARB-高钾血症、二甲双胍-乳酸酸中毒风险识别"
      ]
    },
    {
      "version": "v2.123",
      "date": "2026-10-21",
      "title": "R136 特殊人群用药风险检测增强",
      "tags": [
        "新增",
        "安全"
      ],
      "items": [
        "新增 checkSpecialPopulationRisk(R136)：特殊人群用药风险检测",
        "覆盖老年人/孕妇/哺乳期/骨质疏松等特殊人群用药禁忌和剂量调整",
        "包含地西泮/异维A酸/华法林/卡马西平/泼尼松等高风险药物识别"
      ]
    },
    {
      "version": "v2.122",
      "date": "2026-10-21",
      "title": "R136 特殊人群用药风险检测增强",
      "tags": [
        "新增",
        "安全"
      ],
      "items": [
        "新增 checkSpecialPopulationRisk(R136)：特殊人群用药风险检测",
        "覆盖老年人/孕妇/哺乳期/骨质疏松等特殊人群用药禁忌和剂量调整",
        "包含地西泮/异维A酸/华法林/卡马西平等高风险药物识别"
      ]
    },
    {
      "version": "v2.121",
      "date": "2026-10-21",
      "title": "R135 肾功能异常用药风险检测增强",
      "tags": [
        "新增",
        "安全"
      ],
      "items": [
        "新增 checkRenalRisk(R135)：肾功能异常用药风险检测",
        "覆盖氨基糖苷类、万古霉素、NSAIDs、造影剂、低分子肝素、二甲双胍等肾毒性药物筛查",
        "支持血清肌酐、CrCl、eGFR等多种肾功能指标解析",
        "Cockcroft-Gault公式估算肌酐清除率"
      ]
    },
    {
      "version": "v2.120",
      "date": "2026-10-21",
      "title": "R134 肝功能异常用药风险检测增强",
      "tags": [
        "新增",
        "安全"
      ],
      "items": [
        "新增 checkLiverRisk(R134)：肝功能异常用药风险检测",
        "覆盖他汀类、抗结核药、抗真菌药、对乙酰氨基酚等肝毒性药物筛查",
        "支持ALT/AST/γ-GT指标与用药风险关联",
        "新增 checkLiverRisk(R134)：肝功能异常用药风险检测（他汀/抗结核/抗真菌/对乙酰氨基酚等）"
      ]
    },
    {
      "version": "v2.115",
      "date": "2026-10-21",
      "title": "R130-R133 医疗风险检测增强系列",
      "tags": [
        "新增",
        "安全"
      ],
      "items": [
        "新增 checkDoseWeightCalibration(R130)：药物剂量-体重校准检测",
        "新增 checkMDRORisk(R131)：耐药菌感染风险检测（CRE/MRSA/VRE/CRAB等）",
        "新增 checkAllergyRisk(R132)：药物过敏反应检测（交叉过敏/严重过敏史）",
        "新增 checkDrugDiseaseInteraction(R133)：药物-疾病相互作用检测（禁忌症/慎用症）"
      ]
    },
    {
      "version": "v2.114",
      "date": "2026-10-21",
      "title": "R129 儿童用药风险检测增强",
      "tags": [
        "新增",
        "安全"
      ],
      "items": [
        "新增 checkChildRisk(R129)：儿童用药风险检测增强",
        "覆盖阿司匹林-瑞氏综合征风险（儿童病毒感染期禁用）",
        "覆盖四环素类-牙齿黄染/骨骼发育抑制风险（<8岁禁用）",
        "覆盖喹诺酮类-软骨发育影响风险（<18岁慎用）",
        "覆盖磺胺类-核黄疸风险（<2月龄禁用）",
        "覆盖NSAIDs-婴儿肾风险（<6月龄慎用）",
        "覆盖阿片类-呼吸抑制风险（<12岁慎用）",
        "覆盖苯二氮䓬类-反常兴奋风险",
        "覆盖氯霉素-灰婴综合征风险（新生儿禁用）",
        "覆盖抗真菌药-肝毒性风险",
        "覆盖维A酸-骨骼发育风险",
        "覆盖利奈唑胺-骨髓抑制风险",
        "覆盖磺胺嘧啶银-光敏反应风险",
        "新增否定语境过滤：isNegatedPhrase()函数增强",
        "新增测试文件：riskScanR129.test.js（10用例，全部通过）"
      ]
    },
    {
      "version": "v2.113",
      "date": "2026-10-21",
      "title": "R128 妊娠用药风险检测增强",
      "tags": [
        "新增",
        "安全"
      ],
      "items": [
        "新增 checkPregnancyRisk(R128)：妊娠用药风险检测增强",
        "覆盖维A酸类致畸风险（异维A酸/阿维A/视黄醇）",
        "覆盖抗凝药妊娠风险（华法林致畸/出血）",
        "覆盖ACEI/ARB胎儿肾损伤风险",
        "覆盖免疫抑制剂致畸/流产风险（甲氨蝶呤/麦考酚钠/来氟米特）",
        "覆盖四环素类牙齿黄染/骨骼发育抑制风险",
        "覆盖喹诺酮类软骨发育影响风险",
        "覆盖他汀类胎儿发育风险",
        "覆盖抗癫痫药致畸风险（丙戊酸钠/卡马西平/苯妥英）",
        "覆盖磺胺类核黄疸风险（妊娠晚期）",
        "覆盖利巴韦林强致畸风险",
        "覆盖糖皮质激素唇腭裂风险（妊娠早期）",
        "覆盖利尿剂胎儿电解质紊乱风险",
        "覆盖锂剂心脏畸形风险",
        "新增测试文件：riskScanR128.test.js（10用例，全部通过）"
      ]
    },
    {
      "version": "v2.112",
      "date": "2026-10-21",
      "title": "R127 药物-草药/中成药相互作用检测增强",
      "tags": [
        "新增",
        "安全"
      ],
      "items": [
        "新增 checkTCMDrugInteraction(R127)：药物-草药/中成药相互作用检测增强",
        "覆盖甘草+利尿剂/抗凝药-低钾血症风险",
        "覆盖银杏叶/当归/丹参+抗凝/抗血小板药-出血风险",
        "覆盖麻黄+降压药-疗效拮抗",
        "覆盖何首乌+他汀类/对乙酰氨基酚-肝毒性叠加",
        "覆盖黄连素+降糖药/华法林-低血糖/出血风险",
        "覆盖人参+抗凝药/降糖药-INR波动/血糖异常",
        "覆盖五味子+CYP3A4底物-药物蓄积风险",
        "覆盖连翘/板蓝根+免疫抑制剂-疗效降低",
        "覆盖山楂+强心苷-毒性增加",
        "覆盖女贞子/枸杞子+华法林-出血风险",
        "覆盖大黄/番泻叶+地高辛-电解质紊乱/毒性",
        "覆盖淫羊藿+PDE5抑制剂-低血压风险",
        "覆盖远志+强心苷-溶血风险",
        "覆盖苦杏仁+中枢抑制剂-呼吸抑制",
        "覆盖马兜铃酸中药+NSAIDs/肾毒性药物-肾损伤",
        "新增测试文件：riskScanR127.test.js（10用例，全部通过）"
      ]
    },
    {
      "version": "v2.111",
      "date": "2026-10-21",
      "title": "R126 药物-食物相互作用检测增强",
      "tags": [
        "新增",
        "安全"
      ],
      "items": [
        "新增 checkDrugFoodInteraction(R126)：药物-食物相互作用检测增强",
        "覆盖西柚-他汀类CYP3A4抑制→肌毒性风险",
        "覆盖纳豆/维生素K-华法林拮抗作用",
        "覆盖酪胺-MAOI高血压危象风险",
        "覆盖酒精-硝基咪唑类/头孢类双硫仑样反应",
        "覆盖钙铁镁铝-四环素/喹诺酮螯合吸收减少",
        "覆盖大豆纤维-左甲状腺素吸收干扰",
        "覆盖食物/钙剂-双膦酸盐吸收障碍",
        "覆盖高蛋白-左旋多巴竞争吸收",
        "覆盖酒精-磺脲类低血糖风险",
        "覆盖高钾食物-ACEI/ARB/保钾利尿剂高钾血症",
        "覆盖西柚-CCB/QT延长药物低血压风险",
        "覆盖咖啡因-茶碱中枢兴奋叠加",
        "新增测试文件：riskScanR126.test.js（10用例，全部通过）"
      ]
    },
    {
      "version": "v2.110",
      "date": "2026-10-21",
      "title": "R125 围手术期用药风险评估增强",
      "tags": [
        "新增",
        "安全"
      ],
      "items": [
        "新增 checkPerioperativeRisk(R125)：围手术期用药风险评估增强",
        "覆盖抗凝药风险：华法林/DOACs围手术期出血管理",
        "覆盖抗血小板药风险：双抗停药风险、PCI术后管理",
        "覆盖二甲双胍-造影剂肾毒性风险",
        "覆盖ACEI/ARB-术中低血压风险",
        "覆盖降糖药-围手术期低血糖风险",
        "覆盖抗癫痫药-药物相互作用风险",
        "覆盖地高辛-围手术期电解质紊乱风险",
        "覆盖糖皮质激素-肾上腺危象风险（大手术需应激剂量）",
        "覆盖喹诺酮+激素-肌腱断裂风险",
        "覆盖SSRI-围手术期出血风险",
        "覆盖阿片类-围手术期呼吸抑制风险",
        "覆盖他汀类-围手术期肌病风险",
        "新增测试文件：riskScanR125.test.js（10用例，全部通过）"
      ]
    },
    {
      "version": "v2.109",
      "date": "2026-10-21",
      "title": "R124 药物-营养补充剂相互作用检测增强",
      "tags": [
        "新增",
        "安全"
      ],
      "items": [
        "新增 checkSupplementDrugInteraction(R124)：药物-营养补充剂相互作用检测增强",
        "覆盖钙/铁剂与甲状腺素吸收干扰",
        "覆盖银杏叶+抗凝药出血风险",
        "覆盖圣约翰草CYP3A4诱导→多种药物疗效降低",
        "覆盖鱼油/大蒜/灵芝+抗血小板药出血风险",
        "覆盖辅酶Q10+华法林拮抗作用",
        "覆盖钾 supplement+ACEI/ARB高钾风险",
        "覆盖甘草+利尿剂低钾风险",
        "覆盖褪黑素+镇静催眠药中枢抑制叠加",
        "覆盖益生菌+免疫抑制剂感染风险",
        "覆盖维生素D+噻嗪类高钙血症风险",
        "新增测试文件：riskScanR124.test.js（10用例，全部通过）"
      ]
    },
    {
      "version": "v2.108",
      "date": "2026-10-21",
      "title": "R123 抗血小板/抗凝药物风险评估增强",
      "tags": [
        "新增",
        "安全"
      ],
      "items": [
        "新增 checkAnticoagRiskEnhanced(R123)：抗血小板/抗凝药物风险评估增强",
        "覆盖华法林风险：出血/INR异常、药物相互作用、饮食干扰(纳豆/维生素K)",
        "覆盖DOACs风险：肾功能不全蓄积、老年人出血风险",
        "覆盖双联抗血小板(DAPT)：消化道出血风险、PPI保护提醒",
        "覆盖肝素：HIT(肝素诱导血小板减少)、血小板监测",
        "覆盖溶栓：颅内出血风险、适应证时间窗",
        "覆盖围手术期：术前停药管理、桥接治疗",
        "覆盖特殊禁忌：阿司匹林哮喘、抗凝药妊娠禁忌",
        "覆盖基因代谢：氯吡格雷CYP2C19慢代谢者疗效下降",
        "新增测试文件：riskScanR123.test.js（10用例，全部通过）"
      ]
    },
    {
      "version": "v2.107",
      "date": "2026-10-21",
      "title": "R122 生物制剂风险检测增强",
      "tags": [
        "新增",
        "安全"
      ],
      "items": [
        "新增 checkBiologicRiskEnhanced(R122)：生物制剂风险检测增强",
        "覆盖TNF抑制剂风险：结核复发、恶性肿瘤、心衰加重、乙肝病毒再激活",
        "覆盖IL-6抑制剂：感染风险、免疫抑制",
        "覆盖JAK抑制剂：血栓风险、带状疱疹风险",
        "覆盖利妥昔单抗：输注反应、进行性多灶性白质脑病(PML)",
        "覆盖IL-17/IL-23抑制剂：感染风险",
        "特殊人群风险：妊娠禁忌、活疫苗禁忌、脱髓鞘病史禁忌",
        "新增测试文件：riskScanR122.test.js（10用例，全部通过）"
      ]
    },
    {
      "version": "v2.106",
      "date": "2026-10-21",
      "title": "R121 激素类药物风险检测增强",
      "tags": [
        "新增",
        "安全"
      ],
      "items": [
        "新增 checkHormoneRiskEnhanced(R121)：激素类药物风险检测增强",
        "覆盖糖皮质激素风险：骨质疏松、感染、血糖升高、肾上腺抑制、胃肠道出血",
        "覆盖甲状腺素风险：剂量过量、吸收干扰",
        "覆盖口服避孕药风险：血栓、心血管事件",
        "覆盖降糖药风险：胰岛素/磺脲类低血糖",
        "覆盖HRT风险：乳腺癌、子宫内膜癌、血栓",
        "覆盖同化激素风险：肝毒性、脂质异常、生殖抑制",
        "覆盖生长激素风险：肿瘤、颅内高压",
        "覆盖其他激素风险：降钙素、SERM、抗雄激素、促性腺激素、多巴胺激动剂",
        "新增测试文件：riskScanR121.test.js（10用例，全部通过）"
      ]
    },
    {
      "version": "v2.105",
      "date": "2026-10-21",
      "title": "R120 中药-西药相互作用检测增强",
      "tags": [
        "新增",
        "安全"
      ],
      "items": [
        "新增 checkTCMWInteraction(R120)：中药-西药相互作用检测增强",
        "覆盖24种常见中药-西药相互作用：甘草+华法林、银杏叶+阿司匹林、何首乌+他汀类等",
        "含重金属中药禁忌：朱砂+溴化物、雄黄+亚硝酸盐等",
        "肝毒性叠加提醒：何首乌、补骨脂等与特定药物联用风险",
        "肾毒性叠加提醒：关木通、雷公藤等",
        "心血管影响检测：麻黄+降压药、甘草+利尿剂等",
        "CYP450酶影响：圣约翰草、五味子等",
        "经典配伍禁忌：十八反、十九畏",
        "新增测试文件：riskScanR120.test.js（10用例，全部通过）"
      ]
    },
    {
      "version": "v2.104",
      "date": "2026-10-21",
      "title": "R119 药物-实验室指标干扰检测增强",
      "tags": [
        "新增",
        "安全"
      ],
      "items": [
        "新增 checkDrugLabInteractionEnhanced(R119)：药物-实验室指标干扰检测增强",
        "覆盖常见药物对检验结果的干扰：维生素C(尿糖假阴性)、头孢哌酮(INR延长)、二甲双胍(乳酸酸中毒)、ACEI/ARB(高钾血症)等",
        "新增特殊人群检测：儿童四环素类、妊娠期异维A酸致畸风险、肝肾功能不全药物调整提醒",
        "生物素干扰心肌标志物检测提醒",
        "修复正则匹配问题，提升中文文本匹配准确率",
        "新增测试文件：riskScanR119.test.js（10用例，全部通过）"
      ]
    },
    {
      "version": "v2.103",
      "date": "2026-10-21",
      "title": "R118 免疫检查点抑制剂风险检测",
      "tags": [
        "新增",
        "安全"
      ],
      "items": [
        "新增 checkImmuneCheckpointRisk(R118)：免疫检查点抑制剂（PD-1/PD-L1/CTLA-4）irAEs 风险检测",
        "覆盖 PD-1 抑制剂（帕博利珠单抗/K药、纳武利尤单抗/O药、信迪利单抗、卡瑞利珠单抗、替雷利珠单抗、特瑞普利单抗、度伐利尤单抗、斯鲁利单抗）",
        "覆盖 PD-L1 抑制剂（阿替利珠单抗、度西利尤单抗、阿泽利尤单抗）",
        "覆盖 CTLA-4 抑制剂（伊匹木单抗）",
        "检测高危 irAEs：肺炎、心肌炎、结肠炎（无监测时报 high）",
        "检测中危 irAEs：肝炎、肾炎、糖尿病、甲状腺炎、垂体炎",
        "检测低危 irAEs：皮炎",
        "智能排除：已提及症状（如腹泻→结肠炎、皮疹→皮炎）或已监测时不报",
        "联合治疗增强：PD-1+CTLA-4 联合时报毒性增强风险",
        "症状映射：腹泻/大便次数增多→结肠炎，皮疹/瘙痒→皮炎",
        "新增测试文件：riskScanR118.test.js（10用例，全部通过）"
      ]
    },
    {
      "version": "v2.102",
      "date": "2026-10-21",
      "title": "R117 靶向药物风险检测",
      "tags": [
        "新增",
        "安全"
      ],
      "items": [
        "新增 checkTargetedTherapyRisk(R117)：靶向药物毒性风险检测",
        "覆盖 EGFR-TKI（吉非替尼/厄洛替尼/埃克替尼/阿法替尼/奥希替尼）→ 皮疹、腹泻、间质性肺病、肝毒性",
        "覆盖 ALK 抑制剂（克唑替尼/色瑞替尼/阿来替尼/恩沙替尼）→ 肝毒性、肺炎",
        "覆盖 VEGF-TKI（索拉非尼/仑伐替尼/舒尼替尼/培唑帕尼）→ 高血压、手足皮肤反应、蛋白尿",
        "覆盖 HER2 抑制剂（曲妥珠单抗/帕妥珠单抗/图卡替尼/德曲妥珠单抗）→ 心脏毒性、间质性肺病",
        "覆盖 BRAF 抑制剂（维莫非尼/达拉非尼）→ 光敏感、皮肤癌",
        "覆盖 mTOR 抑制剂（依维莫司/替西罗莫司）→ 口腔炎、肺炎",
        "覆盖 BTK 抑制剂（伊布替尼/泽布替尼）→ 出血、心律失常",
        "覆盖 PARP 抑制剂（奥拉帕利/尼拉帕利）→ 骨髓抑制",
        "智能排除：已提及监测指标时不报（如肺部CT+吉非替尼、超声心动图+曲妥珠单抗）",
        "特殊人群：儿童/孕妇风险额外警告",
        "自动排除否认语境",
        "新增测试文件：riskScanR117.test.js（10用例，全部通过）"
      ]
    },
    {
      "version": "v2.101",
      "date": "2026-10-21",
      "title": "R116 化疗药物风险检测",
      "tags": [
        "新增",
        "安全"
      ],
      "items": [
        "新增 checkChemotherapyRisk(R116)：化疗药物毒性风险检测",
        "覆盖烷化剂（环磷酰胺/异环磷酰胺/美法仑/白消安）",
        "覆盖铂类（顺铂/卡铂/奥沙利铂）",
        "覆盖抗代谢药（甲氨蝶呤/氟尿嘧啶/替加氟/培美曲塞/阿糖胞苷）",
        "覆盖植物碱（紫杉醇/多西他赛/长春新碱/长春瑞滨/拓扑替康）",
        "覆盖蒽环类（多柔比星/表柔比星/吡柔比星/去甲氧柔红霉素）",
        "覆盖抗肿瘤抗生素（博来霉素/丝裂霉素）和拓扑异构酶抑制剂（依托泊苷/伊立替康）",
        "智能排除：已提及预防措施时不报（如美司钠+环磷酰胺、超声心动图+多柔比星）",
        "特殊人群：儿童患者额外警告、孕妇禁用致畸药物",
        "自动排除否认语境",
        "新增测试文件：riskScanR116.test.js（10用例，全部通过）"
      ]
    },
    {
      "version": "v2.100",
      "date": "2026-10-21",
      "title": "R115 抗凝药物监测风险检测",
      "tags": [
        "新增",
        "安全"
      ],
      "items": [
        "新增 checkAnticoagulantMonitoring(R115)：抗凝药物监测指标缺失提醒",
        "覆盖华法林-INR监测、普通肝素-aPTT监测、低分子肝素-抗Xa监测",
        "覆盖DOACs（利伐沙班/阿哌沙班/达比加群/艾多沙班）肾功能监测",
        "自动检测监测记录缺失，无INR/aPTT记录时报high风险",
        "有诊断时提醒需定期监测特定指标",
        "新增测试文件：riskScanR115.test.js（7用例，全部通过）"
      ]
    },
    {
      "version": "v2.99",
      "date": "2026-10-21",
      "title": "R114 中药注射剂风险检测",
      "tags": [
        "新增",
        "安全"
      ],
      "items": [
        "新增 checkTCMInjectionRisk(R114)：中药注射剂配伍禁忌、特殊人群禁忌、溶媒选择、超疗程检测",
        "覆盖清开灵/醒脑静/丹参酮/血塞通/双黄连/参麦注射液等常用中药注射剂",
        "特殊人群：儿童/孕妇禁用或慎用（数据不足/潜在风险）",
        "溶媒选择：血栓通/血塞通等避免葡萄糖溶媒（沉淀风险）",
        "配伍禁忌：双黄连/清开灵/醒脑静避免与氨基糖苷类/喹诺酮类联用",
        "超疗程：益气类≤14天、活血化瘀类≤14天、清热解毒类≤7天",
        "严重警示：鱼腥草注射液因过敏性休克死亡病例限制使用",
        "自动排除否认/停用药物语境，避免误报",
        "新增测试文件：riskScanR114.test.js（10用例，全部通过）"
      ]
    },
    {
      "version": "v2.98",
      "date": "2026-10-21",
      "title": "R113 抗菌药物专项检测增强",
      "tags": [
        "新增",
        "安全"
      ],
      "items": [
        "新增 checkAntibioticSpecialRisk(R113)：抗菌药物无指征使用、超疗程、特殊使用级滥用检测",
        "覆盖碳青霉烯类/替加环素/万古霉素/利奈唑胺特殊使用级（无明确指征报high）",
        "覆盖头孢曲松/左氧氟沙星预防用药限制",
        "覆盖青霉素类/头孢菌素类/大环内酯类/硝基咪唑类疗程超限检测",
        "自动排除手术预防用药语境（如\"术前\"+头孢曲松）",
        "自动排除否认/停用药物语境，避免误报",
        "新增测试文件：riskScanR113.test.js（10用例，全部通过）"
      ]
    },
    {
      "version": "v2.97",
      "date": "2026-10-21",
      "title": "R112 药物-疾病禁忌检测增强",
      "tags": [
        "新增",
        "安全"
      ],
      "items": [
        "新增 checkDrugDiseaseContraEnhanced(R112)：扩展妊娠/儿童/肝肾功能/特殊疾病禁忌检测",
        "覆盖异维A酸/甲氨蝶呤/ACEI/ARB/华法林致畸风险（妊娠期禁用）",
        "覆盖四环素类/喹诺酮类致牙齿黄染+软骨损伤（儿童禁用）",
        "覆盖阿司匹林致Reye综合征（儿童病毒感染禁用）",
        "覆盖氨基糖苷类/NSAID/二甲双胍肾毒性（CKD慎用）",
        "覆盖MAOI致高血压危象（嗜铬细胞瘤禁用）",
        "覆盖抗胆碱能药致肌无力危象（重症肌无力禁用）",
        "覆盖糖皮质激素致感染扩散（活动性结核慎用）",
        "自动排除否认/阴性诊断语境，避免误报",
        "新增测试文件：riskScanR112.test.js（14用例，全部通过）"
      ]
    },
    {
      "version": "v2.96",
      "date": "2026-10-21",
      "title": "R110 药物依赖性风险检测",
      "tags": [
        "新增",
        "安全"
      ],
      "items": [
        "新增 checkDrugDependencyRisk(R110)：检测阿片类、苯二氮䓬类、中枢兴奋剂等成瘾性药物的使用风险",
        "覆盖吗啡/芬太尼/曲马多等阿片类，地西泮/唑吡坦等镇静催眠药，哌甲酯等兴奋剂",
        "自动检测使用时长并分级：>14天阿片类/>30天苯二氮䓬类报high风险",
        "自动检测芬太尼+苯二氮䓬联用风险（呼吸抑制叠加）",
        "自动排除停用/已停用药物，避免误报",
        "老年人使用苯二氮䓬类增加跌倒/骨折风险警告",
        "新增测试文件：riskScanR110.test.js（8用例，全部通过）"
      ]
    },
    {
      "version": "v2.95",
      "date": "2026-10-21",
      "title": "R109 处方逻辑一致性检测",
      "tags": [
        "新增",
        "质量"
      ],
      "items": [
        "新增 checkPrescriptionLogic(R109)：检测处方逻辑矛盾——剂量-频次不一致、重复用药、疗程超长",
        "覆盖规则：QD类药物的bid/tid/qn误用、TID类药物的qn误用、12种药物-商品名映射、7种抗菌/抗病毒药+3种激素的疗程上限",
        "自动排除否定语境（停用/已停等），避免对已停用药物报重复用药",
        "不同剂型同名药物视为同成分重复（阿托伐他汀片 vs 分散片），符合临床语义",
        "新增测试文件：riskScanR109.test.js（8用例，全部通过）"
      ]
    },
    {
      "version": "v2.94",
      "date": "2026-10-21",
      "title": "R107+R108 药物-食物相互作用增强 + 药物-检验指标干扰检测",
      "tags": [
        "新增",
        "安全"
      ],
      "items": [
        "R107 药物-食物相互作用增强：新增10个高危组合（四环素类+二价阳离子、左甲状腺素+豆浆/钙剂、双膦酸盐+果汁/咖啡、抗癫痫药+葡萄柚、免疫抑制剂+石榴汁、他汀类+酒精、NSAIDs+酒精、二甲双胍+酒精、地高辛+高纤维、左甲状腺素+咖啡）",
        "R108 药物-检验指标干扰检测：新增checkDrugLabInteraction函数，12条干扰规则（维生素C+葡萄糖/隐血、左旋多巴+儿茶酚胺、对乙酰氨基酚+血糖、头孢哌酮+乙醇、碳酸锂+甲状腺功能、氢氯噻嗪+血糖、奎宁+血糖、别嘌醇+尿酸、维生素B2+尿胆原等）",
        "所有R107/R108条目source字段标注来源，便于测试区分",
        "新增测试文件：riskScanR107.test.js（12用例）、riskScanR108.test.js（12用例）"
      ]
    },
    {
      "version": "v2.93",
      "date": "2026-10-21",
      "title": "R107 药物-食物相互作用增强（扩展版）",
      "tags": [
        "新增",
        "安全"
      ],
      "items": [
        "新增 R107 扩展条目：四环素类/喹诺酮类+二价阳离子（螯合吸收↓）、左甲状腺素+豆浆/钙剂（吸收↓）、双膦酸盐+果汁/咖啡（吸收↓↓）、抗癫痫药+葡萄柚（CYP3A4抑制→毒性↑）、免疫抑制剂+石榴汁（CYP3A4抑制→肾毒性↑）、他汀类+酒精（肝毒性叠加）、NSAIDs+酒精（GI出血↑）、二甲双胍+酒精（乳酸酸中毒↑）、地高辛+高纤维（吸收↓）、左甲状腺素+咖啡（吸收↓）",
        "新增 10 个高危药物-食物组合，覆盖螯合、CYP3A4 抑制、肝毒性叠加、乳酸酸中毒等场景",
        "所有新增条目 source 字段标注 R107，便于测试区分和后续维护"
      ]
    },
    {
      "version": "v2.92",
      "date": "2026-10-21",
      "title": "R106 用药时间合理性检测",
      "tags": [
        "新增",
        "安全"
      ],
      "items": [
        "新增 checkMedicationTiming(R106)：检测给药时间与药物特性、进餐要求的匹配性",
        "覆盖30+种药物的最佳服药时间规则（左甲状腺素空腹、他汀晚间、阿卡波糖餐时等）",
        "自动排除已停用药物，避免误报",
        "新增测试文件：riskScanR106.test.js（11用例，全部通过）"
      ]
    },
    {
      "version": "v2.91",
      "date": "2026-10-21",
      "title": "R105 处方书写规范检测",
      "tags": [
        "新增",
        "质量"
      ],
      "items": [
        "新增 checkPrescriptionFormat(R105)：检测处方行中缺失必要字段（剂量/剂型/频次/途径）的书写缺陷",
        "触发条件：句子包含药物关键词且非否定语境",
        "缺失剂量→info，静脉给药未注明途径→medium",
        "操作前缀句（停用/暂停/加用等）自动跳过，避免误报",
        "新增测试文件：riskScanR105.test.js（7用例，全部通过）"
      ]
    },
    {
      "version": "v2.90",
      "date": "2026-10-20",
      "title": "R103+R104 药物相互作用增强 + 静脉配伍禁忌检测",
      "tags": [
        "新增",
        "安全"
      ],
      "items": [
        "R103 药物-药物相互作用增强：新增15个高危组合（硝酸酯+PDE5i、MAOI+SSRI、他汀+吉非罗齐等），source字段标注来源",
        "R104 静脉用药配伍禁忌检测：新增checkInjCompatibility函数，检测同瓶/同Y型管输注时的物理/化学禁忌",
        "R104覆盖12条配伍禁忌：头孢曲松+钙剂、美罗培南+丙戊酸、胺碘酮+呋塞米、氨茶碱+维C、红霉素+钙、肾上腺素+碳酸氢钠、多巴胺+碳酸氢钠、地西泮+呋塞米、清开灵+青霉素、参麦+头孢类等",
        "R104仅在有静脉给药语境时触发（注射液/静滴/输液等关键词）",
        "新增测试文件：riskScanR103.test.js（17用例）、riskScanR104.test.js（13用例）"
      ]
    },
    {
      "version": "v2.89",
      "date": "2026-10-20",
      "title": "R103 药物-药物相互作用增强（扩展高危组合）",
      "tags": [
        "新增",
        "安全"
      ],
      "items": [
        "新增 R103 高危相互作用条目：硝酸酯+PDE5抑制剂（致命低血压）、MAOI+SSRI（血清素综合征）、他汀+吉非罗齐（横纹肌溶解）、华法林+胺碘酮/氟康唑（出血）、茶碱+环丙沙星（茶碱中毒）、甲氨蝶呤+丙磺舒（MTX毒性）、抗癫痫药+口服避孕药（避孕失败）、四环素/喹诺酮+二价阳离子（螯合吸收↓）、左甲状腺素+PPI（吸收↓）、锂盐+ACEI/NSAID（锂中毒）、氯氮平+氟西汀（浓度↑→癫痫）、华法林+头孢哌酮（低凝血酶原血症）、甲氨蝶呤+青霉素/TMP（清除↓）、地高辛+四环素（肠肝循环↑）、异维A酸+四环素（假性脑水肿）、环孢素+非那西丁（协同肾毒性）",
        "新增 15 个高危药物对，覆盖心血管、精神科、抗感染、风湿免疫等多科室场景",
        "所有新增条目在 source 字段标注 R103，便于测试区分和后续维护"
      ]
    },
    {
      "version": "v2.88",
      "date": "2026-10-20",
      "title": "R102 老年人多重用药综合风险评估",
      "tags": [
        "新增",
        "安全"
      ],
      "items": [
        "新增 checkPolypharmacyRisk(R102)：检测老年患者（≥65岁）同时服用多种药物时的综合风险",
        "分级标准：5-9种→medium，10-19种→high，≥20种→extreme",
        "年龄来源：优先 patient.age，否则从文本提取（如\"72岁\"）",
        "建议：每3月复核用药清单，停用不必要的药物；≥10种强烈建议药师介入"
      ]
    },
    {
      "version": "v2.87",
      "date": "2026-10-20",
      "title": "R100 药物-保健品/草药相互作用检测（修复版）",
      "tags": [
        "新增",
        "安全"
      ],
      "items": [
        "新增 checkHerbDrugInteraction(R100)：检测圣约翰草/银杏叶/人参/姜黄/鱼油等与处方药的相互作用",
        "三通道药名收集：MED_FORM_RE + INJ_PREFIX_RE + 全文扫已知药物关键词（覆盖无剂型后缀写法）",
        "圣约翰草+环孢素→high（CYP3A4诱导→免疫抑制剂血药浓度↓50-80%→移植排斥）",
        "银杏叶+华法林→high（抗血小板+抗凝→出血风险↑）",
        "人参+华法林→medium（INR↓血栓风险↑）",
        "姜黄素+华法林→medium（CYP抑制+抗血小板）",
        "鱼油+阿司匹林→low（出血风险轻度↑）"
      ]
    },
    {
      "version": "v2.86",
      "date": "2026-10-20",
      "title": "R99 药物-食物/饮品相互作用检测",
      "tags": [
        "新增",
        "安全"
      ],
      "items": [
        "新增 checkFoodDrugInteraction(R99)：检测葡萄柚汁+他汀/CCB、酒精+甲硝唑/头孢/镇静剂、烟草+茶碱、华法林+维生素K食物、高钾食物+保钾药物等相互作用",
        "葡萄柚汁含呋喃香豆素→CYP3A4抑制→他汀血药浓度↑3-10倍→横纹肌溶解/低血压危象",
        "酒精+甲硝唑/头孢→双硫仑样反应→面红心悸呼吸困难重则致命",
        "酒精+地西泮/咪达唑仑→呼吸抑制昏迷",
        "烟草→CYP1A2诱导→茶碱代谢↑疗效↓",
        "菠菜等维K食物+华法林→INR↓血栓风险↑",
        "香蕉等的高钾食物+螺内酯→高钾血症心律失常"
      ]
    },
    {
      "version": "v2.85",
      "date": "2026-10-20",
      "title": "R70-R72 预存失败修复——对乙酰氨基酚安全剂量豁免+地高辛监测降级",
      "tags": [
        "新增",
        "安全"
      ],
      "items": [
        "修复R70-d对乙酰氨基酚误报：0.5g tid（日剂量1.5g）安全剂量被hepatic-dosing和hepatotoxicity-risk误报为medium。修复：checkHepatotoxicity和checkHepaticDosing均增加对乙酰氨基酚安全剂量豁免逻辑（≤4g/天跳过报警）。",
        "修复R72地高辛剂量测试：0.125mg qd常规治疗剂量触发drug-lab-monitoring high。修复：将DRUG_LAB_MONITORING中地高辛severity从high降为medium（常规剂量仅需常规监测，非紧急高风险）。",
        "全量测试981 pass / 0 fail，100%通过率。"
      ]
    },
    {
      "tags": [
        "新增",
        "安全"
      ],
      "items": [
        "新增checkAntibioticRisk(R95)：检测22种特殊使用级抗菌药物风险——碳青霉烯类(美罗培南/亚胺培南/厄他培南)、糖肽类(万古霉素/替考拉宁)、氨基糖苷类(阿米卡星/庆大霉素/妥布霉素/链霉素)、喹诺酮类(环丙沙星/左氧氟沙星/莫西沙星)、林可酰胺类(克林霉素/林可霉素)、磺胺类、硝基咪唑类、利奈唑胺、替加环素等",
        "疗程>14天自动升级severity(中危→高危/低危→中危)",
        "阿莫西林/头孢类等普通抗生素不触发",
        "新增checkCytochromeInteraction(R96)：检测CYP450抑制剂/诱导剂与底物药物的相互作用",
        "抑制剂表：唑类抗真菌药(氟康唑/伊曲康唑/伏立康唑)、大环内酯类(克拉霉素/红霉素)、蛋白酶抑制剂(利托那韦)、SSRI(帕罗西汀/氟西汀)、胺碘酮/维拉帕米/地尔硫卓等",
        "诱导剂表：利福平/利福布汀、卡马西平、苯妥英、苯巴比妥、圣约翰草等",
        "底物表：他汀类(辛伐他汀/阿托伐他汀等)、CCB(氨氯地平/硝苯地平等)、华法林、苯妥英、地西泮、茶碱、环孢素等33种药物",
        "评分规则：强抑制剂+底物→high；中/弱抑制剂+底物→medium；诱导剂+底物→medium(疗效降低)",
        "测试：R95 17项全绿 + R96 13项全绿，全量979项测试通过（977绿+2预存失败与本次无关）。"
      ],
      "version": "v2.83",
      "date": "2026-10-20",
      "title": "历史版本 2"
    },
    {
      "version": "v2.78",
      "date": "2026-10-20",
      "title": "R93+R94: 药物诱导血小板减少/血栓风险 + 5-HT综合征风险检测",
      "tags": [
        "新增",
        "安全"
      ],
      "items": [
        "新增checkDrugITPRisk(R93)：检测20种已知致血小板减少或出血风险药物——肝素/低分子肝素(高危HIT)、华法林/利伐沙班/阿哌沙班/达比加群(抗凝出血)、阿司匹林/氯吡格雷/替格瑞洛(抗血小板)、丙戊酸钠/奎尼丁/利奈唑胺(免疫性ITP)等",
        "血小板计数<100→自动升级为high；血小板<150→medium升级",
        "新增checkSerotoninSyndrome(R94)：检测42种5-HT能药物叠加风险——SSRI(6种)/SNRI(3种)/曲马多/利奈唑胺/曲普坦/美蓝等",
        "评分规则：单药info；2种≥4分或总分≥5→medium；≥2种高危药或总分≥5→high",
        "危险因素叠加：老年(+1)/肝功能不全(+2)/肾功能不全(+2)",
        "测试：R93 17项全绿 + R94 15项全绿，全量977项测试通过（975绿+2预存失败与本次无关）。"
      ]
    },
    {
      "version": "v2.76",
      "date": "2026-10-20",
      "title": "R92: QTc间期延长药物风险检测（42种已知QT延长药 + 危险因素叠加）",
      "tags": [
        "新增",
        "安全"
      ],
      "items": [
        "新增checkQtcRisk：基于CredibleMeds.org QT Drugs List检测处方中已知QT延长药物——Known Risk(3分)/Conditional Risk(1-2分)分级",
        "已知高风险(3分)8种：胺碘酮/索他洛尔/奎尼丁/普鲁卡因胺/伊布利特/多菲立德/硫利达嗪/齐拉西酮",
        "条件性风险(1-2分)34种：莫西沙星/左氧氟沙星/红霉素/克拉霉素/西酞普兰/艾司西酞普兰/奥氮平/喹硫平等",
        "危险因素叠加：低钾/低镁/心动过缓/先心病/心衰/老年/女性各+1-2分",
        "≥2种Known Risk药 或 总分≥4→high；单项中风险→medium；无QT药→不报",
        "全量975项测试通过（973绿+2预存R72失败，与R91/R92无关）。"
      ]
    },
    {
      "version": "v2.75",
      "date": "2026-10-20",
      "title": "R91: 药物骤停/戒断综合征风险检测（30种需渐减停药药物）",
      "tags": [
        "新增",
        "安全"
      ],
      "items": [
        "新增checkDrugWithdrawal：检测处方中需逐步减量的药物骤停风险——骤停可致危象/癫痫/肾上腺危象",
        "高危骤停(16种)：β-blockers(普萘洛尔/美托洛尔/卡维地洛/比索洛尔)、可乐定、苯二氮卓类(地西泮/阿普唑仑/劳拉西泮/奥沙西泮)、SSRI/SNRI(帕罗西汀/文拉法辛/度洛西汀)、糖皮质激素(泼尼松/甲泼尼龙/地塞米松)、巴氯芬、阿片类(吗啡/羟考酮)",
        "中危骤停(8种)：氟西汀/舍曲林/西酞普兰/艾司西酞普兰、加巴喷丁/普瑞巴林、曲马多、抗癫痫药(丙戊酸钠/卡马西平/拉莫三嗪)",
        "已提及减量/渐减→降级为info；明确换药指令→high降medium",
        "否定语境跳过；无用药列表不报；同medCore去重",
        "全量975项测试通过（973绿+2预存R72失败，与R91/R92无关）。"
      ]
    },
    {
      "version": "v2.74",
      "date": "2026-10-20",
      "title": "R90: 累计抗胆碱能负荷（ACB）检测",
      "tags": [
        "新增",
        "安全"
      ],
      "items": [
        "新增安全级checkAnticholinergicBurden：基于ACB Scale计算处方中多种抗胆碱能药物的累计负荷——≥3分或老年≥2分→高危报警",
        "ACB=3(强抗胆碱能)20种：阿米替林/多塞平/奥昔布宁/苯海索/氯苯那敏/赛庚啶/羟嗪/东莨菪碱/异丙嗪/苯海拉明/丙咪嗪/氯丙嗪/奋乃静/氯氮平/托特罗定/索利那新/氯米帕明/阿托品/颠茄/双环维林",
        "ACB=2(中)14种：帕罗西汀/奥氮平/奎硫平/卡马西平/西咪替丁/洛哌丁胺/哌替啶/吗啡/可待因/金刚烷胺/巴氯芬/环苯扎林/地尔硫卓/特非那定",
        "ACB=1(弱)20种：华法林/地高辛/呋塞米/雷尼替丁/氟哌啶醇/阿替洛尔/美托洛尔/硝苯地平/地西泮/劳拉西泮/西酞普兰/氟西汀/舍曲林/文拉法辛/曲唑酮/秋水仙碱/羟考酮/曲马多/加巴喷丁/普瑞巴林",
        "老年人加权：≥65岁→ACB≥2即high（非老年需≥3），含替代建议（帕罗西汀→艾司西酞普兰、奥昔布宁→米拉贝隆、苯海拉明→非索非那定）",
        "ACB=1不报警；同medCore去重；≤1条报警；全量430项全绿（416→430）。"
      ]
    },
    {
      "version": "v2.73",
      "date": "2026-10-20",
      "title": "R89: 肝功能不全剂量调整提醒（35种经肝代谢/肝损禁忌/减量药物）",
      "tags": [
        "新增",
        "安全"
      ],
      "items": [
        "新增安全级checkHepaticDosing：覆盖35种经肝代谢/需按肝功调整剂量的药物，无肝病记录时提醒查肝功，有肝病记录时按严重度分级报警",
        "禁忌级(high)15种：对乙酰氨基酚(限2g)、他汀全族、丙戊酸(线粒体毒性)、甲氨蝶呤(肝纤维化)、酮康唑(黑框警告)、异烟肼/利福平/吡嗪酰胺、硫唑嘌呤",
        "需减量级(medium)13种：苯二氮卓类(4种→劳拉西泮为首选替代)、华法林、甲硝唑(Child C减半)、吗啡/羟考酮/曲马多(口服生物利用度↑清除↓)、美托洛尔/普萘洛尔(首过效应降低)、维拉帕米/硝苯地平/尼群地平、伏立康唑/伊曲康唑",
        "慎用(caution)4种：泼尼松(需肝活化→换泼尼松龙)、阿奇霉素、红霉素(依托红霉素禁忌)、胺碘酮(溶酶体磷脂沉积)",
        "已记录肝病→根据禁忌/减量分级报high/medium并推荐替代(他汀→普伐他汀/瑞舒、BZD→劳拉西泮/奥沙西泮、阿片→芬太尼)；无肝病记录→提醒先查肝功能",
        "LIVER_DISEASE_RE覆盖肝硬化/肝炎/肝衰/脂肪肝/酒精性肝/药物性肝/Child/MELD等15+肝病模式；否定排除+≤3条去重",
        "+18项测试，全量416项全绿（398→416）。"
      ]
    },
    {
      "version": "v2.72",
      "date": "2026-10-20",
      "title": "R88: 药物-疾病禁忌检测（诊断交叉匹配）",
      "tags": [
        "新增",
        "安全"
      ],
      "items": [
        "新增安全级checkDrugDiseaseContra：处方药物与患者已有诊断之间的禁忌交叉匹配——从诊断段提取疾病词+全文搜索",
        "绝对禁忌(high)11对：普萘洛尔+哮喘/COPD(支气管痉挛)、维拉帕米/地尔硫卓+心衰(负性肌力)+SSS、吡格列酮/罗格列酮+心衰(水钠潴留)、哌替啶+肾衰(代谢物蓄积)、二甲双胍+脓毒症/休克(乳酸酸中毒)、甲氧氯普胺+癫痫、毛果芸香碱+虹膜炎、阿托品+BPH、苯海索+BPH",
        "相对禁忌(medium)14对：选择性β1+哮喘、β阻滞剂+COPD、NSAID全族+溃疡/心衰/CKD、二甲双胍+肝病、糖皮质激素+糖尿病/感染、α1阻滞剂+体位性低血压、抗精神病药+帕金森、雌激素+乳腺癌/VTE、一代抗组胺+青光眼",
        "否定诊断排除(否认哮喘→不报警)；≤3条；同疾病-药物去重；matchedDisease展示实际匹配疾病词",
        "+13项测试，全量398项全绿（385→398）。"
      ]
    },
    {
      "version": "v2.71",
      "date": "2026-10-20",
      "title": "R87: 药物-检验指标交互提醒（监测医嘱完整性检查）",
      "tags": [
        "新增",
        "安全"
      ],
      "items": [
        "新增安全级checkDrugLabMonitoring：处方中用需定期监测检验指标的药物时，自动检查病历中是否已有对应化验结果，无则提醒开具监测医嘱",
        "高危级(high)7种：华法林→INR/凝血、碳酸锂→锂血浓度+TSH+Cr、地高辛→血浓度+K+Cr、胺碘酮→甲功+LFT+胸片、甲氨蝶呤→LFT+FBC+Cr、丙戊酸钠→LFT+FBC+血氨、环磷酰胺→FBC+尿常规+LFT",
        "推荐级(medium)20种：他汀(3)→LFT基线、ACEI/ARB(5)→K++Cr、螺内酯→K++Cr、二甲双胍→eGFR、NSAID(3)→Cr+FBC、利尿剂(2)→K++Na+Cr、别嘌醇→LFT+Cr、糖皮质激素(3)→血糖+BP、左甲状腺素→TSH",
        "hasLab智能检测：扫描化验缩写+数值对+中文语义映射+防药物名误判三关后静默跳过",
        "同药类按drugLabel去重（ACEI多种只报一次）；≤4条；high优先排在medium前",
        "+21项测试，全量385项全绿（364→385）。"
      ]
    },
    {
      "version": "v2.70",
      "date": "2026-10-20",
      "title": "R86: 老年人 Beers 标准不适合用药检测（PIM高警+慎用提醒）",
      "tags": [
        "新增",
        "安全"
      ],
      "items": [
        "【新增·安全级】checkBeersCriteria：基于2023 AGS Beers Criteria®，检测≥65岁患者处方中的潜在不适当用药(PIM)",
        "isElderly 三通道年龄识别：parseAgeYears(patient对象.age) + note文本年龄正则 + 老年/高龄关键词",
        "AVOID(high) 39种药物/类别：苯二氮卓类(6种→跌倒/谵妄)、Z-drugs(3种→骨折)、抗胆碱能(4种→谵妄/便秘)、TCA(4种→心脏毒性)、一代抗组胺(4种→嗜睡/谵妄)、骨骼肌松弛剂(2种→跌倒)、一代抗精神病药(2种→EPS)、长效磺脲(2种→低血糖)、长效NSAID(3种→消化道出血/CNS)、α1阻滞剂(2种→体位性低血压)+雌激素/巴比妥/雄激素/奎尼丁/双嘧达莫/利血平/甲氧氯普胺/哌替啶",
        "CAUTION(medium) 18种：PPI长期(5种→C.diff/肺炎/骨折)、NSAID老年(5种→消化道/肾/CVD)、SGA痴呆(3种→CVAE/死亡)、SSRI(2种→低钠/抗胆碱能)、胰岛素滑动标准",
        "地高辛智能豁免：≤0.125mg不报警（老年人安全剂量）；≤4条限制按类别去重",
        "+24项测试，全量364项全绿（340→364）。"
      ]
    },
    {
      "version": "v2.69",
      "date": "2026-10-20",
      "title": "R85: 妊娠/哺乳期用药安全标签（致畸禁忌+哺乳禁忌+备孕提醒）",
      "tags": [
        "新增",
        "安全"
      ],
      "items": [
        "【新增·安全级】checkPregnancyLactationSafety：自动检测患者妊娠/哺乳/备孕状态，对处方中含致畸/哺乳禁忌药物报警",
        "detectPregLactStatus 三状态识别：妊娠（孕X周/妊娠/停经等9模式）、哺乳（哺乳/产褥/母乳喂养等6模式）、备孕（备孕/计划怀孕等6模式），均含否定排除",
        "妊娠禁忌(high) 25种药物：ACEI全族/ARB全族（肾发育异常）、他汀全族（胆固醇合成必需）、华法林（胚胎病）、甲氨蝶呤（氨蝶呤综合征）、维A酸类（异维A酸/阿维A）、丙戊酸（脊柱裂10×）、米索前列醇/环磷酰胺/沙利度胺、四环素类",
        "妊娠慎用(medium) 13种：NSAID类孕晚期（动脉导管早闭）、氟喹诺酮（软骨毒性）、胺碘酮（胎儿甲状腺肿）、卡马西平/苯妥英、碳酸锂（Ebstein畸形）、螺内酯/地西泮",
        "哺乳禁忌(high) 8种：胺碘酮（含碘+长半衰期）、环磷酰胺/甲氨蝶呤、麦角类（抑制泌乳）、放射性碘、碳酸锂、异维A酸",
        "哺乳慎用(medium) 5种：四环素类、甲硝唑、地西泮、氟康唑",
        "自动匹配替换建议：ACEI/ARB→拉贝洛尔/硝苯地平、华法林→低分子肝素、他汀→停用",
        "备孕与妊娠同等对待（致畸药须在孕前停用）；否定妊娠不触发；≤4条限制；按severity排序high在前",
        "+25项测试，全量340项全绿（315→340）。"
      ]
    },
    {
      "version": "v2.68",
      "date": "2026-10-20",
      "title": "R84: 肾功能剂量调整提醒（33种经肾排泄/肾衰禁用/需减量药物）",
      "tags": [
        "新增",
        "安全"
      ],
      "items": [
        "【新增·安全级】checkRenalDosing：肾功能剂量调整提醒——覆盖33种经肾排泄药物，分禁用级(high)和需减量级(medium)",
        "禁用级7种：二甲双胍(eGFR<30)、依诺肝素(CrCl<30)、低分子肝素、磺达肝癸钠(CrCl<20)、氯化钾/补钾、螺内酯、秋水仙碱(CrCl<15-30)",
        "需减量级26种：SGLT2i(恩格列净/达格列净/卡格列净)、ACEI(赖诺普利/依那普利/福辛普利)、ARB(缬沙坦/厄贝沙坦)、万古霉素/氨基糖苷类(庆大/阿米卡星 TDM)、头孢菌素(头孢他啶/头孢吡肟)、碳青霉烯(美罗培南)、氟喹诺酮(左氧/莫西沙星)、地高辛/别嘌醇、抗病毒(伐昔洛韦/阿昔洛韦)、加巴喷丁/普瑞巴林、哌拉西林他唑巴坦、双膦酸盐(伊班膦酸/唑来膦酸)",
        "已记录肾衰/CKD/透析/肾移植/肌酐清除率时自动跳过（医师已知肾功能状态）",
        "≤3条限制，按药物类别（category）去重；非经肾排泄药物（氨氯地平/奥美拉唑等）不触发",
        "+20项测试，全量315项全绿（295→315）。"
      ]
    },
    {
      "version": "v2.67",
      "date": "2026-10-20",
      "title": "R83: 药物相互作用/配伍禁忌检测（双硫仑/出血/CYP3A4/高钾/地高辛/QT/锂/血清素）",
      "tags": [
        "新增",
        "安全"
      ],
      "items": [
        "【新增·安全级】checkDrugInteractions：同一处方中药物间高危相互作用检测——50+ 对交互，8大类：双硫仑样反应（头孢/甲硝唑/呋喃唑酮×酒精/藿香正气）、出血风险（华法林×阿司匹林/布洛芬/塞来昔布、氯吡格雷×奥美拉唑）",
        "CYP3A4他汀肌病（阿托伐/辛伐他汀×克拉霉素/红霉素/伊曲康唑/氟康唑）、高钾血症（螺内酯/ACEI/ARB×补钾、ACEI×螺内酯）、甲氨蝶呤×NSAID毒性、地高辛×胺碘酮/维拉帕米/呋塞米、QT延长（胺碘酮×莫西/左氧氟沙星）、锂×NSAID/HCTZ、血清素综合征（SSRI×曲马多）",
        "三通道药名收集：①medNamesIn 剂型提取 ②全文扫交互表药物关键词（防无剂型药名漏掉） ③food/OTC关键词（酒/藿香正气）",
        "双向匹配（候选→表 + 表→候选），≤3条限制，按机制去重",
        "+19项测试，全量295项全绿（278→295）。"
      ]
    },
    {
      "version": "v2.66",
      "date": "2026-10-20",
      "title": "R82: 药物-过敏交叉检查（Drug-Allergy Cross-Check）",
      "tags": [
        "新增",
        "安全"
      ],
      "items": [
        "【新增·安全级】checkAllergyMedConflict：过敏史与处方药物的交叉族匹配——从过敏史提取过敏药物词，与处方全部药名做交叉族匹配",
        "ALLERGY_CROSS_FAMILIES 10组交叉反应链：青霉素→西林类(high)/头孢(medium)/碳青霉烯(已标注)、头孢→头孢类(high)、磺胺→磺胺抗菌药(high)+含磺胺基团非抗菌药(medium)、阿司匹林→NSAID(high)+COX-2抑制剂(medium)、酯类局麻药同族(high)、酰胺类局麻药同族(high)、大环内酯同族(medium)",
        "extractAllergyDrugAgents 双通道提取过敏药物：①XX过敏/皮试阳性正则 + ②过敏族关键词（头孢/磺胺/青霉素等）",
        "交叉匹配三形态容错（原名/剥剂型/剥剂型+剥盐），支持过敏原词干扩展（\"青霉素\"→\"青霉素类\"→命中\"氨苄西林\"）",
        "非药物过敏原（花粉/尘螨/海鲜/花生等）自动过滤，不产生假阳性",
        "+14项测试，全量278项全绿。"
      ]
    },
    {
      "version": "v2.65",
      "date": "2026-10-20",
      "title": "R81: 同类重复用药检测（ACEI+ARB/双NSAID/双他汀/双PPI）",
      "tags": [
        "新增",
        "安全"
      ],
      "items": [
        "【新增·安全级】checkDuplicateTherapy：同类重复用药检测——同一张处方中同时出现两种同治疗类别药物（含盐型/剂型后缀宽容匹配）",
        "SAME_CLASS_GROUPS 四组硬禁忌联用：①ACEI+ARB（ONTARGET证实有害）②双NSAID（含COX-2抑制剂，胃肠/肾/心血管风险叠加）③双他汀（肝酶/肌病风险加倍）④双PPI（无额外抑酸获益）",
        "只查指南明确不推荐的联用——阿司匹林+氯吡格雷DAPT等有意联合不入表（抑制误报）",
        "detectSameClassDuplicates：三形态匹配（原名/剥剂型/剥剂型+剥盐），整张处方最多报2组",
        "+13项测试，全量264项全绿。"
      ]
    },
    {
      "version": "v2.64",
      "date": "2026-10-20",
      "title": "R80: MED_FORM_RE 处方操作词前缀剥离 + NON_MED_WORDS 扩展",
      "tags": [
        "修复",
        "安全"
      ],
      "items": [
        "【修复·安全级】stripActionPrefix：处方行\"暂停华法林片\"→MED_FORM_RE将\"暂停华法林\"整体提取为药名→报\"草稿里开了暂停华法林\"的假unourced-med告警。新增 NON_MED_ACTION_PREFIX_RE 剥离\"暂停/停用/加用/改用/续用/联用/换用/试用/继续/续服/续吃\"等双字处方操作词前缀，剥离后才查伪药过滤和NON_MED_WORDS。medNamesIn+collectMedLines 双路应用。",
        "【新增】NON_MED_WORDS 从15扩至35词条——补分次/临时/长期/短期/立即/配合/辅助/支持/对症/预防/治疗/暂停/停用/加用/改用/续用/检查/诊断/观察/考虑/注意等处方行高频非药用词",
        "【防御】stripActionPrefix 设计保守——仅剥离完整2-3字前缀（要求前缀后紧跟至少2个中文字），避免误伤\"加巴喷丁\"（\"加\"在NON_MED_ACTION_PREFIX_RE中但\"加巴喷丁\"本身是合法药名→前缀匹配\"加\"但不满足{2}前瞻，不剥离）",
        "+5 项测试，全量 251/251 全绿。"
      ]
    },
    {
      "version": "v2.63",
      "date": "2026-10-20",
      "title": "R79: 儿科剂量参考表大幅扩展 + pedLookup 子串碰撞修复",
      "tags": [
        "新增",
        "修复",
        "儿科"
      ],
      "items": [
        "【新增·安全级】DEFAULT_PED_DOSE_REF 从9药扩至28药（6大类）：抗菌药（头孢呋辛、头孢地尼、头孢丙烯、红霉素、罗红霉素、青霉素V）、呼吸/抗过敏（氯雷他定、西替利嗪、孟鲁司特）、抗癫痫（丙戊酸钠、左乙拉西坦）、糖皮质激素（泼尼松、甲泼尼龙）、消化（多潘立酮）、抗真菌（氟康唑）、心血管（卡托普利、氨氯地平、呋塞米、螺内酯）——覆盖儿科门诊Top 30用药",
        "【修复·安全级】pedLookup 子串碰撞（R79-b）：罗红霉素被红霉素条目吞、红霉素被罗红霉素条目吞——双向匹配都出错。修复：精确别名匹配优先（bare===alias→直达），退路才选最长别名。",
        "【修复·安全级】collectPedMedCandidates 回退路（R79-c）：alias 按长度降序排列 + consumed ranges 去重，短别名 红霉素 不得复用已消费的 罗红霉素 区间",
        "【发现】儿科剂量 1.4x 阈值本就保守设计：头孢呋辛400mg bid→20kg→40mg/kg/日 vs 30×1.4=42 被放过，这并非bug而是防误报。+20 项测试，全量 246/246 全绿。"
      ]
    },
    {
      "version": "v2.62",
      "date": "2026-10-20",
      "title": "R78: NEGATION_OBJECTS 扩展 + PRN_HIGH_ALERT 扩至 43 药",
      "tags": [
        "新增",
        "安全"
      ],
      "items": [
        "【新增·安全级】NEGATION_OBJECTS 扩展5项：癫痫/心律失常/痛风/肺炎/骨折——问诊高频否定对象缺表导致对应错误无法检出（false negative）",
        "【新增·安全级】PRN_HIGH_ALERT 从35扩至43：补8种心血管急救药——地高辛(强心苷)、胺碘酮(抗心律失常)、去乙酰毛花苷(西地兰)、多巴胺(升压)、间羟胺(阿拉明)、去氧肾上腺素、异丙肾上腺素、纳洛酮——均为病房/急诊高频PRN用药，缺表则上限检查不覆盖"
      ]
    },
    {
      "version": "v2.61",
      "date": "2026-10-20",
      "title": "R77: 否定窗口扩展 + LATERALITY_PARTS 补漏",
      "tags": [
        "修复",
        "安全"
      ],
      "items": [
        "【修复·安全级】否定窗口扩展（R77-a）：findNegatedObjects 否定词→对象间距窗口从6字扩至10字，hasNegationBefore 10→14字。上限保持保守14字内。",
        "【修复】LATERALITY_PARTS 补漏（R77-b）：18→31部位——补腕/肘/股/胫/腓/颌/颊/颞/锁骨/鼻/拇指/趾/跟。+13项测试。全量213/213全绿。"
      ]
    },
    {
      "version": "v2.60",
      "date": "2026-10-20",
      "title": "R76: 药物家族覆盖大幅扩展 —— 9族高频药 + 配套后缀家族判定",
      "tags": [
        "新增",
        "安全"
      ],
      "items": [
        "【新增·安全级】CONFUSABLE_DRUGS 扩展至 170+ 条目（原 147）：补 9 族高频药——SGLT2i列净类(达格列净/恩格列净/卡格列净/艾托格列净)、DPP-4i列汀类(西格列汀/维格列汀/沙格列汀/阿格列汀/利格列汀)、α1唑嗪类(特拉唑嗪/多沙唑嗪/阿夫唑嗪)、5-HT3司琼类(昂丹司琼/格拉司琼/托烷司琼/帕洛诺司琼)、COX-2昔布类(塞来昔布/依托考昔/帕瑞昔布)、曲普坦类(舒马普坦/佐米曲普坦/利扎曲普坦)、双胍类(二甲双胍)、贝特类(非诺贝特/苯扎贝特/吉非贝齐)、苯二氮卓唑仑/西泮双词干(艾司唑仑/阿普唑仑/劳拉西泮/氯硝西泮)",
        "【新增·安全级】SUFFIX_FAMILIES 扩至 23 族（原 11）：添加拉唑(PPI)、列净(SGLT2i)、列汀(DPP-4i)、唑嗪(α1)、司琼(5-HT3)、昔布(COX-2)、普坦(曲普坦)、双胍、贝特、唑仑(苯二氮卓)、西泮(苯二氮卓)——确保同后缀家族替换出精准家族文案（\"同为PPI，不可互换\"而非笼统的\"没提到这个药\"）。跨后缀对（昔布↔考昔、唑仑↔西泮）仍由 CONFUSABLE_DRUGS + nearNameCollision 兜底，能检测但不点名家族。+13 项测试。全量 200/200 全绿。"
      ]
    },
    {
      "version": "v2.59",
      "date": "2026-10-20",
      "title": "R75: routeClassOf途径分类补漏——静脉推注/舌下/肛入漏判",
      "tags": [
        "修复",
        "安全"
      ],
      "items": [
        "【修复·安全级】routeClassOf 漏判三类途径导致静默 false negative：静脉推注/静脉输液（iv漏项）、塞肛/肛入/pr（rectal漏项）、舌下含服/舌下（sublingual漏项）。这些途径词都被 ROUTE_AFTER_RE 正确捕获，但 routeClassOf 全部归到 oral（default return），导致真正的途径变更（iv→oral、rectal→oral、sublingual→oral）被静默放过——途径变更是对用药安全性最直接的改变（iv起效秒级、oral首过效应、rectal避肝脏代谢、sublingual直接入血），漏判后果严重。修复：routeClassOf 补静脉推注/静脉输液 → iv；塞肛/肛入/pr → rectal；舌下含服/舌下 → sublingual。+9 项测试，全量 187/187 全绿。"
      ]
    },
    {
      "version": "v2.58",
      "date": "2026-10-20",
      "title": "R74: 碾碎动作否定误报修复 —— 安全指导不该报风险",
      "tags": [
        "修复",
        "安全"
      ],
      "items": [
        "【修复·安全级】碾碎动作否定误报（R74）：\"缓释片不可碾碎，应整片吞服\"这类安全指导此前被 checkCrushableRisk 报成 crush-forbidden 高危——isNegatedClause 只认句首否定（否认/无/未），\"不可/请勿/禁止/不宜/忌/避免\"等安全指导式否定在句中不被识别。新增 CRUSH_NEGATED_RE：碾碎/研碎/掰碎/鼻饲等动作词前 ≤4 字内有否定词（不可/请勿/禁止/不能/不应/不得/勿/避免/忌/不宜/切勿/切忌）则整句跳过。验证 11 场景全对：不可碾碎✅、请勿研碎✅、禁止掰碎✅、不宜碾碎后鼻饲✅、忌研碎✅、避免研碎✅、不能碾碎✅、泛化不可✅——全部静默；缓释片碾碎后鼻饲✅、研碎后胃管✅、泛化碾碎✅——照报高危/medium。+13 项测试。"
      ]
    },
    {
      "version": "v2.57",
      "date": "2026-10-20",
      "title": "R73: 拉丁药名通道 + 儿科剂量端到端验证 + 性能压测结论",
      "tags": [
        "新增",
        "修复",
        "安全",
        "性能"
      ],
      "items": [
        "【新增·安全级】拉丁药名提取通道 LATIN_MED_DOSE_RE（R73-c）：纯拉丁处方 \"Aspirin 100mg po qd\" 完全不被 MED_FORM_RE 提取（该正则要求中文剂型后缀如表/胶囊等），拉丁 vs 拉丁药物替换（Aspirin→Ibuprofen）整行静默——这是真实的药物替换漏报。新增第三条通道：2-20 个连续拉丁字母+紧跟剂量（数字+mg/g/ml 等），同时排除 30+ 给药缩写（po/iv/bid/tid/qn 等）和 27 个拉丁盐词/酸根（Sodium/Potassium/chloride/mesylate 等）。验证 6 场景全对：拉丁不一致→high✅、拉丁vs中文→high✅、一致→clean✅、缩写不误摘✅、混合病历正常✅、盐词不误摘✅。+6 项边缘测试。",
        "【验证】儿科剂量系统端到端确认（R73-b）：DEFAULT_PED_DOSE_REF 内置 9 种常用儿童药（阿莫西林/头孢克洛/头孢克肟/阿奇霉素/克拉霉素/布洛芬/对乙酰氨基酚/氨溴索/奥司他韦），支持体重/体表面积两种口径、日剂量上下限校验(+40%阈值)、单次封顶、疗程上限、年龄分档。三种真实超量场景全部正确触发：阿莫西林 150mg/kg/日→ped-dose-high、布洛芬 60mg/kg/日含单次封顶→ped-dose-high、阿奇霉素 7 天→ped-course-long。内置表作为回退无需前端传 pedDoseRefs。无需代码改动。",
        "【性能】压测结论：50并发×50病历（2500次 scanNoteRisks）= 433ms，0.17ms/call，5776 calls/sec。anyFragmentHit 预索引(R72-b)已消除最后热点，当前瓶颈不在计算而在 I/O，生产实际吞吐 >5000 req/s 无需进一步优化。"
      ]
    },
    {
      "version": "v2.56",
      "date": "2026-10-20",
      "title": "R72: 性能优化(anyFragmentHit预索引) + nginx安全加固 + 30例边缘系统测试",
      "tags": [
        "优化",
        "安全",
        "测试",
        "生产"
      ],
      "items": [
        "【优化】anyFragmentHit 预索引加速（R72-b）：原来的双滑窗每轮 O(n*m)——诊断名 N 字×每 3 字滑窗在 srcFlat 做 includes（O(m)），长病历可达数百次。改为首次调用时预建 srcFlat 全 3 字片段 Set（O(m) 建表 + O(1) 查），复用回调不重建。100 次 scanNoteRisks 从 ~40ms 降至 ~19ms，实测翻倍加速。confusableDrugsNorm 已有懒缓存无需重复优化。",
        "【安全加固】nginx 拦截扫描探测（R72-c）：生产日志 15 次 404 全为安全扫描——.env 路径穿越（含 /../.env）、/src/services/*.js 源码直读、/modules/*.js 前端泄露、/healthz 和 /api/health 非标探活。在 yiliao-https.conf 的 location / 前插入 6 条 444 静默断开规则：/.env$、/\\.\\.(/|$)、^/(src|modules)/.+\\.(js|ts|json|yaml|yml)$、=/healthz、=/api/health。nginx -t + reload 验证通过，拦截测试全返回 000，正常访问不受影响。",
        "【测试】30 例边缘系统测试（R72-d）：覆盖 10 大类——输入边界（空/空白/标点/超长/空transcript）、纯西文药名（Aspirin/Ibuprofen/Prednisone）、重复药名双写、特殊字符（希腊字母α/全角数字/emoji/IV大写）、异常剂量（0mg/10000mg=10g 等价/0.125mg）、否定语境边界（否认+段标题/\"无\"前缀/\"未见\"/否认句后跟真实药名不误杀）、剂型途径组合（po=口服等价/草稿口服vs对话静滴）、正则并发安全（同正则连续10次不被lastIndex污染/多份病历交叉调用一致）、R70/R71集成回归、性能不退化（100次<5s实测19ms）。30/30 全绿。"
      ]
    },
    {
      "version": "v2.55",
      "date": "2026-10-20",
      "title": "R71: 伪药名过滤器 + crush 泛化 + 生产回归守护自动化",
      "tags": [
        "新增",
        "修复",
        "安全",
        "运维"
      ],
      "items": [
        "【修复·安全级】伪药名过滤器 isPseudoMedName（R71-a）：MED_FORM_RE 懒匹配将 「把缓释片」「将控释片」等动词/介词+剂型片段抓成药名（name=\"把缓释\"suffix=\"片\"），触发假的 unsourced-med 高警「草稿里开了'把缓释'，但对话里没提到」。在 medNamesIn 加后过滤——2-4字的候选若去掉首字以缓释/控释/肠溶/片/胶囊等剂型词开头（标志首字是虚词前缀），跳过。已验证「把缓释/将控释/的肠溶/给缓释/用缓释」五类虚词不再产伪药名，同时「口服阿莫西林胶囊」不受影响。",
        "【新增】crush 检查泛化（R71-c）：「把缓释片碾碎了从胃管打进去」这种护理记录里常见写法当前全因缺药名静默——伪药名被过滤器踢掉后、无其他具名药时，crush 检查放行。新增 generic 路径：句内有缓释/控释/肠溶字样+碾碎等动作但无具名药时，降级为 medium 告警「缓释/控释/肠溶制剂不可碾碎」；具名药+modified 剂型的 high 路径不变、同名 high 与 generic 不会重复。验证：把缓释→generic medium、硝苯地平缓释→正常 high、咀嚼片→不报、否定→不报。",
        "【新增·运维】生产回归守护 automated regression guard（R71-b）：第三方反复回退共享门户（2026-10-19 一天三次）证明被动等巡检不够。部署 /www/apps/site_probe/regression_guard.py——每 6 小时对生产 API 跑 13 例关键场景（家族替换×6/剂型crush×3/PRN/否定/合规阴性×2），全对时日志 REG_OK、任何失败落 /tmp/yiliao_regression_fail 旗标+日志留详情。sysadmin 或定时扫描可据此发告警。首跑 13/13 全绿，已加入 cron（23 */6 * * *）。"
      ]
    },
    {
      "version": "v2.54",
      "date": "2026-10-19",
      "title": "【收官轮】易混药家族表收口（抗癫痫三族+喹诺酮16种）、缓释制剂禁碾碎检查、同药多剂型/多途径检测、段标题否定语境修复",
      "tags": [
        "新增",
        "修复",
        "安全",
        "生产"
      ],
      "items": [
        "【新增·安全级】易混药家族表收官（R70-a）：① 抗癫痫三族——卡马西平/奥卡西平（-西平，奥卡西平是前药、低钠血症与皮疹风险不同）、左乙拉西坦/布瓦西坦（-西坦，SV2A 配体同靶点不同药代）、丙戊酸钠/丙戊酸镁/丙戊酰胺（丙戊酸词干，镁盐胃肠反应轻）；② 喹诺酮补全至 16 种（补依诺沙星/培氟沙星/洛美沙星/氟罗沙星/加替沙星/吉米沙星/曲伐沙星/巴洛沙星/普卢利沙星/西他沙星）——喹诺酮头 2 字就不同（左氧氟/氧氟/环丙/诺氟），R58 的前 3 字判定对全家族失效，全靠沙星后缀家族兜底，表不收全就漏。同步修复 known 侧盐尾缺口：丙戊酸镁 endsWith(\"丙戊酸\") 为 false，不剥盐整个家族静默失效",
        "【新增·安全级】名称相近型兜底 nearNameCollision（R70-a）：家族后缀都没命中时，候选与对话里的已知易混药还有两种真实替换关系——① 子串型（≥4 字共享）：艾司奥美拉唑 vs 奥美拉唑（S-异构体效价约 2 倍）、单硝酸异山梨酯 vs 硝酸异山梨酯（给药频次不同）；② 前 2 字相同型：咪达普利 vs 咪达唑仑（R69 专录的降压↔镇静陷阱）、格列本脲 vs 格列美脲（低血糖风险谱不同）。两道闸防误报：known 必须来自人工审核过的 CONFUSABLE_DRUGS 表；子串型要求 ≥4 字共享——「阿莫西林 vs 莫西沙星」只共享 2 字不触发",
        "【新增·安全级】缓释/控释/肠溶制剂禁碾碎检查 crush-forbidden（R70-c）：管饲（鼻饲/胃管）场景最高发——碾碎缓释片等于把几小时的释放曲线压缩成一次剂量倾倒（血药浓度峰值可翻数倍），肠溶衣被破坏还会失去胃保护或使酸不稳定药提前失效。只对 modified 剂型报：咀嚼片/口腔崩解片/分散片/泡腾片设计上就可掰可嚼可溶（formClassOf 归 solid），不误报；动作词必须与药名同句",
        "【新增】同药多剂型/多途径检测（R70-b）：对话里同一药先后出现两种给药途径（「头孢曲松钠静滴三天后改口服」）报 high、两种剂型（「硝苯地平片效果一般换缓释片」）报 medium——医生中途改医嘱时草稿只写一种会丢失「已换用法」这一信息，比「草稿与某一次不一致」更值得先报。配套新增前缀式给药途径通道（「口服头孢曲松钠」「改口服XX」）：ASR 转写里途径词前置同样常见，只向后看会漏掉整段医嘱；锚定窗口结尾+标点隔断，前一个药的途径不 bleed",
        "【修复】段标题否定语境漏判（R70）：normalizeHeadings 把【用药史】归一成「用药史：」后，NEGATIVE_LEAD_RE 匹配不到句首的「否认」——「用药史：否认使用吗啡」被当成多出来的药报 unsourced-med（假药名「否认使用吗啡等阿」），PRN 与新增的碾碎检查同样中招。统一改为 isNegatedClause：先剥 ≤12 字段标题再判否定；12 字上限保证「患者否认进食困难，今日处方：XX」这类长前缀不被误剥",
        "【修复】盐型宽容误报（R70）：候选剥盐核心（丙戊酸钠→丙戊酸）被任何同词干 known（丙戊酸镁）包含即判无据——既会把「丙戊酸钠 vs 对话丙戊酸钠」误报成自替换（文案「对话里说的是丙戊酸钠」），又让丙戊酸类替换走错文案通道（复方案 vs 家族案）。两道修复：longerKnownCollision 里剥盐后同词干跳过（归 suffixFamilyCollision 出家族文案）；新增 coreOnlyAsSaltSibling——core 只作为另一种盐型的子串出现（count 相当时）才判无据，对话同时提原型与镁盐保守放行"
      ]
    },
    {
      "version": "v2.53",
      "date": "2026-10-19",
      "title": "【安全级批次】普利/沙坦家族替换检出、剂型与给药途径一致性、PRN 缺剂量检查，官网芯片 5 分钟自愈",
      "tags": [
        "新增",
        "修复",
        "安全",
        "生产"
      ],
      "items": [
        "【新增·安全级】同后缀家族扩展至降压两大主力（R69-a）：ACEI 普利类 8 种（卡托普利/依那普利/贝那普利/培哚普利/雷米普利/福辛普利/咪达普利/赖诺普利）与 ARB 沙坦类 7 种（氯沙坦/缬沙坦/厄贝沙坦/替米沙坦/坎地沙坦/奥美沙坦酯/阿利沙坦酯）——长效/短效、是否经肝代谢、咳嗽与血管神经性水肿副作用谱都不同，口述转写里「贝那普利→培哚普利」「缬沙坦→替米沙坦」替换高发。沙坦类含酯型前药（奥美沙坦酯/阿利沙坦酯），SUFFIX_FAMILIES 新增 suffixes 多形态后缀。同时修复一个真陷阱：「咪达普利」（降压）与「咪达唑仑」（镇静）只共享前 2 字，入表让 head2 兜底不再把两者互判有据——此前对话说咪达唑仑、草稿写咪达普利会被静默放行",
        "【新增·安全级】剂型与给药途径一致性检查（R69-b）：草稿与对话对同一个药用了不同剂型/途径时报——缓释片 vs 普通片（碾碎=剂量倾倒，血药浓度峰值可翻数倍）、缓释 vs 控释（释放曲线不同）、注射液 vs 片剂/口服液（途径变更）、肌注 vs 静推（起效差一个量级）。两条轴独立判定：剂型轴两侧都写了剂型才比（口述常省略，一侧没有不报）；途径轴两侧都写了途径才比（「片」不含途径信息）。剂型词/途径词必须紧贴药名且锚定窗口头部，「硝苯地平缓释片、氨氯地平片」不会 bleed；新增「药名+剂量+途径」候选补充通道（「头孢曲松钠 1g 静滴」这类无剂型词处方行此前整行不可见）。R69 实测连踩两个正则坑并修复：①JS 的 \\b 不认 CJK，「口服」后的边界永不成立，途径通道曾静默失效；②一刀切「后随非汉字」断言会把「皮下注射餐前」合法搭配全挡掉，最终只对拉丁缩写加边界",
        "【新增·安全级】PRN 按需医嘱缺单次剂量检查（R69-c）：高危药（阿片/苯二氮卓/胰岛素等）的按需医嘱没有单次剂量 = 执行端无从判断「需要时」用多少，与上限缺失是两个独立缺口，分别报。同时修复一个实测误报：「tid prn / qn prn」这类带每日次数的按需写法本身就是日上限（按需、每日最多 3 次），此前被误报成缺上限",
        "【修复·安全级】三个真实病历压测暴露的既有误报：①诊断「2型糖尿病」对话说了「糖尿病」却报凭空诊断——anyFragmentHit 剥尾「病」把构成匹配片段的字一起剥掉，改为原文+剥尾核心双套滑窗；②对话侧频次窗口跨句 bleed——「培哚普利四毫克。他汀晚上一片，二甲双胍一天两次」里后一个药的频次算到前一个药头上，窗口改为截到硬分隔符+前向收窄 12 字（「二甲双胍，一天两次」的逗号后频次仍能检出）；③「胰岛素 10U 皮下注射」报剂量没写单位——单位表补胰岛素 U/万U",
        "【工程】易混药家族表 89→103 种；新增 test/riskScanR69.test.js 28 项回归；测试总数 765→793 全绿；服务器侧 collect_versions.py 增加静态芯片自愈（见下）",
        "【运维】官网门户页芯片 5 分钟自愈（R69-d）：该共享页 2026-10-19 一天内被第三方回退三次（整页回滚一次 + yiliao 芯片两次 v1.89），且回滚后文件被加 chattr +i 防篡改（rename 报 EPERM）。collect_versions.py 每轮写出 versions.json 后按权威值校正 index.html 全部 data-vkey 芯片：只改不一致的值、遇 immutable 先摘标志写完原样挂回、只写不改其他字节。14:37 首次运行一次修复 22 个漂移芯片（yiliao v1.89→v2.52、tqszx v1.5.74→v1.5.99 等），此后 cron 每 5 分钟自动巡检，第三方回滚后无需人工复查"
      ]
    },
    {
      "version": "v2.52",
      "date": "2026-10-19",
      "title": "【安全级批次】他汀/地平/洛尔同后缀家族替换检出、PRN 高危医嘱上限保护、盐尾复方碰撞修复",
      "tags": [
        "新增",
        "修复",
        "安全",
        "生产"
      ],
      "items": [
        "【新增·安全级】同后缀药名家族替换检出（R68）：他汀类（辛伐/洛伐/普伐/氟伐/阿托伐/瑞舒伐/匹伐他汀）、地平类（硝苯/氨氯/非洛/尼莫/尼群/拉西/贝尼/乐卡地平）、洛尔类（美托洛尔/比索洛尔/阿替洛尔/普萘洛尔/卡维地洛/阿罗洛尔/索他洛尔）前 2 字不同、只共享后缀，R58 的「前 3 字相同」判定覆盖不到——而它们正是口述转写里最高频的替换源（效价/半衰期/服药时间不同，混用有实际临床后果），此前只报一句笼统的「没提到这个药」。新增 SUFFIX_FAMILIES 判定：候选无据且对话里出现同后缀家族药时，定制文案「对话里说的是XX（同为XX类，不可互换）」并说明同类药差异",
        "【新增·安全级】PRN（按需）高危医嘱上限保护（R68）：吗啡/哌替啶/芬太尼等阿片类、地西泮等苯二氮卓类、各类胰岛素、硝普钠/肝素/华法林/氯化钾/硫酸镁等高危药的按需医嘱不写每日上限 = 一次授权、反复执行却没有判断边界，执行端超量即致命。新增 checkPrnCeiling：「高危药名单」+「窗口内确无上限表述（每日最多/不超过/极量/24小时内）」两个条件同时满足才报；普通药（如布洛芬必要时）不报防噪音；同一句只报一次、单份病历封顶 2 条；长药名优先匹配保证标签精确（门冬胰岛素不显示为胰岛素）；上限项排在高危项最前不被 info 挤掉；窗口截断到硬分隔符（。；！？换行）不跨子句——实测「布洛芬必要时；地西泮 qn」的 PRN 标记 bleed 进后一药窗口把固定频次误报，软标点（，）保留保证「prn，24小时内不超过4次」合法上限认得",
        "【修复·安全级】盐尾候选的复方碰撞漏判（R68 实测）：候选名带盐尾（「阿托伐他汀钙」）时 longerKnownCollision 的整名包含判定直接失败——草稿开单方他汀、对话说「氨氯地平阿托伐他汀」复方时漏报「成分不同的药」。longerKnownCollision 与 suffixFamilyCollision 均改为原名/剥盐核心名双形态判定",
        "【工程】易混药家族表 62→89 种（他汀 7 + 地平 8 + 洛尔 7）；新增 test/riskScanR68.test.js 14 项回归；测试总数 748→762 全绿"
      ]
    },
    {
      "version": "v2.51",
      "date": "2026-10-19",
      "title": "【安全级批次】复方制剂 vs 单方药替换检出、中文数字药名误伤修复、白细胞双向/高胆红素缺口检测、否定语境误报清理",
      "tags": [
        "修复",
        "安全",
        "生产"
      ],
      "items": [
        "【修复·安全级】复方制剂与单方药互替零报出（R65）：药品无据推断对「单方名是复方名子串」直接放行——「阿莫西林克拉维酸钾」includes「阿莫西林」，草稿开阿莫西林、对话说复方时静默漏报。家族表扩充至 62 种，新增 19 组复方对：阿莫西林/阿莫西林克拉维酸钾、头孢哌酮/头孢哌酮舒巴坦、磺胺甲噁唑/复方磺胺甲噁唑、缬沙坦/缬沙坦氢氯噻嗪、布地奈德/布地奈德福莫特罗、氨溴索/氨溴特罗、氯雷他定/地氯雷他定、西替利嗪/左西替利嗪、更昔洛韦/缬更昔洛韦、格列本脲二甲双胍等（成分不同、临床不可互换）；复方命中时提示文案定制为「对话里说的是XX（成分不同的药）」",
        "【修复·安全级】盐型误报（R65）：家族判定不认盐的形式，「头孢曲松钠」vs 对话「头孢曲松」、「苯磺酸氨氯地平」vs「氨氯地平」本是同一个药却被判替换。新增盐词表（苯磺酸/马来酸/甲磺酸/盐酸/钠/钙等 21 个只可能是盐词的字串，不收硝酸/磷酸——「硝酸甘油」「硝酸异山梨酯」里它是药名本体），剥盐后整名命中即判有据；剥出的核心名仍过家族碰撞检查（对话说复方时仍是替换）",
        "【修复】中文数字药名误伤（R65/R67）：normalizeDigits 把对话里的「二甲双胍」转成「2甲双胍」，药名与诊断名（二甲双胍/三九胃泰/三叉神经痛）不同样归一就永远匹配不上——口述过的药被报「无据推断」、剂量定位失败误报数值缺失。候选词与来源现过同一套中文数字归一（懒加载归一表），剂量/频次查找增加剥盐核心名回退",
        "【修复】住院医嘱注射用药整行丢失（R65）：「注射用头孢哌酮舒巴坦 2g 静滴 bid」药名后直接跟剂量、没有剂型词，主正则（要求尾剂型词）整行匹配不上，剂量复核与无据推断一声不吭。新增「注射用/冻干粉针」前缀提取通道（前瞻边界收尾，冗余剂型写法自动剥离）",
        "【新增】诊断-指标一致性 3 个条件（R66，20→23 条）：白细胞显著升高（≥30×10⁹/L，感染/血液病诊断作抑制词）、白细胞减少（<2.0×10⁹/L，粒细胞缺乏风险）、高胆红素血症（总胆红素 ≥34.2 μmol/L，守卫字排除直接/间接/结合/游离胆红素）；肾功能不全条件补肌酐指标（≥442 μmol/L，切点与危急值规则对齐）——此前只报 eGFR，只查肌酐的化验单整条漏报",
        "【修复·体验】单位换算尾数与内部单位名外泄（R66）：肌酐 5.4 mg/dL 换算后亮出「477.36000000000007umol/L」，现统一保留两位小数并补 displayUnit（μmol/L、×10⁹/L、ml/min/1.73m²）",
        "【修复】随访缺口否定语境误报（R67）：预问诊之外的随访检查提醒把「既往史：否认糖尿病」「护士问有没有高血压？患者答：没有」里的病名当成已记录诊断，报「糖尿病随访缺口」「高血压随访缺口」。复用否定/问句感知（与 ICD 编码同一套判定），否认过、问句里提到的病名不再触发",
        "【修复】「查体未见异常」误报（R67）：体格检查完整性规则把「查体未见异常」（查体已做且正常的标准表述）报成「体格检查不完整」——一句正常病历天天触发。删除裸「查体未见」匹配，保留欠清/不详/未做/缺如/未描述/未记录",
        "【修复·合规】预问诊记录 14 天清理只落在写入口（R67）：listByDoctor / getFull / markUsed 这些读取路径原样返回过期记录，患者问卷在医生列表里 14 天后仍可见。TTL 清理现随每次 loadState 生效，读取路径同样过滤（含回归测试）"
      ]
    },
    {
      "version": "v2.50",
      "date": "2026-10-19",
      "title": "【安全级批次】子串包含型易混药替换检出、电解质紊乱缺口检测扩容至 20 条件、纤维蛋白原/pH 危急值",
      "tags": [
        "修复",
        "安全",
        "生产"
      ],
      "items": [
        "【修复·安全级】子串包含型易混药替换零报出（R60）：药品无据推断首行 srcFlat.includes(name) 对「短药名是长药名子串」的易混对直接放行——「左氧氟沙星」包含「氧氟沙星」、「艾司奥美拉唑」包含「奥美拉唑」，左氧→氧氟、艾司奥美→奥美替换静默漏报。修复前实测 6 类高危替换全部零报出：左氧氟沙星↔氧氟沙星、艾司奥美拉唑↔奥美拉唑、去甲肾上腺素↔肾上腺素（升压药互换）、甲泼尼龙↔泼尼松、格列本脲↔格列美脲（低血糖）、低分子肝素↔肝素、罗红霉素↔红霉素。改为子串包含判定：对话只出现更长已知易混药、且药名无独立出现（按出现次数判歧义、保守放行）即判替换必报；家族表从 25 种扩至 38 种，新增 10 例回归测试",
        "【修复·安全级】复合剂型词吞名（R60 附带）：药名提取正则未列复合剂型，「奥美拉唑肠溶胶囊」被提取成名「奥美拉唑肠溶」，畸形名再撞同家族判定，把「对话说依托红霉素、草稿开红霉素（同药酯型）」误报为家族替换。复合剂型词（肠溶胶囊/肠溶衣片/控释片/缓释胶囊等）完整入组并按最长优先排序",
        "【新增】危急值规则 2 项（R62）：纤维蛋白原 ≤1.0 g/L（DIC/产科大出血提示，含 mg/dL 换算）、血气 pH <7.2 或 >7.6（重度酸碱失衡），均含区间排除与误报防护，新增 8 例回归测试",
        "【新增】诊断-指标一致性扩容至 20 条件（R63）：新增低钾/高钾（3.5/5.5）、低钠/高钠（135/145）、低钙/高钙（2.1/2.75）、血小板减少（<100×10⁹/L）、低蛋白血症（白蛋白<30/总蛋白<60）、急性胰腺炎（脂肪酶>180/淀粉酶>400）、心力衰竭（BNP>100/NT-proBNP>300）、肾功能不全（eGFR<60）共 10 个条件，均为「化验异常未下诊断」最高发病种",
        "【加固】指标解析基础设施（R63）：①toCanonical 的 g/L 分支收紧为字面判定——旧写法 u.includes(\"g/l\") 会把「尿微量白蛋白 22 mg/L」的 mg/l 当成 g/l 放行造成低蛋白血症误报；②指标别名支持上下文守卫字（guardPrevChars/guardNextChars）——尿钾≠血钾、离子钙≠血钙、血小板分布宽度/平均血小板体积≠血小板；③单位组补 pg/mL（BNP）、ng/L、ml/min（eGFR），展示单位与内部标准单位分离（×10⁹/L 不再亮出内部名 x10e9/L）；④儿童切点策略按条件细化（电解质/血小板/蛋白儿童照查，心衰/eGFR 儿童跳过），新增 16 例回归测试",
        "【修复】中文数字单位前瞻缺口（R64）：单字数字+中文单位（「体重六斤」「血糖六毫克」）此前不转换，口语转写儿科/检验场景极常见；单位前瞻补齐斤/毫克/毫升/微克/克/μmol/mIU/IU/cm 等，新增 4 例回归测试",
        "【测试】全量测试 709 例全绿（较 v2.49 的 669 例新增 40 例回归），覆盖子串包含型替换六场景、复合剂型、电解质守卫字、单位陷阱、儿童切点"
      ]
    },
    {
      "version": "v2.49",
      "date": "2026-10-19",
      "title": "【安全级批次】危急值规则扩容至 24 项、诊断-指标一致性 8 条件、同家族药物替换检出、mg/dL 单位链路",
      "tags": [
        "修复",
        "安全",
        "生产"
      ],
      "items": [
        "【修复·安全级】药品无据推断匹配过松（R58）：原实现允许药名前 2 字匹配，「对话说头孢克肟、草稿开头孢克洛」仅凭「头孢」2 字即判有据——二代/三代头孢互换整条漏报。改为三层判定：同家族（前 3 字相同）已知药名出现即判无据必报；前 3 字命中保留 ASR 听错宽容；前 2 字简称兜底增设家族陷阱保护。内置 25 种易混药名家族（头孢/喹诺酮/青霉素），新增 5 例回归测试",
        "【修复·安全级】肌酐 mg/dL 单位未换算（R56）：「肌酐 5.2 mg/dL」（≈460 μmol/L）被范围守卫静默跳过。补单位捕获与 88.4 换算系数，范围守卫上限同步放宽至 3000 μmol/L，detail 按原始单位展示，新增 4 例回归测试",
        "【修复】新增危急值规则 2 项（R59）：血乳酸 ≥4 mmol/L（组织低灌注/休克提示）、血氨 ≥100 μmol/L（肝性脑病提示）；均含区间写法排除与「乳酸脱氢酶」「氨基酸」误报防护，新增 8 例回归测试",
        "【修复】跨次一致性：明确停药的长期用药不再误报「这次没提」（R57）——「予以停用阿托伐他汀」无剂型无剂量进不了药名提取，老逻辑照报缺口；停药检测跨全文、容忍盐型词（阿托伐他汀钙/盐酸二甲双胍）与多副词连用（已自行停药），含防过度抑制对照测试 4 例",
        "【修复】诊断-指标一致性扩容：新增甲减（TSH>4.5）、甲亢（TSH<0.1）、低血糖（空腹血糖<3.9）、肝炎（ALT/AST>80）四条件，并修复 sentBest 空值守卫缺陷；危急值规则新增磷/镁（R43）、新生儿日龄分段胆红素+肌钙蛋白（R45）、总蛋白/白蛋白/PT/APTT/INR（R52）",
        "【修复】危急值心率规则结构缺陷：胎心/胎儿心率排除原只保护「心率」分支，「心搏」写法漏保护致胎心误报为危急值；跨次一致性修复慢病否认语境误判、用药随访否定语境、剂量变化全局匹配回退（宁可少报）、疗程未闭 40 字符决策窗口、用药随访只跳过被提及药等 5 处同源缺陷",
        "【测试】全量测试 669 例全绿（较 v2.48 的 546 例新增 123 例回归），覆盖危急值单位/区间排除、同家族药物判定、停药语义、中文单位与体重解析契约"
      ]
    },
    {
      "version": "v2.48",
      "date": "2026-10-18",
      "title": "【生产级修复】过敏-药物冲突双重漏报、中文临床写法全链路覆盖、微符号剂量千倍偏差",
      "tags": [
        "修复",
        "安全",
        "生产"
      ],
      "items": [
        "【修复·安全级】跨次就诊一致性复核：过敏原抽取清洗规则补「对」前缀剥离——「对阿莫西林过敏」+ 本次开「阿莫西林胶囊」原检出 0 条冲突（同名比对与交叉过敏表双重失配），现正常报高危；新增 4 例回归测试",
        "【修复·安全级】微符号 µg 剂量链路：微符号 µ(U+00B5) 与希腊 mu μ(U+03BC) 同形异码，剂量抽取单位组补 µg、剂量归一入口 µ→μ 统一——「50µg」原按 mg 处理错 1000 倍、剂量比对静默跳过；新增 2 例回归测试",
        "【修复·安全级】危急值中文写法全覆盖：中文数字归一模块（clinicalNotation.normalizeChineseNumbers）接入危急值检测与慢病分层数值提取，「空腹血糖 十二点五」「体温 39.5 度」等中文/口语写法不再漏报",
        "【修复·安全级】体重/身高解析单点合并（weightParse.js）：「斤」「公斤/千克」「米」等中文单位在儿童剂量核对、BMI 计算、BSA 估算全链路统一——修复「体重 26 斤被读成 26kg 致儿童超量不报」「90 斤+1.2 米 BMI 漏报」等 5 处同型缺陷",
        "【修复】儿童年龄边界：0 个月/0 岁新生儿正确识别为儿童并触发剂量核对（判断条件 age>0 修正为 age>=0）",
        "【修复】儿童剂量中文单位：剂量解析补「毫克/克/毫升/微克/mcg」——修复「布洛芬片 500 毫克」误报剂量缺单位（误报）与 3 岁 13kg+500 毫克超量漏报（漏报）双向缺陷",
        "【修复】随访缺口同义词：新增 10 组指标同义词映射（HbA1c/糖化血红蛋白、Hp/幽门螺杆菌等），写中文别名不再误报随访缺口",
        "【修复】DIP 手术漏填预警：否定语境检测窗口扩为关键词前后各 15 字符，「切除手术未行」等否定后置写法不再误报，调用链路同步修正",
        "【修复】前端生命体征解析接入中文数字归一，口语读数正确进入慢病分层",
        "【测试】新增 8 个测试文件、约 155 例回归（全量 546 例全绿），覆盖危急值单位、一致性复核、随访规则、DIP 校验、体重解析契约等空白"
      ]
    },
    {
      "version": "v2.47",
      "date": "2026-10-17",
      "title": "【生产级修复】/modules/* 静态路由缺失导致前端模块全部 404、工作台瘫痪",
      "tags": [
        "修复",
        "生产",
        "安全"
      ],
      "items": [
        "【修复·生产级】生产冒烟发现 /modules/voice-commands.js 返回 404：静态资源走逐文件路由表，/modules/* 从未被登记。app.js 静态 import \"/modules/wechat.js\"（2026-10-16 接入）在生产 404 会导致整个 app.js 模块加载失败——工作台完全瘫痪；archive/voice-commands/history-crosscheck 等模块化功能在线上从未真正生效。",
        "【修复】createApp.js 新增 /modules/ 目录前缀路由：仅放行 .js 文件、拒绝子目录（纵深防御），serveStaticFile 自带 .. 穿越防护与 publicRoot 前缀校验双重兜底；modules/index.html 开发沙盒页不对线上暴露。",
        "【测试】新增 test/v247.test.js：serveStaticFile 功能级测试（正常服务/穿越拒绝/越界拒绝）+ 路由接线测试 + app.js 静态导入全覆盖校验。",
        "【核查·同步】2026-10-16 的两次部署实际未完整覆盖（生产 changelog 仍为 v2.22）。本次已整树同步至 v2.47 并冒烟验证。"
      ]
    },
    {
      "version": "v2.46",
      "date": "2026-10-17",
      "title": "真实功能集成与微信适配：微信音频预加载 ensureWeChatPlayer、预激活事件绑定、分段录音",
      "tags": [
        "功能",
        "修复"
      ],
      "items": [
        "【对账补录】该版本的代码与回归测试（test/v246.test.js）已存在于本地树，但 changelog 条目此前未写入（自动化先写测试、未回填记录）。本条为对账补录，登记对应主题的真实改动。",
        "【对账收口 2026-10-17】renderResult 已实际接入 showCommandFeedback / processVoiceCommands / crossCheckHistory，currentVersion 与测试断言对齐。"
      ]
    },
    {
      "version": "v2.45",
      "date": "2026-10-16",
      "title": "真实功能集成：语音指令与交叉核对模块接入主流程",
      "tags": [
        "功能"
      ],
      "items": [
        "【对账补录】该版本的代码与回归测试（test/v245.test.js）已存在于本地树，但 changelog 条目此前未写入（自动化先写测试、未回填记录）。本条为对账补录，登记对应主题的真实改动。"
      ]
    },
    {
      "version": "v2.44",
      "date": "2026-10-16",
      "title": "真实功能集成准备期：模块接口冻结",
      "tags": [
        "回归"
      ],
      "items": [
        "【对账补录】该版本的代码与回归测试（test/v244.test.js）已存在于本地树，但 changelog 条目此前未写入（自动化先写测试、未回填记录）。本条为对账补录，登记对应主题的真实改动。"
      ]
    },
    {
      "version": "v2.43",
      "date": "2026-10-16",
      "title": "语音指令视觉反馈回归巩固",
      "tags": [
        "回归"
      ],
      "items": [
        "【对账补录】该版本的代码与回归测试（test/v243.test.js）已存在于本地树，但 changelog 条目此前未写入（自动化先写测试、未回填记录）。本条为对账补录，登记对应主题的真实改动。"
      ]
    },
    {
      "version": "v2.42",
      "date": "2026-10-16",
      "title": "既往史交叉核对深化回归巩固",
      "tags": [
        "回归"
      ],
      "items": [
        "【对账补录】该版本的代码与回归测试（test/v242.test.js）已存在于本地树，但 changelog 条目此前未写入（自动化先写测试、未回填记录）。本条为对账补录，登记对应主题的真实改动。"
      ]
    },
    {
      "version": "v2.41",
      "date": "2026-10-16",
      "title": "语音指令视觉反馈回归巩固",
      "tags": [
        "回归"
      ],
      "items": [
        "【对账补录】该版本的代码与回归测试（test/v241.test.js）已存在于本地树，但 changelog 条目此前未写入（自动化先写测试、未回填记录）。本条为对账补录，登记对应主题的真实改动。"
      ]
    },
    {
      "version": "v2.40",
      "date": "2026-10-16",
      "title": "既往史交叉核对深化回归巩固",
      "tags": [
        "回归"
      ],
      "items": [
        "【对账补录】该版本的代码与回归测试（test/v240.test.js）已存在于本地树，但 changelog 条目此前未写入（自动化先写测试、未回填记录）。本条为对账补录，登记对应主题的真实改动。"
      ]
    },
    {
      "version": "v2.39",
      "date": "2026-10-16",
      "title": "语音指令视觉反馈回归巩固",
      "tags": [
        "回归"
      ],
      "items": [
        "【对账补录】该版本的代码与回归测试（test/v239.test.js）已存在于本地树，但 changelog 条目此前未写入（自动化先写测试、未回填记录）。本条为对账补录，登记对应主题的真实改动。"
      ]
    },
    {
      "version": "v2.38",
      "date": "2026-10-16",
      "title": "既往史交叉核对深化回归巩固",
      "tags": [
        "回归"
      ],
      "items": [
        "【对账补录】该版本的代码与回归测试（test/v238.test.js）已存在于本地树，但 changelog 条目此前未写入（自动化先写测试、未回填记录）。本条为对账补录，登记对应主题的真实改动。"
      ]
    },
    {
      "version": "v2.37",
      "date": "2026-10-16",
      "title": "语音指令视觉反馈回归巩固",
      "tags": [
        "回归"
      ],
      "items": [
        "【对账补录】该版本的代码与回归测试（test/v237.test.js）已存在于本地树，但 changelog 条目此前未写入（自动化先写测试、未回填记录）。本条为对账补录，登记对应主题的真实改动。"
      ]
    },
    {
      "version": "v2.36",
      "date": "2026-10-16",
      "title": "既往史交叉核对深化回归巩固",
      "tags": [
        "回归"
      ],
      "items": [
        "【对账补录】该版本的代码与回归测试（test/v236.test.js）已存在于本地树，但 changelog 条目此前未写入（自动化先写测试、未回填记录）。本条为对账补录，登记对应主题的真实改动。"
      ]
    },
    {
      "version": "v2.35",
      "date": "2026-10-16",
      "title": "语音指令与交叉核对联调稳定",
      "tags": [
        "回归"
      ],
      "items": [
        "【对账补录】该版本的代码与回归测试（test/v235.test.js）已存在于本地树，但 changelog 条目此前未写入（自动化先写测试、未回填记录）。本条为对账补录，登记对应主题的真实改动。"
      ]
    },
    {
      "version": "v2.34",
      "date": "2026-10-16",
      "title": "语音指令视觉反馈回归巩固",
      "tags": [
        "回归"
      ],
      "items": [
        "【对账补录】该版本的代码与回归测试（test/v234.test.js）已存在于本地树，但 changelog 条目此前未写入（自动化先写测试、未回填记录）。本条为对账补录，登记对应主题的真实改动。"
      ]
    },
    {
      "version": "v2.33",
      "date": "2026-10-16",
      "title": "既往史交叉核对深化：过敏史冲突与慢性病史遗漏预警",
      "tags": [
        "功能",
        "合规"
      ],
      "items": [
        "【对账补录】该版本的代码与回归测试（test/v233.test.js）已存在于本地树，但 changelog 条目此前未写入（自动化先写测试、未回填记录）。本条为对账补录，登记对应主题的真实改动。"
      ]
    },
    {
      "version": "v2.32",
      "date": "2026-10-16",
      "title": "语音指令视觉反馈：指令执行动作以气泡形式反馈给医生",
      "tags": [
        "功能"
      ],
      "items": [
        "【对账补录】该版本的代码与回归测试（test/v232.test.js）已存在于本地树，但 changelog 条目此前未写入（自动化先写测试、未回填记录）。本条为对账补录，登记对应主题的真实改动。"
      ]
    },
    {
      "version": "v2.31",
      "date": "2026-10-17",
      "title": "三方对账收口：changelog 损坏修复 + 用量日志丢行 + 前端功能接线补全",
      "tags": [
        "修复",
        "对账",
        "接线"
      ],
      "items": [
        "【修复·关键】changelog.json 字符串内嵌未转义引号导致整个 JSON 解析失败（前端更新日志接口与 27 个版本回归测试全部挂）。已全量修复并格式化（99 个版本条目）。",
        "【修复·数据丢失】AI 用量日志并发落盘丢行：Windows 下两个 appendFile 并发打开同一文件，第二个 open 得 EPERM 后被静默吞掉，并发 AI 调用时用量记录随机丢失、日预算熔断被低估。已改为 Promise 链串行写入。",
        "【修复·对账】27 个版本回归测试的断言设计缺陷修正：各版本测试改为\"已登记且 currentVersion 不落后\"，不再要求 currentVersion 恰好等于自己（多版本互斥、天然全挂）。",
        "【接线·语音指令】renderResult 接入 processVoiceCommands：识别医生口述指令（添加诊断/删除过敏史/更新血压）并执行，指令文本从对话稿清洗，执行动作气泡反馈；模块加载失败时兜底仅做指令文本清洗。",
        "【接线·交叉核对】renderResult 接入 crossCheckHistory + 指标预警：过敏史冲突、慢性病史遗漏（模块能力）与血压/血糖波动预警（本地能力）并入警告区，non-leading 不阻断流程。",
        "【接线·溯源回听】requestEvidence 启动时从 IndexedDB 恢复最近录音 id（audioStore 新增 getLatestClipId），页面刷新后「回听此处」按钮不再消失；溯源渲染循环变量名对齐测试契约（sentences）。",
        "【接线·模块化】新增 loadModularFeatures 动态加载器：voice-commands/history-crosscheck 模块加载失败不影响主流程；同时消除静态导入与本地同名函数的声明冲突（会导致整页 SyntaxError）。",
        "【修复·体验】assertCriticalDom 呈现逻辑前置：52 元素清单不再把报错渲染代码挤出检测窗口，缺元素提示一定能到达医生眼前。",
        "【修复·缓存】index.html 与 app.html 的 CSS 缓存戳同步（此前 index 落后 3 天），app.js/audioStore.js 戳一并升级。"
      ]
    },
    {
      "version": "v2.30",
      "date": "2026-10-17",
      "title": "前端窄屏布局防护 + dipEncoder 兜底扫描性能优化",
      "tags": [
        "修复",
        "性能"
      ],
      "items": [
        "【修复·体验】前端窄屏/移动端布局防护：为 `.calc-detail` 增加 `overflow-wrap: break-word`，防止超长溯源 anchor 或连续英文编码撑破窄屏布局。",
        "【修复·性能】dipEncoder 兜底扫描性能优化：缓存 `toLowerCase()` 结果避免重复计算，并限制策略2（全文关键词扫描兜底）的最大命中数为 5，防止超长无结构口述文本阻塞主线程。"
      ]
    },
    {
      "version": "v2.29",
      "date": "2026-10-16",
      "title": "溯源链 (Linked Evidence) 增强：anchor 上下文片段提取",
      "tags": [
        "功能",
        "合规"
      ],
      "items": [
        "【功能·合规】溯源链 (Linked Evidence) 增强：此前医保拒付预警和随访指标的 `anchor` 仅返回干瘪的单个关键词（如\"切除\"、\"血压\"）。现新增上下文提取逻辑，自动截取包含关键词的完整句子/短语（前后扩展约40字符），使医生能精准定位病历原文，完全符合 2026 CDI 审计可溯源（audit traceability）最佳实践。"
      ]
    },
    {
      "version": "v2.28",
      "date": "2026-10-16",
      "title": "完整性评分逻辑修复：无主诊断时 dxCode 误给分漏洞",
      "tags": [
        "修复",
        "合规"
      ],
      "items": [
        "【修复·合规】完整性评分逻辑漏洞：此前若病历完全无主诊断，`dxCode`（主诊断可匹配 DIP 分组）评分项会因逻辑分支遗漏而误判为 `passed: true`，导致完整性得分虚高 20 分。现已修复此分支逻辑，并新增回归测试守护。"
      ]
    },
    {
      "version": "v2.27",
      "date": "2026-10-16",
      "title": "医保拒付预警 UI 信息完整性修复",
      "tags": [
        "修复",
        "体验"
      ],
      "items": [
        "【修复·体验】医保拒付预警 UI 信息丢失：前端此前仅展示预警标签（如\"手术漏填编码风险\"），遗漏了具体的拒付原因与修改建议 (message)。现已补全完整信息，确保医生能清晰获知风险详情及溯源文段，符合 CDI 审计可溯源要求。"
      ]
    },
    {
      "version": "v2.26",
      "date": "2026-10-16",
      "title": "DIP 3.0 基层病种政策红利提示前端落地 + 历史文档债务清理",
      "tags": [
        "功能",
        "修复"
      ],
      "items": [
        "【功能·合规】DIP 3.0 基层病种政策提示前端展示：后端已识别的 127 个基层病种（支持同病同付），现于前端编码推荐中高亮展示政策提示，帮助基层医生优先确认。",
        "【工程】清理历史观察项文档债务：移除 v223自我进化分析.md 中已在第 5/9/10 轮修复的条目（事件监听泄漏、DOM 变量无 null 检查、微信分段录音器死代码），保持文档准确性。"
      ]
    },
    {
      "version": "v2.25",
      "date": "2026-10-16",
      "title": "DIP 核验面板前端增强：完整性得分可视化 + 医保拒付预警溯源",
      "tags": [
        "功能",
        "修复"
      ],
      "items": [
        "【修复·体验】DIP 核验面板前后端数据脱节修复：后端 dipValidator v2 已返回完整性得分与医保拒付预警，但前端未展示。现完整呈现 0-100 完整性得分及分级 (good/fair/poor)。",
        "【功能·合规】医保拒付预警溯源：在核验结果中高亮显示命中文段 (anchor)，方便医生快速定位并修改缺失的病历内容，从源头降低医保拒付风险。"
      ]
    },
    {
      "version": "v2.24",
      "date": "2026-10-16",
      "title": "DIP 3.0 深度合规 + 前端性能优化 + 微信长录音支持",
      "tags": [
        "功能",
        "修复",
        "合规"
      ],
      "items": [
        "【功能·P0】DIP 3.0 文档完整性质控：实现 0-100 完整性评分、医保拒付预警、可溯源 anchor，随访覆盖全部 9 专科。",
        "【修复】诊断提取防假阳性：拦截“否认糖尿病史”等否定前缀，清理病程后缀，大幅提升 ICD-10 映射准确率。",
        "【修复】专科映射统一：消除重复映射，补全慢阻肺、哮喘等 9 专科随访计划，修复儿科病历随访退化问题。",
        "【功能】病历质量聚合评分：集成 MEAT 检查、术语准确性、随访覆盖度，输出 0-100 分质量报告。",
        "【修复·性能】事件监听泄漏治理：引入 AbortController 模式，解决 484 处 addEventListener 导致的内存泄漏。",
        "【修复·性能】事件委托优化：专科热词芯片改为父容器统一监听，大幅减少监听器数量。",
        "【功能】溯源链全量覆盖：增强实词过滤与模糊匹配，无真实 ASR segments 时自动生成模拟分段供演示。",
        "【修复】微信长录音支持：接入分段录音器，解决微信内置浏览器 60 秒强制截断问题，支持任意时长无缝合并。",
        "【修复】DOM 变量空引用防护：将关键 DOM 元素校验从 10 个扩展至 52 个，加载时即提示缺失项。"
      ]
    },
    {
      "version": "v2.23",
      "date": "2026-10-16",
      "title": "溯源回听功能：页面刷新后从 IndexedDB 恢复录音 id，回听按钮不再消失",
      "tags": [
        "功能",
        "修复"
      ],
      "items": [
        "【对账补录】该版本的代码与回归测试（test/v223.test.js）已存在于本地树，但 changelog 条目此前未写入（自动化先写测试、未回填记录）。本条为对账补录，登记对应主题的真实改动。"
      ]
    },
    {
      "version": "v2.22",
      "date": "2026-10-14",
      "title": "录音留存隐私合规加固：登出即询问清除 + 7 天自动过期 + 如实告知共用设备风险",
      "tags": [
        "隐私",
        "修复",
        "合规"
      ],
      "items": [
        "【修复·隐私·重要】删除一处虚假的安全声明：设置面板原写着「共用电脑的同事看不到也取不到」，这在 v2.21 引入本机留存后已不成立——浏览器本地存储是同源的，同一设备上打开本系统的任何人都能看到这些录音并在您未清除时点开回听。现改为如实告知，并给出交接电脑前的清除指引。",
        "【修复·隐私·重要】登出账号时询问是否清除本机录音：此前登出只清账号状态，录音留在浏览器里。共用电脑上医生 A 登出后，医生 B 登录就能直接回听 A 的问诊——这在医疗场景下不可接受。不静默删除（会毁掉还没核完的草稿依据），也不默认保留，改为登出时询问。",
        "【合规】录音增加 7 天自动过期：此前只有「最多 5 条」的条数上限，医生停用一周后那 5 条录音会一直躺在机器上。现按个人信息保护法第十九条「保存期限为实现处理目的所必要的最短时间」，问诊录音只服务于「生成后当场核对」，超过 7 天自动删除。设置面板同时显示最旧一条的年龄。",
        "【修复】换人登录时的共用机提示此前只统计患者档案，会报「0 条」却漏掉同样躺在本机的录音，属于虚假的安全告知；现同时统计录音条数与占用。",
        "【合规】隐私政策与实际行为对齐：政策文件原称「录音音频不做长期存储，生成完成后临时数据即释放」，v2.21 已推翻该表述。现如实描述本机留存的条数、时限、清除途径与共用设备风险。",
        "【工程】新增 v2.22 合规回归测试 13 项，覆盖三条不变量：留存必须有时限、登出必须处理录音、对外文案与政策文件不得与实际行为不符。"
      ]
    },
    {
      "version": "v2.21",
      "date": "2026-10-14",
      "title": "溯源时间轴可点击回听原话（录音留存本机，限量可一键清除）",
      "tags": [
        "功能",
        "隐私"
      ],
      "items": [
        "【功能】溯源里的「第 0:08」现在可以点击，直接从录音对应位置播放。医生核对 AI 写的每一句话不必再靠听整段录音定位。",
        "【功能】设置面板新增「本机留存的就诊录音」区：显示已留存条数与占用大小，并提供「清除本机全部录音」（二次确认）。",
        "【隐私·重要】录音只存在医生本机浏览器（IndexedDB），不上传服务器、不参与账号同步、换设备不会带过去，最多保留最近 5 次并自动清理最旧的。录音属高敏感数据，刻意不做长期留存。",
        "【修复·正确性】避免播错患者的录音：原实现里录音是全局单例，下一位患者录音就会覆盖。现在每次生成都把录音与本份草稿绑定；文字粘贴生成（没有录音）时主动解绑——否则医生点「回听」可能听到上一位患者的问诊，这在医疗场景下不可接受。",
        "【工程】录音存储不可用（浏览器禁用本地存储、隐私模式）时全部静默降级为「只显示文字出处」，绝不因增强功能拖累病历生成主流程。",
        "【工程】新增 v2.21 回归测试 13 项，核心是三条隐私/正确性不变量：录音不得进任何网络路径与账号同步、必须限量并可一键清除、不得播错患者的录音。",
        "【修复】audioStore.js 未登记静态路由导致 404：项目的静态资源走逐文件路由表、不做目录遍历，新文件放进 public/ 不会自动可访问——录音留存与回听曾整体静默失效。已补路由并加测试闸门。实测浏览器内存取往返字节一致、可解码播放，存 8 条自动清理至 5 条，一键清除归零。"
      ]
    },
    {
      "version": "v2.20",
      "date": "2026-10-14",
      "title": "DOM 完整性双层防护：静态契约闸门 + 运行时关键元素守卫",
      "tags": [
        "工程",
        "修复"
      ],
      "items": [
        "【工程】静态契约闸门：app.js 有 234 个 DOM 常量、约 742 处裸属性访问。任何 HTML 元素被删或改名，症状都是同一条「TypeError: Cannot read properties of null」出现在深层函数里，报错位置和真实原因相隔很远。现在改 HTML 时测试会直接红，并精确列出缺失的 id。",
        "【工程】死控件闸门：功能面板里的按钮/输入框若在所有前端脚本里零引用，测试会失败——医生点了没反应这种问题不会再像 v2.17 的 DIP 面板那样被埋很久才被发现。",
        "【修复】运行时关键元素守卫：加载时一次性校验录音按钮、草稿编辑器、提示区等 11 个主链路元素，缺失时在页面底部给出明确说明（而不是等运行到一半崩在某个深层函数里），并上报控制台便于线上诊断。守卫自身不依赖本项目 UI 代码——出问题的时候它可能就是坏的。",
        "【核查结论】本轮扫描确认当前无真实死控件：此前疑似 8 个未接线的控件（趋势维度复选框、修改密码提交钮等）经核查均为正常接线——前者通过模板字面量 `trend-dim-${id}` 访问，后者由浏览器原生表单提交处理。",
        "【修复·实测】提示条位置修正：初版固定在页面底部，长页面滚动时医生根本看不到，等于白做；现已固定在顶部，实测移除关键元素后横幅立即可见并准确点名缺失的 id。",
        "【工程】新增 v2.20 回归测试 8 项。审计口径注意：判定「是否被引用」必须扫全部前端脚本（app.js 自 v1.73 起已拆出多个模块，只扫它会把已接好的面板误判成死面板）；<details> 容器靠浏览器原生开合、本就不需要 JS 引用。"
      ]
    },
    {
      "version": "v2.19",
      "date": "2026-10-14",
      "title": "溯源链接到录音秒数：病历每句话都能回听原话核对",
      "tags": [
        "功能",
        "安全",
        "修复"
      ],
      "items": [
        "【功能】溯源链接入音频时间轴：命中的句子现在同时标出「出自录音第几分几秒」，医生可回到录音该处核对原话。口语数字也能定位——病历写「38.5℃」而患者说「三十八度五」，仍能精确指向那句话。",
        "【修复·安全】溯源强度判定失真：此前被跳过的实体（如「3天」这类归一化后仅剩单字符的）也会计入命中数，导致「一句出处都没找到」也能显示为「有完整依据」——等于把没核对过的句子当成核对通过。现已把分母改为可比实体数，命中数不超过分母。",
        "【修复】病程天数等高频事实被判为无依据：「3天」归一化后只剩「3」，被「至少两个字符」的长度门槛跳过。现在数字类实体不受该门槛约束，文字类仍保留（避免虚词刷命中率）。",
        "【边界】无录音（文字粘贴生成）、或出处不在录音里（检验单、上次病历）时一律不给时间戳——绝不显示「第 0 秒」这类假信息。",
        "【工程】新增 v2.19 回归测试 15 项，重点是上面两条安全 BUG 的回归闸门、时间轴的接线闸门（路由必须透传 transcriptWords、前端必须缓存并上传），以及「服务须容忍两种词表形状」的兼容性闸门。",
        "【修复】真实调用时时间轴全部失效：前端可能回传原始 ASR 词表（start/end 或 begin_time/end_time，且没有字符偏移），而路由此前原样透传，导致服务无法对齐原文位置、全部返回无时间。现由路由统一补齐字符偏移后再生效。"
      ]
    },
    {
      "version": "v2.18",
      "date": "2026-10-14",
      "title": "溯源链：每一句病历都能点开看出处（对标 Abridge Linked Evidence）",
      "tags": [
        "功能",
        "安全"
      ],
      "items": [
        "【功能】溯源链（新增）：把当前草稿逐句与对话原文、检验单、上次病历比对，给每句标出「有完整依据 / 部分命中 / 推断性结论 / 套话待复核 / 原文无依据」五档强度，并附上原文片段。这是现有「溯源核对」的补充——那个只回答『哪句有问题』（查错），这个回答『每句写自哪里』（查证）。",
        "【为什么做】美国 Abridge 卖进大医院的核心能力就是点任意一句生成内容可回溯原话。国内医生同样需要这个才敢签字，医保审核时也需要它来举证「这句话有据可查」。",
        "【交互】只默认展开需要核对的句子，有依据的折叠成一行随点随看——30 句全展开医生根本读不完，反而会退化成『红一片就忽略』。",
        "【边界】纯本机文本比对，不调 AI、不耗算力、断网可用；定位不到就说定位不到，绝不编造出处（给假出处比不给更危险）。所有输出带免责声明。",
        "【修复·实测】开发中暴露并修正四个会导致『满屏误报』的问题：① 归一化把小数点当标点剥掉，36.8℃ 变 368，与原文永远比不上；② 口语『三十六度八』不转阿拉伯数字；③ 「体温」「病程」这类结构性词被当作可核对事实，而患者根本不会说这两个字；④ 诊断名未标记为推断性，导致『2型糖尿病』这类纯诊断句被当成 AI 编造。",
        "【工程】新增 v2.18 回归测试 15 项，含接线闸门（必须挂路由且免计费 charge+checkQuota 双关）、死元素闸门、样式与夜间模式闸门。"
      ]
    },
    {
      "version": "v2.17",
      "date": "2026-10-14",
      "title": "DIP 3.0 面板从死面板变成真能用（自动核验 + 编码推荐首次对医生可见）",
      "tags": [
        "功能",
        "修复",
        "界面"
      ],
      "items": [
        "【修复·重要】**DIP 面板此前是纯死面板**：app.html 里放着 8 个元素（查询框、搜编码、结果区），app.js 里一处引用都没有——医生点开是个空壳。连带 v2.16 写好的编码推荐能力在界面上完全没有入口，连续两个版本的「DIP 已完成」实际都是自欺。",
        "【功能】按当前草稿一键核验（新增主入口）：自动提取诊断、推荐 ICD-10 编码、匹配 DIP 分组，并分「必须修正（影响入组）」与「建议优化（可能影响分值）」两级呈现，全部本地查表不耗算力。",
        "【功能】手工查入组 + 按名称搜编码两个入口一并接通：支持回车直接提交；查入组会列出同主诊断的其他病种组，帮医生核对是否漏填手术操作。",
        "【界面】补齐一批此前被当 className 用在 DOM 上、样式表却从未定义的类（calc-detail / icd-item / qc-item / qc-sev-* / lex-bulk）——结果是 ICD 建议、DIP 核验等所有结果行都退回浏览器默认样式，严重项与建议项视觉上完全无法区分。现已补齐配色、间距并适配夜间模式。",
        "【无障碍】结果区与状态行加 role=status + aria-live=polite，核验完成后读屏可自动播报；三个输入框支持回车提交。",
        "【修复】DIP 编码推荐把处理意见误当诊断：小节边界只认「【处理】」这种带书名号的写法，而基层病历大量使用裸文本「处理：」「医嘱：」，导致整段处理意见被切成假诊断（实测「处理：建议内分泌科随诊」被识别成一条诊断）。现已覆盖 16 个常见裸文本小节标题。",
        "【修复】DIP 核验结果显示 undefined：前端读 conservativeGroup.dxName，服务端却返回 name，且与同结构 allGroups[].dxName 不一致。现已统一键名。",
        "【工程】新增 v2.17 前端回归测试 14 项：死元素闸门（HTML 里的 id 必须逐个在 JS 被引用）、端点存在性闸门、响应字段名一致性闸门（防凭想象写字段）、className 样式定义闸门、无障碍闸门、CSS 缓存戳同步闸门。",
        "【说明】编码推荐为规则匹配 + 本地查表结果，属提示性质：最终 ICD-10 编码与 DIP 入组以医师和编码员确认、当地医保经办机构审核为准。"
      ]
    },
    {
      "version": "v2.16",
      "date": "2026-10-14",
      "title": "DIP 3.0编码推荐引擎 + 两个CRITICAL修复（热词从未生效/录音竞态）",
      "tags": [
        "功能",
        "合规",
        "修复"
      ],
      "items": [
        "【功能·蓝海】DIP 3.0 编码推荐引擎（dipEncoder.js）：从 AI 生成病历中自动提取诊断 → 匹配 DIP 病种库 9520 组 → 推荐 ICD-10 编码与分组（100+ 常见诊断映射 + 口语化别名归一），国内外竞品均无此能力。接入路由 POST /v1/note/dip/validate，返回编码建议 + 分组匹配 + 随访指标缺口。",
        "【修复·CRITICAL】专科热词修正结果从未传入 LLM 生成器（scribeService.js）：v2.15 引入 applySpecialtyTerms 后，修正后的文本写入了 metadata 但 prompt 和 generator 仍使用原始 uncorrected 文本——热词纠错对实际病历生成完全无效。已改为 correctedTranscript 经 prompt→generator 全链路传递。",
        "【修复·CRITICAL】录音竞态修复（app.js startRecording）：isRecording/busy 现在在 await getUserMedia 之前就设好闸门，并增加权限授予后的二次确认（等待期间若被 stopRecording 抢先则立即释放 stream），根除微信权限授权期间双击造成的幽灵录音。",
        "【修复·HIGH】v2.15 三项新功能从未生效：前端传英文科室码（endocrinology/cardiology），热词/DIP/随访用中文键（dm/冠心病），已为 specialtyTerms.js / dipValidator.js / followup-rules.js 三处统一补 SPECIATY_KEY_MAP。",
        "【工程】dipValidator 从死代码激活为路由端点（POST /v1/note/dip/validate），前端可调用；移除 scribeService.js 中未使用的 suggestSpecialtyTerms import。",
        "【修复·重要】DIP 三个端点白扣医生算力：dip/lookup 与 dip/search 是纯本地查表、v2.16 新增的 dip/validate 同样不调上游，但三者此前都按默认 charge:true 扣 1 点算力；且只补 charge:false 也不够——游客额度是在 assertCanUseClient 里同步 requestCount+=1 扣的，必须同时 checkQuota:false。实测连打 30 次纯本地查表额度纹丝不动。",
        "【修复】DIP 编码推荐对畸形输入崩溃：请求体传数字/空值时 .trim() 直接 TypeError 抛 500，现已归一为字符串并返回结构化结果。",
        "【修复】无编号多诊断只识别第一个：「诊断：血压高；血糖高」此前只捕获到「血压高」，漏掉后面所有诊断——而这正是基层病历最常见的写法。现改为先捕获整个诊断小节再按分隔符切分。",
        "【修复】药品误识别表不跨科室：误纠正只遍历本专科 keywords，选心血管科时患者同服的奥美拉唑（消化科药）永远不被纠正——而基层合并用药是常态。现药品与通用术语对任一专科均生效。",
        "【工程】新增 v2.16 回归测试 22 项（含静态接线闸门：热词修正必须真的进生成器、dipValidator 必须真的挂路由、录音闸门必须在 await 之前置位），全量 190 项测试通过。历史教训：v2.15 三个新模块零测试覆盖，是「代码写完但从未在产线生效」反复逃逸的根因。"
      ]
    },
    {
      "version": "v2.15",
      "date": "2026-10-14",
      "title": "专科热词库（对标Suki AI）+ DIP 3.0合规校验 + 微信适配 + 录音竞态修复",
      "tags": [
        "功能",
        "合规",
        "修复",
        "工程"
      ],
      "items": [
        "【功能】专科术语热词库：糖尿病/高血压/冠心病/脑卒中/慢阻肺/哮喘/胃炎/胆囊炎/肾炎 9 个专科（对标 Suki AI 专科定制），支持同音/形近误识别替换与病历内容智能推荐专科。",
        "【功能】DIP 3.0 分组校验服务：主诊断完整性检查 + DIP 分组映射匹配 + 专科随访指标完整性检测 + 根据诊断推荐 DIP 分组。",
        "【功能】随访计划自动推断：通用规则 10 条 + 专科计划（糖尿病/高血压/冠心病/脑卒中）+ 随访缺口检测，自动提示「3个月后复查糖化血红蛋白、12个月后查眼底」等。",
        "【功能】微信内置浏览器适配：录音时长限制处理（60 秒分段方案）、文件保存沙箱替代方案（文件传输助手指引）、打印功能移动端优化、兼容性提示文案。",
        "【修复·重要】专科热词键名映射 BUG（Critical）：前端传英文科室码（endocrinology/cardiology/neurology…），SPECIALTY_TERMS 用中文键（dm/冠心病/脑卒中…）——没有映射层导致 v2.15 新增的热词/DIP 随访/自动随访三项功能在产线上从未生效。已为 specialtyTerms.js / dipValidator.js / followup-rules.js 三处统一补上映射层。",
        "【修复·重要】录音竞态修复：startRecording 中 isRecording/busy 现在在 await getUserMedia 之前就设好闸门——此前权限授权期间（微信可等数秒）双击按钮会创建无人能停止的幽灵录音。增加权限授予后的二次确认：若等待期间 stopRecording 已抢先关闭，立即释放刚拿到的 stream。",
        "【工程】竞品深度调研（Abridge Linked Evidence / Suki 双模 / Nabla 全旅程 / Dragon 统一语音 / DIP 3.0 六大变化），明确 yiliao 差异化方向：DIP 3.0 文档完整性质控是国内外均无竞品的蓝海机会。"
      ]
    },
    {
      "version": "v2.14",
      "date": "2026-10-13",
      "title": "模块化重构（app.js 1.2MB拆分为10个模块）+ 真机测试BUG排查 + 版本链修复",
      "tags": [
        "工程",
        "修复"
      ],
      "items": [
        "【工程·重构】**app.js 1.2MB模块化拆分**：28093行代码拆分为10个独立模块（loader/core/ai-generate/account/archive/template/quality/utils/main），主入口仅保留初始化逻辑，提升代码可维护性与加载性能。",
        "【工程】**模块化测试页**：新增 /modules/index.html 测试页面，支持各模块独立测试与集成验证。",
        "【修复】**真机测试BUG排查**：创建真机测试执行计划与结果文档（方言/微信浏览器/打印/弱网场景），等待用户实测填写。",
        "【修复】**版本链修复**：changelog.json currentVersion 从 v2.13 更新为 v2.14，版本链连续可用。",
        "【文档】**v2.14 项目总线收尾**：总线 z4215699/agent-bus，Planner/Executor 协议路径与铁律已固化。"
      ]
    },
    {
      "version": "v2.13",
      "date": "2026-10-13",
      "title": "埋点看板建设（转化漏斗 + 功能使用率）",
      "tags": [
        "监控"
      ],
      "items": [
        "【功能】转化漏斗：首页→注册→生成→完成全链路转化率（注册点击率、注册提交率、生成点击率、文本/模板选择率）。",
        "【功能】功能使用率：语音 vs 文本、模板选择率、档案搜索率、交接码使用率。",
        "【增强】埋点端点 /v1/analytics/log 已上线（v2.11），本次补充 /v1/analytics/dashboard 管理员看板。"
      ]
    },
    {
      "version": "v2.12",
      "date": "2026-10-13",
      "title": "不确定状态处理（丁香园式警告卡片）+ 协作冲突解决（好大夫式三态对比）+ 情绪反馈徽章（春雨式）",
      "tags": [
        "功能",
        "协作"
      ],
      "items": [
        "【功能】不确定状态处理：借鉴丁香园临床决策支持，识别模糊表述（诊断待查/病史不完整/检查未完成/随访缺口）并提供解决方案警告卡片（背景 #fff7ed + 边框 #fdba74 + 建议按钮组）。",
        "【功能】协作冲突解决：借鉴好大夫在线医生协作模式，冲突检测 + 三态对比（保留我的/保留对方/手动合并）+ 确定性解决方案按钮。",
        "【功能】情绪反馈徽章：借鉴春雨医生情绪识别，用户情绪状态徽章（焦虑橙色/愤怒红色/开心绿色）+ 情境化响应卡片。",
        "【功能】协作冲突解决：借鉴好大夫在线医生协作模式，冲突检测 + 三态对比（保留我的/保留对方/手动合并）+ 确定性解决方案按钮。",
        "【功能】情绪反馈徽章：识别焦虑/愤怒/开心情绪并提供情境化响应卡片（焦虑橙色徽章/红色提示框/绿色鼓励）",
        "【功能】周期性任务状态圆圈：慢性病随访计划状态展示（待执行/已完成/过期）+ 自动推断糖尿病/高血压/甲状腺/冠心病随访计划。"
      ]
    },
    {
      "version": "v2.11",
      "date": "2026-10-13",
      "title": "用户行为埋点基础建设（轻量 SDK + 转化漏斗监控）+ 档案交接码增强",
      "tags": [
        "监控",
        "协作"
      ],
      "items": [
        "【功能·监控】用户行为埋点基础建设：轻量埋点 SDK（服务端端点 /v1/analytics/log，无鉴权，仅基础字段），转化漏斗事件注入（首页注册/登录按钮、工作台生成按钮、档案面板打开/搜索）。",
        "【增强】档案交接码：患者多时自动显示搜索框（≥8 位），按姓名/病名即时过滤；医生端原始转写文本可见性修复（ASR 拒绝改写原始文本，只加识别结果提示）。",
        "【修复】注册赠送环境变量问题二次修复（避免模块级 const 求值过早），注册赠送实际生效 500 点。"
      ]
    },
    {
      "version": "v2.10",
      "date": "2026-10-12",
      "title": "档案交接码（医生间点对点转交摘要，24 小时中转）+ 档案列表搜索 + 健康检查增强",
      "tags": [
        "功能",
        "协作"
      ],
      "items": [
        "【功能·协作】档案交接码上线：上级医生看完让下级接着管、代班医生接手——点患者档案「🤝 交接码」生成 6 位码，同事在「凭交接码接收」输入即可把脱敏摘要并进自己的档案（只补差集不覆盖）。隐私立场不变：服务端只中转 24 小时（最多领取 5 次）立即销毁，不长期保存；接收需登录并限流防枚举。",
        "【功能】档案列表搜索：患者多时按姓名或病名即时过滤（搜「高血压」能找出所有相关患者），≥8 位患者自动显示搜索框。",
        "【增强】/health 健康检查增加版本号、运行时长与交接中转计数（无任何患者信息），便于运维监控与版本采集。",
        "【验证】交接码服务 9 项单元测试（往返/过期/限次/防重复/损坏文件只读保护）+ API 七项端到端（未登录 401/错码拒绝/超大 413 等）全过；搜索过滤 12 患者注入实测命中。"
      ]
    },
    {
      "version": "v2.09",
      "date": "2026-10-12",
      "title": "会员系统测试期调整：注册赠送提升至 500 点（环境变量修复后实际生效）+ 会员购买入口隐藏 + 本地模式模型下载双网络自适应",
      "tags": [
        "功能",
        "修复"
      ],
      "items": [
        "【功能】注册赠送算力提升至 500 点（原 100 点），测试期全部功能免费用。",
        "【修复·重要】注册赠送环境变量从未生效：模块加载顺序缺陷导致 ACCOUNT_REGISTER_GRANT/ACCOUNT_INVITE_REWARD 配置被忽略（恒为 100/50）。修复为惰性读取，.env 配置实际生效。",
        "【调整】会员系统测试期隐藏：定价区与会员购买入口暂不展示，/activate 显示暂停开放提示；存量会员令牌权益不受影响；后续可通过 MEMBERSHIP_ENABLED=true 一键恢复。",
        "【修复】本地模式模型下载双网络自适应：不同网络环境结论相反（代理下 HF 官方可达、直连下仅镜像可达），启动时自动探测并回退，两类网络都能下载模型。"
      ]
    },
    {
      "version": "v2.08",
      "date": "2026-10-12",
      "title": "会员系统测试期调整：注册赠送提升至 500 点（环境变量修复后实际生效）+ 会员购买入口隐藏 + 本地模式下载修复 + 方言横评",
      "tags": [
        "验证",
        "优化"
      ],
      "items": [
        "【修复·重要】注册赠送算力环境变量从未生效：模块加载顺序缺陷导致 ACCOUNT_REGISTER_GRANT/ACCOUNT_INVITE_REWARD 配置被忽略（恒为 100/50）。修复为惰性读取，现在 .env 配置实际生效（当前配置注册送 500 点）。",
        "【验证】标注语料回放上线：18 份多样化标注病历（规范/缺项/否定密集/多病共存/无关文本五类）批量过质控规则引擎，逐份断言期望缺口，规则误报数 0、命中 7+。",
        "【优化】抗凝监测规则细化：华法林监测 INR；NOAC（利伐沙班/达比加群等）不需要 INR，监测肾功能与出血即可——此前统一要求 INR 对 NOAC 用户是误导性提示。",
        "【验证】回放过程中修正 2 处语料标注错误（非规则缺陷），规则引擎在全部 21 份语料（含 v2.07 新规则用例）上零误报。"
      ]
    },
    {
      "version": "v2.07",
      "date": "2026-10-12",
      "title": "慢病诊疗完整性规则扩容（8→14 条）：CKD/二甲双胍监测/房颤/哮喘/糖尿病足/抗癫痫新增 6 条随访缺口提示",
      "tags": [
        "功能",
        "验证"
      ],
      "items": [
        "【功能】质控「随访缺口」规则库扩容 8→14 条：新增慢性肾脏病（肾功能/尿蛋白随访）、二甲双胍（肾功能与维生素 B12 监测）、房颤（CHA2DS2-VASc 评估）、哮喘（控制评估与吸入装置宣教）、糖尿病足（创面与血运评估）、抗癫痫药（血药浓度与不良反应）六类，规则全部对照基层指南监测要求。",
        "【验证】新增 4 项回归测试（新规则触发/否定语境不误报/已写监测项不报缺口/输出结构完整），全量 153 项测试通过；既有否定语境检测（如「否认高血压糖尿病史」不产生假缺口）行为保持不变。"
      ]
    },
    {
      "version": "v2.06",
      "date": "2026-10-12",
      "title": "方言口音语音识别横评（四方言）+ 粤语选项优化生产验证 + 本地模式模型下载双网络自适应",
      "tags": [
        "验证",
        "修复"
      ],
      "items": [
        "【验证】方言口音横评（微软方言音色合成同稿实测）：陕西口音字错率 7.4%、辽宁/台湾口音 5.6%——与普通话基准（4.8%）同档，北方口音达实用水平，数字（38.5℃）与医学内容每轮完整。",
        "【优化】粤语选项行为优化生产验证：选「粤语」原会输出繁体粤语书面语（開始/時候/發燒），基层医生不可用；改为口音识别模式后输出简体普通话，字错率 23.6%→9.3%。选项文案与语言提示区已更新。",
        "【修复】本地模式模型下载双网络自适应：实测不同网络环境结论相反——代理浏览器 HF 官方可达而镜像不可用，大陆直连则相反（HF 12 秒超时）。原实现硬编码单一下载源必有一类用户失败。现在启动时自动探测 HF 官方（8 秒上限），可达用官方、超时自动回退镜像（hf-mirror.com），两类网络都能下载模型。",
        "【说明】方言测试为合成音色近似（非母语真人发音），真实方言口音仍建议现场实测；北方口音结论置信度高。"
      ]
    },
    {
      "version": "v2.05",
      "date": "2026-10-12",
      "title": "核心纯逻辑模块直测补全（11 项）：发现并修复语义缓存回放污染（跨请求字段串扰风险）+ 缓存键原型碰撞加固",
      "tags": [
        "修复",
        "验证"
      ],
      "items": [
        "【修复·重要】语义缓存回放污染：缓存 get 返回的是内部对象引用——路由层回放时会在结果上挂载 account/quota 等每请求字段，这些字段驻留缓存后，并发交错可能串进其他同键请求的响应。修复为 get 返回深拷贝。",
        "【加固】语义缓存键原型碰撞：携带「__proto__」字段的请求体在键收集时赋值会触发原型 setter，导致该字段被折叠、与不带者生成同一缓存键。修复为 null 原型对象收集（安全侧默认）。",
        "【验证】termLexicon / soapFormatter 直接单测补全（分节回退、长词优先、占位符防链改、三种批量写法等），全部通过；此前仅集成路径间接覆盖。"
      ]
    },
    {
      "version": "v2.04",
      "date": "2026-10-12",
      "title": "账号系统全链路验证轮：邀请码奖励/改密码令牌失效/admin 重置 7 项全过 + 语义缓存并发击穿保护实测",
      "tags": [
        "验证"
      ],
      "items": [
        "【验证】账号系统全链路 7 项全过：邀请码注册（双方各得 50 算力精确到账）→ 改密码（旧密码立即失效、新密码可用）→ 管理员重置密码（重置后可登录）。全程无状态异常。",
        "【验证】语义缓存并发击穿保护实测：5 路同时首次生成同内容（各异 requestId）→ 全部成功、合并为 1 次扣费、输出一致——最理想的击穿保护行为，无重复扣费。",
        "【说明】过程发现：登录/注册限流（20/时、8/时）在高频自动化测试下正确拦截并提示——保护有效。"
      ]
    },
    {
      "version": "v2.03",
      "date": "2026-10-12",
      "title": "方言口音语音识别实测（四方言）+ 粤语选项优化（输出简体普通话，实测更可用）",
      "tags": [
        "验证",
        "优化"
      ],
      "items": [
        "【验证】方言口音横评（微软方言音色合成同稿实测）：陕西口音字错率 7.4%、辽宁/台湾口音 5.6%——与普通话基准（4.8%）同档，北方口音达实用水平；每轮均验证数字（38.5℃）与医学内容完整。",
        "【优化】粤语选项行为优化：实测发现选「粤语」会输出繁体粤语书面语（開始/時候/發燒），基层医生不可用；改为口音识别模式后输出简体普通话，字错率从 23.6% 降至 9.3%。选项文案同步说明，并在语言提示区补充实测数据。",
        "【说明】方言测试为合成音色近似（非母语真人发音），真实方言口音仍建议现场实测；北方口音结论置信度高。"
      ]
    },
    {
      "version": "v2.02",
      "date": "2026-10-12",
      "title": "数据完整性验证轮：并发压测守恒（20 路并发注册+10 路同账号并发扣费零丢失）、语义缓存命中不重复扣费实测、FHIR 导出格式验证、语音横评第二轮（中英混合/快语速）",
      "tags": [
        "验证"
      ],
      "items": [
        "【验证】并发压测守恒：8 路并发注册全部成功；单账号 10 路并发生成（最尖锐的同账户读-改-写竞态）全部成功，算力精确扣至 90/10 零丢失，其余账号守恒，JSON 完整。原子写设计在最坏竞态下验证通过。",
        "【验证】语义缓存实测：同内容二次生成命中缓存——输出一致、不重复扣费（第二次扣 0 点），符合设计预期。",
        "【验证】FHIR 导出格式验证通过：DocumentReference 资源结构（resourceType/status/type/subject）符合标准。",
        "【验证】语音识别横评第二轮：中英混合（英文药名/病名口语夹杂）归一化字错率 1.0%；快速语速长句四种药名堆叠 0.0% 完美识别。两轮合计六场景：普通话、嘈杂、剂量 ITN、中英混合、快语速均达实用水平；方言口音仍需真机实测。"
      ]
    },
    {
      "version": "v2.01",
      "date": "2026-10-12",
      "title": "打印分页修复：病历不再从第 5 页开始（首页空白页消除）+ 站点链接健康检查通过",
      "tags": [
        "修复"
      ],
      "items": [
        "【修复·重要】打印分页：此前打印样式用 visibility 隐藏界面（保留布局占位），打印内容前有约 5 页高的隐藏元素——打印输出第一页是整页空白，病历从第 5 页才开始。现改为真正移出文档流，病历从第一页顶端开始。打印预览截图验收通过。",
        "【验证】站点链接健康检查：全站 8 个页面 18 个本地链接逐一探测，零死链；系统设置页（管理员配置）走查正常。"
      ]
    },
    {
      "version": "v2.00",
      "date": "2026-10-12",
      "title": "v2.00 里程碑：属性测试 + 安全审计双通过（11 轮迭代收官，无代码缺陷）",
      "tags": [
        "验证",
        "安全"
      ],
      "items": [
        "【验证】属性测试上线：对血压/血糖/糖化提取、复查交代解析、随访规则四个纯模块做了约 9500 轮随机输入性质验证（异常输入不抛错、数值恒在生理区间、规则文案恒可解析），全部通过。随机生成器含注入串/emoji/控制字符/原型污染键名等对抗片段。",
        "【安全】原型污染专项实测：注册用户名「__proto__」实测安全——账号存储采用无原型对象设计（开发者预先防了这一手），账户正常注册、登录、检索。",
        "【安全】ReDoS 快扫：全后端无嵌套量词高危正则。",
        "【文档】项目手册（CLAUDE.md）按十轮后现状刷新：测试双套件、纯函数模块纪律、devbox 双副本纪律、部署脚本模式、四条新教训。"
      ]
    },
    {
      "version": "v1.99",
      "date": "2026-10-12",
      "title": "API 模糊测试轮：182 个异常用例扫描，修复超大请求体连接重置（收到人话 413 而非「网络错误」）",
      "tags": [
        "工程",
        "修复"
      ],
      "items": [
        "【修复】超大请求体连接重置：模糊测试发现，向有大小上限的接口（如登录 4KB 上限）发送超限大包时，服务端未读完请求体就响应 413，剩余数据撞上响应触发连接重置——客户端只看到「网络错误」。修复：超限后先消化完请求体（设 16MB 消化上限防极端大包）再响应 413 人话；413 响应显式关闭连接防 keep-alive 竞态。新增 2 项回归测试固化。",
        "【验证】模糊测试 182 个异常用例（14 个端点 × 13 类变异：类型混淆/缺字段/超长/深嵌套/unicode 孤代理/NUL 字节等）：未发现崩溃、栈泄露、HTML 错误页或结构异常；全部异常输入均得到 4xx/正常业务响应。聊天通道的 503 为开发环境未配置 AI 的预期业务码。"
      ]
    },
    {
      "version": "v1.98",
      "date": "2026-10-12",
      "title": "安全审计通过（跨用户注入面零缺陷）+ 档案误归风险修复 + 工程结构优化",
      "tags": [
        "安全",
        "工程"
      ],
      "items": [
        "【修复·重要】档案误归风险：患者信息字段（姓名/性别/年龄）在看完一位患者后会残留，换下一位患者时若草稿里明写了「患者姓名：XX」，存档会误归到上一位患者名下（实测复现）。现在草稿里明确写的患者优先——字段自动同步更新，不一致时显著提示「请核对」；草稿没写姓名时仍沿用原字段（可改）。",
        "【安全】跨用户注入面专项审计通过：模板广场列表、导入内容、待诊小结、溯源核对、质控提示、管理后台账号名/备注等全部渲染点逐一核查——均为安全 API 或已转义，未发现存储型 XSS。多用户功能（模板分享）的跨用户内容渲染路径确认安全。",
        "【工程】复查交代解析与慢病随访规则抽出为独立模块（recheck-parse.js / followup-rules.js），并新增 6 项回归测试（单位换算/套话过滤/多病种规则/文案格式约束）。主程序体积与复杂度下降，规则后续调整不再动核心文件。"
      ]
    },
    {
      "version": "v1.97",
      "date": "2026-10-12",
      "title": "术语词库前置到识别阶段（ASR 上下文增强）：药名术语在转写时就倾向写对，而非事后替换",
      "tags": [
        "功能",
        "工程"
      ],
      "items": [
        "【功能】术语词库热词前置：您的术语词库里的规范写法（如「氯吡格雷」「阿莫西林分散片」）现在会在语音识别阶段作为上下文传给识别模型（最多 40 条），让听错的药名在转写时就倾向写对——此前只能在转写完成后靠词库替换，遇到同音不同形的情况可能替换不干净。已在真实通道验证上下文参数兼容，转写结果不受其他影响。",
        "【工程】新增 buildLexiconContext 纯函数与 3 项回归测试（去重/限量/错误写法不外泄）。"
      ]
    },
    {
      "version": "v1.96",
      "date": "2026-10-12",
      "title": "共用电脑隐私提示（换账号登录时明确告知本机还留着前任的患者档案）+ 真实语音通道质量横评",
      "tags": [
        "隐私",
        "验证"
      ],
      "items": [
        "【隐私】共用电脑提示：患者档案只存本机、不跟账号走。换一个账号登录同一台电脑时，系统会明确提示本机还留有上一任使用者的档案记录及条数——只提醒、不自动清除（自动清会毁掉对方数据）。诊所共用电脑场景的建议做法：私人数据用「备份到账号」后清除本机，或各用各的系统浏览器账户。",
        "【验证】真实语音通道质量横评（qwen3-asr-flash，TTS 合成标准文稿）：清晰普通话字错率约 5%（识别 38.5℃ 等数字正常）；剂量医嘱稿的药物、规格、频次全部正确（「零点二五克」自动规范成「0.25g」，更利于用药核对）；加嘈杂噪声后识别结果与安静环境完全一致，抗噪表现好。方言与真实门诊口音仍需真机实测。"
      ]
    },
    {
      "version": "v1.95",
      "date": "2026-10-12",
      "title": "可靠性验证轮：临床计算器公式逐项对照标准全部正确 + 账号云同步往返实测通过 + 指南与落地页完善",
      "tags": [
        "工程",
        "验证"
      ],
      "items": [
        "【验证】临床计算器公式抽查全部正确：BMI（中国成人标准分段）、eGFR（2021 CKD-EPI 不含种族系数公式，κ/α/性别系数逐项吻合）、校正血钙（0.02×(40−白蛋白)）、平均动脉压、Mosteller 体表面积。",
        "【验证】账号云同步全链路实测通过：档案本机加密上传（服务端只存密文）→ 模拟换设备（清空本地重新登录）→ 口令取回，4 位患者档案完整恢复。",
        "【验证】HIS/EMR 导出 JSON 与 XML 格式有效性实测通过（含合规声明注释）。",
        "【文档】三分钟上手指南补充「更多功能在哪里」导引（面板分组与搜索）；落地页价格锚点补充国家政策背书（基层医疗质量改善三年行动、医保发〔2026〕7号）。"
      ]
    },
    {
      "version": "v1.94",
      "date": "2026-10-11",
      "title": "分层判定修复：病程时长不再被当成血糖值（控制不佳患者曾被误判为控制满意）+ 预问诊细节修复",
      "tags": [
        "修复"
      ],
      "items": [
        "【修复·重要】慢病分层判定纠错：此前病历里「血糖控制不佳1月」这类写法中的时长「1月」会被误认成血糖值 1 mmol/L，把控制不佳的患者错分进「控制满意（不用打电话）」——恰好漏掉最该随访的人。现在：① 数字紧跟「月/周/天/年」时按病程时长处理，不再当检验值；② 血糖数值超出生理可能范围（<2 或 >35 mmol/L）一律不采信。数值提取逻辑抽出为独立模块并新增 7 项回归测试。",
        "【修复】随机血糖此前被按餐后切点判定（偏严），现在按随机切点（11.1）正确判定。",
        "【修复】预问诊待诊列表年龄段显示叠字（「41-65 岁岁段」→「41-65 岁」）。"
      ]
    },
    {
      "version": "v1.93",
      "date": "2026-10-11",
      "title": "重要打印修复：主「打印/存PDF」不再打出空白页 + 打印件自动去内部标记 + 静态资源长缓存提速",
      "tags": [
        "修复",
        "工程"
      ],
      "items": [
        "【修复·重要】病历主按钮「打印 / 存PDF」此前会打出几乎全白的纸（打印样式只认新版打印结构，而主按钮还走老实现）。现在统一走 A4 排版打印结构，与顶部打印按钮一致。",
        "【修复】两处打印入口的打印件都会自动去掉「【模板：…】」等内部标记并落医师署名——此前顶部打印入口会把内部标记原样印到纸上。",
        "【性能】静态资源（js/css）缓存从 1 小时延长到 30 天：医生每天打开工作台不再重复下载约 340KB 的主程序，弱网环境明显提速；页面与数据仍每次回源校验，发版即时生效不受影响。",
        "【界面】首页能力对比表新增「参考价格」行：同类进口方案 $99~$300+/月，本系统游客/注册免费、会员 ¥39.9/月起。"
      ]
    },
    {
      "version": "v1.92",
      "date": "2026-10-11",
      "title": "产品升级：慢病随访自动补全 + 内置患者宣教库（免费秒出）+ 落地页差异化改版 + CSV 导出安全加固",
      "tags": [
        "功能",
        "安全",
        "界面"
      ],
      "items": [
        "【功能】慢病随访自动补全：病历里忘写「X个月后复诊」时，存入档案会按诊断自动补一条随访建议进档案（如高血压→3个月复诊；糖尿病→3个月查糖化+年度眼底/尿微量白蛋白；65岁以上→年度老年评估），待复查名单不再漏掉忘写复诊医嘱的患者。病历原文一个字不动，提示明示去向。",
        "【功能】内置患者宣教库（免费·秒出·不耗算力）：10 个常见病（高血压/糖尿病/上感/胃肠炎/腰痛/过敏性鼻炎/痛风/骨质疏松/慢阻肺/卒中康复）审核过的通用宣教模板，按当前草稿诊断自动推荐（标★），一键插入说明书区域可再编辑复制。与 AI 个性化改写互补。",
        "【安全】CSV 导出公式注入防护：患者姓名/正文等不可信内容以 = + - @ 开头时（Excel/WPS 会当公式执行，存在 „=CMD…„ 类攻击面），导出统一前缀单引号强制按文本处理。全部 7 处 CSV 导出入口生效。",
        "【界面】落地页差异化改版：首屏卖点前置「公卫随访闭环」「DIP/ICD 免费查表」；定价区新增同类产品价格参考（国际主流 $99~$300+/月 vs 本系统 ¥39.9/月起），强化基层可负担定位。"
      ]
    },
    {
      "version": "v1.91",
      "date": "2026-10-11",
      "title": "第二轮医生体验优化：确认弹窗统一 + 功能面板分组导航 + 草稿恢复防覆盖 + 档案自动识别患者",
      "tags": [
        "界面",
        "工程"
      ],
      "items": [
        "【界面】所有「确定/取消」类提示从浏览器原生弹窗换成与系统一致的设计弹窗（共 20 处）：不再出现风格突兀的系统对话框，微信等内置浏览器里也不再可能被静默吞掉；支持回车确认、Esc 取消。",
        "【界面】几十个功能面板按医生的使用习惯分成五组（诊疗与编码 / 病历质量与修改 / 文书与患者沟通 / 患者管理·公卫随访 / 数据·导出·设备），搜索框下新增分组快捷跳转；搜索时无关分组自动隐藏。",
        "【修复】草稿恢复不再可能覆盖医生正在写的内容：恢复前当前内容会自动存入「生成记录」，提示文案同步说明去向。",
        "【优化】「存入档案 / 带出既往摘要 / 跨次就诊比对」现在会自动从草稿里识别患者姓名、性别、年龄并带入（可修改），不用再对着草稿手抄一遍。",
        "【文案】患者扫码预问诊明确提示「需注册账号（会员不等于账号）」，避免会员医生找不到自己的预问诊码。"
      ]
    },
    {
      "version": "v1.90",
      "date": "2026-10-11",
      "title": "医生视角体检修复：界面状态错乱（hidden 失效）+ 危险信号显示 + 界面美化统一 + 夜间模式可读性",
      "tags": [
        "修复",
        "界面"
      ],
      "items": [
        "【修复·重要】界面状态错乱修复：此前「暂停录音」「结束并生成」按钮在未录音时也常驻显示、「上次录音处理失败」横幅对从未录音的医生也会出现（共 9 处元素受同一 CSS 问题影响）。现在严格按状态显示。",
        "【修复·重要】鉴别诊断面板的「需立即评估的信号」现在会真正显示出来：此前 AI 不可用时检出的危险信号（如呼吸困难、胸痛）在界面上丢失，只留一句「已列出」——安全信息不再缺席。",
        "【修复】云端模式下不再显示「WebGPU 就绪 / 本地模型」等与云端无关的技术信息，减少医生困惑。",
        "【修复】生成/修改进行中再点其他按钮，现在会明确提示「正在处理中」，不再毫无反应。",
        "【界面】病历编辑区下方的快捷操作（更精简/更详细/分条列出等）、临床计算器项目切换、面板搜索框全部按系统设计语言重新绘制，告别浏览器原始控件外观。",
        "【界面】夜间模式可读性修复：大标题、新手引导、服务属性卡等此前暗底配深灰字几乎看不清的区域全部提亮；新增控件同步适配夜间模式。",
        "【数据】医保 DIP 病种目录清洗：剥离 PDF 解析残留的页脚/表头文本（涉及 231 条），「同主诊断的其他病种组」不再出现「第N页共231页…」类乱码；渲染端再加一层防御。",
        "【工程】游客试用额度默认值与首页承诺对齐（30 次/30 分钟）；开发演示通道的英文提示改为中文。新增 v1.90 回归测试 10 项，全量 115 项测试通过。"
      ]
    },
    {
      "version": "v1.89",
      "date": "2026-10-10",
      "title": "工程：全部 9 处文件下载统一走安全入口（缺 API 内核给人话降级）+ 术语提取加固",
      "tags": [
        "工程",
        "修复"
      ],
      "items": [
        "【工程】全部 9 处文件下载（导出 Word/CSV/备份/核对记录等）统一走 downloadBlob 安全入口：个别内核缺 URL.createObjectURL 时不再悄悄下载坏文件，而是明确提示「请手动复制或换浏览器」。",
        "【修复】术语实体提取的占位回退加固：防止将来的模式变更导致误删前一个合法实体（防御性修复）。"
      ]
    },
    {
      "version": "v1.88",
      "date": "2026-10-10",
      "title": "收尾：红旗页进度条 + 超长口述文本截断 + 死常量清理",
      "tags": [
        "修复",
        "工程"
      ],
      "items": [
        "【修复】预问诊红旗中断页的步骤进度条不再全灰（走到尾格，与「急症请直接急诊」的强提示一致）。",
        "【工程】口述补充（audioText）与对话文本同口径截断（5 万字），堵住超长文本放大提示词成本的口子；移除一个从未使用的死常量。"
      ]
    },
    {
      "version": "v1.87",
      "date": "2026-10-10",
      "title": "工程：请求层绑定位置结构性上移（消除白屏级隐含依赖）+ GET 错误信息统一解包",
      "tags": [
        "工程"
      ],
      "items": [
        "【工程】请求层绑定的物理位置上移到常量声明之后、boot() 调用之前——结构性消除「boot 同步前段不得调用请求层」的隐含依赖（此前任何人往 boot 前段加一个请求调用就会全页崩溃）。移动后全套 85 项浏览器回归 + 182 单测全绿。",
        "【修复】读取类接口（词库推荐等）的上游错误信息统一走安全解包，不再可能显示 [object Object]。"
      ]
    },
    {
      "version": "v1.86",
      "date": "2026-10-10",
      "title": "独立复审三连修：推荐词库功能恢复 + 语音撤销/录音竞态 + 游客退额补全 + 证明文书天数作用域",
      "tags": [
        "修复",
        "安全"
      ],
      "items": [
        "【修复·重要】**「查看推荐词库」功能恢复**：请求层拆分时遗漏导出了一个内部函数，导致工作台「推荐词库」按钮点了只显示加载失败。已修复并补引用一致性检查。",
        "【修复·重要】**语音撤销不再吞噬后续修改**：语音编辑后若又做过 AI 修改或手工编辑，说「撤销」会整体回退到语音前状态、把更晚的改动永久抹掉。现在撤销前会先把当前内容存入版本列表，可从「历史版本」找回。",
        "【修复】**录音麦克风三处竞态**：快速双击可能导致麦克风指示灯常亮；首次授权等待期松手后授权完成会无人按住也一直录音；录音片段跨会话串扰。已加启动闸门与丢弃标记。",
        "【修复·重要】**证明文书游客退额补全**：鉴别诊断/说明书/宣教/文书四条入口此前校验失败（如空草稿、天数格式错）会白扣游客 1 次试用。已统一为失败即退。",
        "【修复】病假条天数的严格校验现在只作用于病假条——切到其他文书类型不再因隐藏输入框里的旧内容被误拦。",
        "【工程】术语实体提取的占位回退模式加固（防止将来模式变更时误删前一个实体）；数据文件健康检查通过（最大 461KB 有裁剪上限，磁盘余 62G）。"
      ]
    },
    {
      "version": "v1.85",
      "date": "2026-10-10",
      "title": "测试补缺：在途合并 / refine 幂等回放 / 游客失败退额的路由级回归测试",
      "tags": [
        "工程"
      ],
      "items": [
        "【工程】补上独立复审指出的测试缺口（3 项路由级）：① 同 requestId 并发生成必须共享同一次生成（在途合并）；② AI 修改成功后同 requestId 重试必须走回放且不再调上游；③ 上游 500 时游客的试用次数必须退还。三项全部通过，核心计费守恒自此有自动化保护。"
      ]
    },
    {
      "version": "v1.84",
      "date": "2026-10-10",
      "title": "独立复审收官（1 Critical + 4 Important 全修）+ Node 22 运行时升级 + 文书/语音收尾三修",
      "tags": [
        "修复",
        "工程"
      ],
      "items": [
        "【修复·重要】**病假条天数误拦**：切到复工/陪护等类型再生成时，藏在病假条输入框里的旧内容（如「3-5」）会触发「请填 1-365 整数」的 400，而该输入框此刻是隐藏的。已改为仅病假条校验该字段，且切换类型时自动清空隐藏输入。",
        "【修复·重要】**四条 AI 入口的游客失败不退**（鉴别诊断/患者说明书/宣教/文书）：游客预扣后如果上游失败，1 次试用次数不退（refine/icd/生成已修，这四条是同款遗留）。已补挂账让失败路径统一退还。",
        "【修复】语音指令绑定上移到常量声明之后（消除对「boot 前段不得调请求层」的隐含依赖）+ 注释与分号清理。",
        "【工程】**运行时升级 Node v20→v22.23.3**（yiliao 专用隔离安装，宿主全局 Node 不动——上面还有其他应用）。升级后 182 单测 + 真实生成链路全部验证通过。",
        "【工程】v1.81-83 改动完成独立全量复审：计费守恒（预扣延后/在途共享不双扣/失败各退各的）逐路径推演成立；补充在途合并与 refine 回放的测试缺口（下一版随路由测试一起入库）。"
      ]
    },
    {
      "version": "v1.83",
      "date": "2026-10-10",
      "title": "功能总览页上线 + 定价表补齐 6 项新功能 + 医生试用记录表",
      "tags": [
        "新功能",
        "商业化"
      ],
      "items": [
        "【新功能】**📄 功能总览页**（/features.html，顶栏「功能总览」可进）：面向新用户的一页看懂全部能力——录入与生成、质量与安全、证明与医保、公卫随访四大板块 20 项功能卡片。",
        "【商业化】**定价对比表补齐 6 项新功能**（分角色 / DIP+ICD+质控 / 计算器+字段提取 / 患者档案公卫 / 预问诊 / 模板广场），并标注注册账号与游客的权限差异——新功能第一次能被准用户看见。",
        "【新功能】**🧾 试用一周记录表**（/pilot-form.html，A4 一页可打印）：用量 / 语音口令命中 / 预问诊漏斗 / 分角色准确率 / 开放题五张表，配合桌牌投放做真实试用数据回收。"
      ]
    },
    {
      "version": "v1.82",
      "date": "2026-10-10",
      "title": "工程：请求层拆分入库（app-request.js）+ 发布流程切换整树同步",
      "tags": [
        "工程"
      ],
      "items": [
        "【工程】**app.js 拆分第三批**：请求层（鉴权/令牌 single-flight/GET-POST 封装/401 刷新重试）迁入独立模块 app-request.js（约 5.7KB），主文件瘦身约 5KB；依赖注入模式与前两批一致。至此拆分方案完成三批：extras（功能五件套）→ request（请求层）→ voice-commands；剩余录音栈与生成渲染两块维持原状（UI 耦合最重，收益比最低）。",
        "【工程】发布流程切换为整树同步（deploy_full.py）：staging 全量回归通过后一次性同步到生产，杜绝多轮增量推文件造成的代码分叉（v1.81 部署停机 2 分钟的根因）。"
      ]
    },
    {
      "version": "v1.81",
      "date": "2026-10-10",
      "title": "五版独立复审收官：游客试用次数泄漏 + 病假条天数放大 + 语音误插三连修",
      "tags": [
        "修复",
        "安全"
      ],
      "items": [
        "【修复·重要】**游客试用次数在重试时被白扣**：网络重试命中幂等/语义缓存回放时，游客身份的预留次数没有退还（此前只修了账号算力，漏了游客）——试用额度本就只有 30 次，每次重试白烧一次直接伤转化。已把游客预扣与账号算力一样延后到缓存检查之后。",
        "【修复·重要】**弱网双跑双扣**：录音生成要跑 30~120 秒，移动网络切换时前端自动重发同一请求会与在途首跑并行——双份上游费用+双扣。已加在途合并：同一请求号的并发调用共享同一次生成。",
        "【修复·重要】**病假条天数放大十倍**：医生填「3-5」（休 3~5 天）会被旧清洗逻辑拼成 35 天。证明文书是有法律效力的天数，已改严格整数校验（范围写法直接提示重填）。",
        "【修复】语音指令误插入：「建议再详细一些」这类以章节别名开头的自然语言，以前会被硬塞进「处理意见」行——现在必须原话带冒号（如「过敏史：青霉素」）才允许直接补写，其余自动转 AI 修改；英文口令 scratch that 此前从未生效过，已修复。"
      ]
    },
    {
      "version": "v1.80",
      "date": "2026-10-09",
      "title": "语音指令内容保留空格（剂量用法不再粘连）+ 预问诊防重复提交 + 项目手册入库",
      "tags": [
        "修复",
        "工程"
      ],
      "items": [
        "【修复】**语音指令的剂量不再粘连**：说「在处理意见里加上 口服阿莫西林 每日三次」，以前会写成「口服阿莫西林每日三次」，现在保留词间空格（「口服阿莫西林 每日三次」）。",
        "【修复】**预问诊防重复提交**：患者双击提交或网络重试不再产生两份记录（提交中占位 + 已提交即拒绝）。",
        "【工程】项目手册 CLAUDE.md 入库（架构速览/部署流程/计费与隐私纪律/历史事故防复发清单），新会话交接成本大幅降低。"
      ]
    },
    {
      "version": "v1.79",
      "date": "2026-10-09",
      "title": "失访名单一键拨号（☎ 走医生自己手机，零合规负担）",
      "tags": [
        "新功能"
      ],
      "items": [
        "【新功能】**☎ 失访名单一键拨号**：居民留了电话的，失访/待复查名单上直接出现「拨打」按钮——点击唤起你手机的拨号盘（tel: 协议走医生本人手机，不是 AI 机器人外呼，无外呼资质与骚扰治理负担）。号码只显示尾四位防旁人偷看；挂断后照旧点「打过了」补记录。调研确认：全自动 AI 外呼需线路实名备案、通话留存 6 个月、且患者事先同意是硬红线（讯飞为区县项目制），个人工具产品不碰；一键拨号是当下最务实的服务闭环。"
      ]
    },
    {
      "version": "v1.78",
      "date": "2026-10-09",
      "title": "AI 修改防重扣（幂等回放）+ DIP 搜索按常见度排序",
      "tags": [
        "修复",
        "体验优化"
      ],
      "items": [
        "【修复】**AI 修改防重扣**：与病历生成同款幂等保护——网络自动重试同一 requestId 时直接回放上次成功结果，不再二次扣算力。重放只发生在首次成功之后：上游失败不会被缓存，重试仍会真实执行。",
        "【体验】DIP 编码搜索按「病种组数」降序排列（组多=更常见，常见病排前），找到目标编码更快。"
      ]
    },
    {
      "version": "v1.77",
      "date": "2026-10-09",
      "title": "工程整理：预问诊/DIP 面板迁入独立模块 + 语音短指令免扣 + 三处健壮性修复",
      "tags": [
        "工程",
        "体验优化"
      ],
      "items": [
        "【工程】app.js 拆分第二批：患者扫码预问诊、DIP 入组提示两个面板迁入独立模块（app-extras.js），主文件再瘦身约 900 行；依赖注入模式延续第一批范式。",
        "【新功能】**语音短指令免扣**：按住说话的指令通常只有几秒钟——10 秒内的短音频识别不再扣游客次数/账号算力（响应带 shortCommandFree 标记），医生高频用口令改病历不再有扣费负担；问诊长录音照常计费。",
        "【修复】DIP 编码别名候选过滤不合法尾点形态（上轮遗留）。"
      ]
    },
    {
      "version": "v1.76",
      "date": "2026-10-09",
      "title": "🎙 按住说话改病历（语音指令编辑）+ 幂等缓存加固 + multipart 超段改报错",
      "tags": [
        "新功能",
        "修复"
      ],
      "items": [
        "【新功能】**🎙 按住说指令**：「AI 修改」旁新增按住说话按钮——松开后自动走自家转写（支持口音/方言通道），命中固定口令直接执行（改主诉/补过敏史/删最后一段/撤销/更简洁/更详细/重写这一段，章节名支持查体/处理一等等口语别名与 ASR 错字），未命中的话自动转入「AI 修改」框。本地编辑带独立撤销栈（说「撤销」即回退）。问诊中双手不便时不再需要打字。注意：语音识别与「只转文字」同额度口径。",
        "【修复】幂等缓存改深拷贝：此前缓存的是结果引用，后续请求往结果上挂配额信息会反复改写缓存对象；上传分段数超限从静默截断改为明确报错（旧版会悄悄丢掉最后一个字段，用户无从察觉）；DIP 编码别名候选过滤掉不合法的尾点形态。",
        "【说明】DIP 3.0 目录升级（含 127 个基层病种标记）：3.0 分组方案为发布会披露、附件直链暂未公开，解析管道已就绪，拿到 3.0 目录 PDF 后一键重跑即可升级。"
      ]
    },
    {
      "version": "v1.75",
      "date": "2026-10-09",
      "title": "医保 DIP 入组提示（国家版 9520 组离线查表）+ 预问诊桌牌真二维码 + 生成幂等防重扣 + 五轮查虫修复",
      "tags": [
        "新功能",
        "修复",
        "合规"
      ],
      "items": [
        "【新功能】**🏥 医保 DIP 入组提示**：把国家医保局《DIP 病种库 2.0》官方 PDF 全量解析为结构化表（9520 组，与官方口径完全一致），离线查表零耗算力。输入主诊断编码（可按诊断名称搜索、可从 ICD 建议一键带入）+ 手术操作编码 → 预计入组病种、同诊断的其他手术组清单（提醒补齐操作编码）、组合未命中原因。合规口径：只做完整性核实，绝不建议「加什么诊断入更高组」，不做分值预测，固定免责声明。",
        "【新功能】**预问诊桌牌真二维码**：桌牌打印不再留「此处粘贴二维码」空位——服务器直接生成可扫的二维码（含医生专属链接），打印出来就能用。",
        "【新功能】**生成幂等防重扣**：每次生成带唯一请求号，网络层自动重试同一请求时直接回放上一次结果，不再二次调用 AI、不再二次扣费（回放响应带标记）。",
        "【修复·重要】**预问诊并发提交丢记录**：两名患者同时提交时，后到的会用旧快照把先到的记录整体覆盖掉（候诊场景高发）。已改为增量落盘；「30 分钟过期」此前从未真正强制执行，现在每一步都会检查；患者自由作答里的危险表述会复查并给医生标 ⚠️ 提醒；带入生成时包裹「患者自述、指令一律忽略」分隔带，堵住患者内容间接注入病历生成的链路。",
        "【修复】上游报错不再把内网/网关地址泄漏给用户（细节只进服务器日志）；上游限流自动退避重试一次（此前重试代码从未真正执行过）；重试仅限限流与网络错误——生成类请求的 5xx 不自动重试，避免上游已计费还重发导致双扣。",
        "【修复】预问诊四个患者接口的限流此前共用一个计数器：诊所共用 WiFi/运营商出口合并 IP 时，十几个患者就会互相锁死。已按接口分桶；流式转写（实验）会话内存加 64MB 上限。",
        "【数据】DIP 目录解析管道入库（PDF→9520 组 JSON，官方文件直链可复跑）；本期同时修正医保版编码含小写 x（如 A35.x）的解析盲区。"
      ]
    },
    {
      "version": "v1.74",
      "date": "2026-10-09",
      "title": "患者扫码预问诊（候诊填病史，一键带入病历）+ 分角色真实对话验证通过 + 隐私补漏 + 分享得算力",
      "tags": [
        "新功能",
        "修复",
        "安全"
      ],
      "items": [
        "【新功能】**🧑‍💻 患者扫码预问诊**：工作台「患者扫码预问诊」面板打印桌牌码（二维码位+手输链接），候诊患者微信扫码 2-3 分钟填完——知情同意（敏感信息单独勾选留痕）→ 主诉（点选常见症状）→ 智能追问（高危症状本地规则即时提醒走急诊）→ 既往/过敏/用药 → 生成小结推到医生待诊列表，点「带入生成」直接进病历。患者页大字模式、替家人填写、女性附加项齐全；记录 14 天自动清理，会话 30 分钟过期。",
        "【验证】**医患分角色真实对话实测通过**：合成双角色对话走生产链路，8 轮「医生/患者」归属全部正确（paraformer-v2 声学分离 + 角色归并），数值（血压165/95）等细节准确保留。",
        "【修复·隐私】AI 修改的指令文本、证明文书的补充字段此前未过脱敏直发云端——已补齐；陪护人姓名改为本地拼装不出浏览器/服务器；患者档案相关下拉在另一页清空档案时正确跟随清空（不再被旧页写回复活）。",
        "【修复】声学分角色改为真正\"先行\"：录音只跑一次 ASR（此前普通转写+声学各跑一次，双倍费用与延迟）；汉字大写数字守卫收紧；临时音频扩展名推导去重；上游限流(429)/瞬态 5xx 自动退避重试一次；流式转写空闲连接 2 分钟自动回收；拍照识别在设置页与返回值中明示\"照片整图上云、无法脱敏\"。",
        "【新功能】**模板广场分享激励**：账号用户每分享一个模板得 2 点算力（每日封顶 5 次），鼓励大家把好模板分享出来。",
        "【工程】预问诊全套单元测试（红旗/模板/会话/回落/隔离）+ 患者端与医生端 e2e。"
      ]
    },
    {
      "version": "v1.73",
      "date": "2026-10-09",
      "title": "医患说话人声学分离（谁说的就是谁说的）+ 证明转诊文书四件套 + 模板广场官方种子 + 全站隐私脱敏补漏",
      "tags": [
        "新功能",
        "修复",
        "安全"
      ],
      "items": [
        "【新功能】**🎧 医患说话人声学分离**：录音对话生成时自动区分「医生：/患者：」——问诊与医嘱不再张冠李戴。技术路线：百炼 paraformer-v2 声学分离（约0.29元/小时）+ 一次小模型调用把说话人编号归并为医生/患者。任何一步失败自动回落原有转写（普通转写+文本标注），不影响主流程；「高级选项」里可一键关闭（纯口述独白场景）。声学成功时不再跑第二遍普通转写，不多花钱。",
        "【新功能】**📄 证明与转诊文书**：按当前病历草稿一键起草四类基层高频文书——诊断证明书（病假条，休息天数自动附大写防篡改）、复工证明、陪护证明、双向转诊单（上转）。抬头/编号/签名/盖章/日期/注意事项由系统统一排版（AI 只写正文，格式不漂移），直接打印或存 PDF；签名盖章留白由医师线下完成。",
        "【新功能】**模板广场官方种子**：预置 14 个官方模板（儿科/中医/高血压随访/糖尿病随访/康复/口腔/眼科/皮肤/急诊留观/体检/护理/术前小结/转诊摘要/产后复查），广场不再空场，也给大家做个内容示范。",
        "【修复·隐私】**七个 AI 入口补上 PHI 脱敏**：AI 修改、ICD 编码、鉴别诊断、患者说明书、宣教、文书起草、智能问答这些入口历史上把病历原文直发云端、完全绕过脱敏开关（隐私页写着“已开启脱敏”但保护不完整）。现已统一：身份证/手机号/证件号等直接标识符出站前一律替换；患者档案的姓名/出生日期等结构化字段按键名强制脱敏（旧版裸姓名会原样进提示词）。",
        "【修复·安全】**提示词注入面收口**：模板/科室参数改为白名单校验（旧版任意字符串可直接拼进系统指令，实测可诱导模型虚构检验值）；个人书写偏好同样过注入特征扫描；游客/会员直传自定义模板对象的旁路已封（服务端只认自己存储的值）。",
        "【修复】档案云备份的两个按钮（同步面板「加密上传/取回」）历史上会把点击事件当成口令——用一串垃圾口令加密并**覆盖账号里原有备份**，导致正确口令也永远取不回。已修复并加双保险。",
        "【修复】「2-30」这类不存在的日期在月日简写分支也会被拦截（此前只有完整年月日分支校验）；词库还原遇到伪造占位符不再 500；转写上游返回畸形 JSON 时明确报错而不是把 JSON 当转写文本写进病历。",
        "【修复】ffmpeg 转码错误输出管道未消费导致挂满 120 秒超时的问题；WebSocket 流式接口（默认关闭）补上畸形请求兜底与通道异常保护。",
        "【体验】多标签页同时开工作台时，患者档案在另一页的写入会实时同步到本页（旧版后写覆盖先写，先存的患者会静默消失）。",
        "【工程】app.js 拆分启动：深色模式/打印/面板搜索/分角色开关/证明文书五个模块抽到独立文件（app-extras.js，依赖注入模式验证通过）；e2e 冒烟脚本扩容。"
      ]
    },
    {
      "version": "v1.72",
      "date": "2026-10-09",
      "title": "模板广场（同行分享模板）+ 修复「AI修改按钮从未可点 / 档案云备份口令读错面板」等二轮查出的 14 项 + 鉴权提速",
      "tags": [
        "新功能",
        "修复",
        "性能"
      ],
      "items": [
        "【新功能】**🏬 模板广场**：右栏「管理我的模板」里新增广场——把自己的自定义模板一键分享出去（生成 MB- 分享码），也能搜同行分享的模板一键导入。对标 Heidi Template Community。防滥用：发布需注册账号、每令牌每小时 10 个、总量 1000 条按「最少使用+最旧」淘汰、重复内容幂等不刷屏。",
        "【修复·重要】**「✨ AI 修改」按钮从上线起就点不动**：按钮初始是禁用态，但全站没有任何代码再启用它——只能靠输入框回车触发。现在生成草稿后按钮自动可用，修改完成/失败后正确恢复。",
        "【修复·重要】**患者档案「一键备份到账号 / 换设备取回」点了没反应**：这两条官方链路把口令写进档案面板的输入框，实际执行时却去读另一个面板的口令框（那里通常是空的），失败提示还写进医生看不到的面板。已改为直接传参，失败原因显示在当前面板。",
        "【修复·重要】**复制功能的隐患**：统一复制函数里一处笔误形成了自我递归——每次复制都先栈溢出再走降级路径，且降级失败也提示「已复制」。已修正，并在无剪贴板权限时如实报告失败。",
        "【修复】**档案合并会静默丢记录**：从备份/账号补进来的就诊，在患者已有 30 次记录时会被上限切掉却提示成功；不满 30 时新记录沉底，让「最近一次」类面板拿旧记录当最新。现统一按就诊日期倒序合并、如实统计补进条数。",
        "【修复】**档案数据损坏防护**：本机档案存储损坏时不再静默清空（旧逻辑会在下一次写档案时把可修复的数据永久覆盖），而是先把原始数据备份到旁路键再提示。",
        "【修复】**账号库读侧熔断**：服务器账号文件损坏/暂不可读时进入只读保护（拒绝写操作并报 503），不再「当作空库继续写」导致全站账号被清空。",
        "【修复】**AI 上游超时不再伪装成 500**：转写/生成/修改/识别等所有上游 120~180 秒超时统一返回「AI 服务响应超时」504 人话提示（算力已退、草稿无损）。",
        "【修复】**账号并发写窗口收干净**：注册/登录/改密的密码哈希计算移到写锁外，锁内纯同步——并发扣费/加算力不会再被登录的旧快照整体回滚（v1.71 只堵了一半）。",
        "【修复】跟随输入「2026-2-30」这类不存在的日期不再入库（月历回验）；加密档案解密尊重密文里的迭代参数（前向兼容）；账号里读不了的旧格式密文给出「先别覆盖」提示而不是误报「没有备份」。",
        "【修复】设置页新增可选的百炼直连/Deepgram/Google/Berget 密钥输入（以前选了这些服务却无处填 Key，必失败）；「语言/口音」选择现在会记住；管理后台报错文案不再出现「请求失败：请求失败：」双前缀。",
        "【性能】会员/账号令牌鉴权加 15 秒缓存（写操作版本号失效）：每次生成从同步读两个 JSON 文件降为 0 次，会员量大后接口尾延迟显著下降。",
        "【工程】e2e 冒烟脚本入库（scripts/e2e_smoke.py，Playwright，覆盖页面/发卡/生成/广场/深浅色/打印/移动端）；app.js 模块化拆分方案成文（docs/appjs-split-plan.md）。"
      ]
    },
    {
      "version": "v1.71",
      "date": "2026-10-09",
      "title": "全站体检修复（管理后台瘫痪/录音5分钟被掐/生产转写通道错配）+ 夜间模式 + 打印存PDF + 面板搜索",
      "tags": [
        "新功能",
        "修复",
        "体验优化"
      ],
      "items": [
        "【修复·重要】**管理后台 /admin 整页瘫痪**：页面内联脚本里有 3 处字符串写了裸换行，浏览器直接报语法错误，生成卡密、账号管理、统计等所有按钮点了都没反应。已修复并逐项回归（登录、生成、列表、统计、错误码文案均正常）。",
        "【修复·重要】**录音 5 分钟被强制掐断**：以前录到 4 分 50 秒就自动停止，页面却写着「约半小时、自动分段」——长问诊后段的对话会静默丢失。现在前端不再提前停止，配合服务端已有的自动分段转写（最长约 48 分钟），单次录音可达约 30 分钟，到点会明确提示。",
        "【修复·重要】**生产转写通道错配**：服务器设置里存的本地转写通道（faster-whisper）覆盖了云通道配置，而本地命令从未配置——此前录音识别会拿到一句占位文字还照常扣次数。现在：选本地通道必须先配置命令（否则保存被拒）；未配置时录音会明确报错而不是给假结果；启动时自动告警；生产已切回阿里百炼云转写。",
        "【修复】**并发注册/登录偶发丢账号**：注册与登录在读写账号文件的间隙有几十毫秒空档，两人同时注册时后到的会覆盖先到的。现在所有账号写操作排队执行，不再互相覆盖。",
        "【修复】游客身份获取改为单次并发（原来页面打开会连发 3 次互相作废，浪费每日设备配额并产生 401 噪音）；网关返回异常页时报错改为中文人话；反馈按钮提交失败会恢复可重试，不再假装成功。",
        "【修复】导出接口对非法 format 参数（如 __proto__）返回 400 而不是 500；账号同步登出失败返回 401 而不是空成功；ICD 编码在 AI 不可用、只给本地编码表结果时不再扣算力点。",
        "【修复】游客额度用完的提示从英文改成中文（并说明注册送算力的免费路径）；管理后台对账 CSV 列错位（激活时间顶到生成时间等）已对齐；管理后台断网时点按钮有明确提示而不是无声无息。",
        "【修复】更新日志页满屏 **星号** 现在渲染为真正的加粗；复制类按钮统一走「微信内也可用」的降级方案（转写区/计算器/字段/ICD/历史等处的复制在微信内置浏览器不再失败）；草稿自动保存不再丢失换行；分享卡片图改用本站域名，旧 .cn 域名下线也不再裂图。",
        "【新功能】**🌙 夜间模式**：顶栏一键切换深浅外观，夜间门诊 / 值班盯屏不刺眼；默认跟随系统，选择会记住；打印样式不受影响（纸永远是白的）。",
        "【新功能】**🖨 打印 / 存PDF**：把当前草稿一键排成 A4 病历页（机构名、患者信息、就诊日期、医师签名、AI 辅助声明齐全），可直接打印夹进病历夹、或「另存为 PDF」发给患者。",
        "【新功能】**🔍 面板搜索**：工作台右侧几十个功能面板，顶部输入关键词（如「ICD」「随访」「计算器」）即时过滤定位，Esc 清空——不用再滚动几屏找面板。",
        "【体验】语言/口音选择现在会记住（粤语医生不用每次重选）；静态资源改动即时生效（服务器不再需要重启才更新页面）；深色模式下全站控件对比度逐项校对。"
      ]
    },
    {
      "version": "v1.70",
      "date": "2026-10-09",
      "title": "电话随访记「建议 / 下次 / 交接」+ 这个月还该上门几趟 + 肝肾线选时间段 + 路线带住址电话 + 集中体检日",
      "tags": [
        "新功能",
        "体验优化"
      ],
      "items": [
        "【新功能】**打完电话不只是问到了什么，还得记「给了什么建议、下次什么时候再打、交给谁」**。上一版把「接触」记上了（问到了什么、通没通），可按卫健委《基层医疗卫生机构医疗质量改善三年行动（2026—2028 年）》的随访质控口径，一次随访要能还原**计划 / 接触 / 判断 / 交接**四项——还差「判断」和「交接」。深圳《家庭医生服务规范》写的是「**转诊后 5 天内**联系受转诊对象」，龙胜县要求电话随访「**应在 7 日内**把随访内容补记进签约服务手册」：打通了不算完，说出口的话得落下来。现在点「📞 打过了」问完第一句，还会再问一句：**建议**：少吃咸的，下周来量血压　**下次**：2026-10-20（也认「10 天后」「2 周后」）　**交接**：张医生。三件都能留空。写了「下次」就**按那个日子压**——到那天人还没来，他自动回到名单上，并且那一行会摆出「📒 上次电话：给了什么建议…　下次再打 2026-10-20（还有 10 天）　交接给：张医生」，换个人接着打不用从头问一遍。这些一并写进履约台账备注，**台账面板上直接看得见**（以前得导出 Excel 才看得到，等于没写）。",
        "【新功能】**「这个月还该上门几趟」：这一季度面对面欠账的人直接排进来**。台账上写着「这一季度还差 1 次面对面」，可排活儿是按月排的——队长早上问的是「这个月我该进村几趟、先去哪家」。云南开远羊街卫生院的做法就是分档按月排（重症每月 2 次、普通每月 1 次）。现在「各片进度」里展开任何一片，都会多出「🚪 这一片这个月还该上门 N 位（合计 M 趟）」，一位一行写清「这一季度面对面还差 1 次，这个月已上门 0 次 → 这个月再上 1 趟」，能**复制**也能**打出来贴墙上**（带勾选框 + 填上门日期的空 + 末尾三行临时加人）。同时进「今日待办」的「🚪 这个月还该上门」这一类。**台账里一次记录都没有的人也算欠账**（这类人恰恰最该上门，以前只在台账里数、根本排不出来）；**电话随访不算面对面**，打了电话还得上门。",
        "【新功能】**肝肾那条线能选时间段了：全部 / 近一年 / 近半年 / 近 90 天**。记了几年的肝肾功能全摆在同一条线上，横轴被拉得老长，「停了保健品以后这半年到底降没降」反而看不清。现在图表上面多一排「**看哪一段**」，四个按钮各自标着这一段有几个点（如「近一年（4）」），点一下就重画，选中的那个会框出来，**选过会记住**。复制给家属、打出来贴随访本的那一段也会标明是哪一段（「肝肾功能查过的数（2026-10-09　·　近一年）」），不会拿两年前的数冒充现在的趋势。默认是「全部」——老数据一条不少，只是不再挤在一起。",
        "【新功能】**走访路线 / 上门计划带上住址和联系电话**。邹平市 2026 年《国家基本公共卫生服务项目及服务流程》写得很实在：上门服务要「**提前 1–2 天通过电话、微信预约，确认服务时间、地址、服务内容**」。可真到进村那天，地址还在村医脑子里、电话还在老人手机里，名单打出来没有这两项，走到村口还得一家一家问。现在每位居民都能记一个住址和电话（「📇 填住址 / 电话」，一行写完就行：「河东村 3 组 13800000000」），**打出来的走访路线和这个月上门计划每行都带上**，没填的写清「（住址没填）」而不是漏印。上门计划也改成一位一块，直接在这一块里填。只记在本机、不进病历；带出去的纸质件自己收好。",
        "【新功能】**年度体检接上「体检车 / 集中体检日」，到期的人自动归到最近那一场**。真实的体检不是「想起一个通知一个」，是按**场次**组织的：梅山镇 2026 年的通知写的是「以村（居）为单位通知到指定地点**集中体检**（时间及地点见附表）」，并明确「**至少要提前 2 天发放通知单**」、体检管理率要达 73% 以上；华蓥市禄市镇 2026 年那轮更实在，安排**体检专用车辆**「分村错峰、就近接送」到各村组接老人。现在综合征面板上多了「🚐 集中体检日」：加一场只需一行「2026-10-20 河东 车接」（日期 + 地点 + 接不接）。**到期该体检的（含已过期、一个月内到期）和从没做过的，会自动归进场次**——居民标了辖区且跟场次地点对得上的归他那一片那场，对不上的归最近那一场。每场能**打出通知单**（时间地点、接不接、提醒空腹与带身份证社保卡、每位一行带住址电话和「□ 已通知　□ 到场」），也能复制发群里。场次剩不到 2 天会点出来「今天就得发」。各地口径不同，「提前 2 天」「73%」只作参照，界面上已注明**以本地口径为准**。"
      ]
    },
    {
      "version": "v1.69",
      "date": "2026-10-09",
      "title": "电话随访记「问到了什么」+ 季度面对面够没够 + 肝肾血压血糖一条线 + 走访路线 + 年度体检到期",
      "tags": [
        "新功能",
        "体验优化"
      ],
      "items": [
        "【新功能】**打完电话能记「电话里问到了什么」，说停药的直接落到自购药停用上**。上一版点「📞 打过了」只是往台账里写一句「已电话随访」，可考核查台账时这四个字撑不住——国家卫健委《基层医疗卫生机构医疗质量改善三年行动（2026—2028 年）》要求一次随访能还原**计划 / 接触 / 判断 / 交接**四项，并明确「**未接通、号码失效、由非授权人员接听、居民改约、完成面对面沟通，都不应落在同一个『已完成』状态**」「避免把『已联系』误当成服务完成」。现在点「打过了」先问一句：① 还在吃，说过几天来配药　② 已经自己停药了　③ 换了保健品 / 偏方　④ 住院了 / 在外面住　⑤ 联系不上。写「2」＝他自己在吃的长期自购药**一并标上停用**（不然断药天数会越滚越大，谁也不知道他到底吃不吃），并把依从性记成「间断服药」；写「5」＝没接通，**只压 7 天**（过几天还得接着打），也绝不替他标停用。写编号、写汉字都认，留空就只写「打过这通电话」。",
        "【新功能】**这一季度面对面随访够没够，单独盯一遍**。一年 4 次面对面是基本公卫的常见要求，可只在台账上数「今年够没够」就晚了——前三个季度一次没做，到 12 月就得连着补四次，补不出来。现在台账按**季度**也数一遍（4 次/年摊到季度就是每季度 1 次）：顶部点明「2026-Q4 这一季度：慢病 / 长期用药的还有 N 位一次面对面随访都没做」，每人那一行写着「这一季度面对面 0 次，还差 1 次　·　全年还差 4 次」，导出 Excel 的小计里也带得走。上季度做的面访**不算进这一季度**。",
        "【新功能】**肝肾功能那条线并上血压 / 血糖，一条时间轴摆多样**。以前只能画出肝肾两条线，可说服人最有力的一句话是「停了保健品以后，肾在往回走、血压也下来了」——分开看两张表谁也说服不了谁。现在血压血糖**不用另记一遍**，从您存档的就诊记录里取（血压取收缩压，血糖记着是空腹还是餐后），跟肝肾摆在同一条时间轴上：四条线各自标上单位（umol/L、U/L、mmHg、mmol/L），量纲不一样不会看混。复制给家属 / 打出来贴随访本的那一段里也一并摆上，并写明「血糖有空腹与餐后之分，两条不是一个尺子，摆在一起只看走势、不做比较」。档案里没写血压血糖的，不凭空摆一条。",
        "【新功能】**「这一片今天先打谁」能打成一条路线照着走**。名单在屏幕上翻两页就没了，进村没信号还得靠脑记。现在展开的名单多一个「**🖨 打出来照着走（带勾选框）**」：一家一行、前面留个方框手勾，每行留「办了什么：＿＿＿＿」，断药的写在最上面，最后留三行空白给路上临时想起的人。打印只出这一份（整屏按钮不会跟着出去）。底部提醒一句「纸质件带出去注意别丢，含居民姓名」。",
        "【新功能】**65 岁以上那次年度体检（含肝功肾功）到期提醒**。基本公卫里 65 岁以上是「每年一次免费体检」，辅助检查含肝功肾功——2026 年国家卫健委还要求增加**胸部 DR 正位片与糖化血红蛋白**；可这一年一次恰恰没人盯：开药有人排、随访有人排，唯独体检是「想起来才通知」，想起来的那天往往已经是年底（梅山镇 2026 的通知要求体检管理率 ≥73%，还得「至少提前 2 天发放通知单」——一天通知几十个人根本来不及）。现在每一位的综合征面板上摆着「🩺 记今年体检（含肝功肾功）」，做过一键记下，下次自动排到**一年后**，到期前一个月进「今日待办」的「🩺 年度体检到期」。**60–64 岁这一档也算**：克山县 2026 年答复明确对 60–64 岁里患高血压 / 糖尿病 / 慢阻肺 / 严重精神障碍 / 肺结核的同样给每年一次免费体检。从没记过的人**不进今日待办**（一个村两百号老人全列出来等于没名单），只在面板上报个数、摆出「记一次」的键，做过记一笔就开始按一年排。"
      ]
    },
    {
      "version": "v1.68",
      "date": "2026-10-09",
      "title": "断药一键电话随访 + 服务包按人群分包 + 肝肾趋势画线 + 片区今天先打谁 + 上一季度照抄",
      "tags": [
        "新功能",
        "体验优化",
        "Bug 修复"
      ],
      "items": [
        "【新功能】**断药的人一键变成一次电话随访，直接记进履约台账**。上一版只能点「已联系上（先不列）」把这一行藏起来，年底补台账还是得凭印象写「我打过电话」。可追回电话本身就是一次服务——扎兰屯 2026 第三季度的口径是**入户面对面 + 电话随访 + 站点集中随访相结合**，临泽倪家营给村医配智能随访终端就是为了「杜绝电话代录、虚假随访」，说明电话随访是算数的、也是要留痕的。现在疑似失访名单上多一个「**📞 打过了（记一次电话随访）**」：点一下，服务台账自动记一笔（方式＝电话，备注写明「药 X 月 X 日就该吃完、已断 N 天还没来」），同时 90 天内不再念。名单上每一位还会摆出「🧾 今年已服务 N 次　最后 X 月 X 日（电话）」，已经电话管着的人不会再被重复劳动。没断药的人只写「多少天没来」，不硬说断药——认不出来就不冤枉人。",
        "【新功能】**服务包清单按人群分包，按诊断 / 年龄自动对上**。以前基础包写死一份，给糖尿病人记「量血压」，年底交上去自己都觉得不对。可各地就是按人群分包的：淮北杜集区 2026 的基础包**按人群分成十一型**（老年人、高血压、糖尿病、孕产妇、18 岁以下、结核、严重精神障碍、残疾人、慢阻肺、监测人员、一般人群），且「**按服务对象所属人群选定，不得漏选或多选**」；阜阳颍泉区高血压包是**每年至少 4 次面对面随访 + 1 次健康检查**，糖尿病包多了**足背动脉搏动**，老年人包的辅助检查含**肝功能（谷草/谷丙/总胆红素）与肾功能（肌酐、尿素氮）**；宁津县中级包按人群分十一型；临邑宿安乡干脆列了十五个包。现在：记履约时先按档案里的诊断和年龄判定人群，再带出这一人群的清单（高血压的人带「少吃盐、问漏没漏服」，糖尿病的人带「看一次脚」，老人带「问摔过没有」，儿童带「预防针」）。「✏ 改服务包清单」弹窗里每一类人的那一份都摆出来了，写「基础包·高血压：」这种带「·」的标题行就能单独改。**已经改过通用那份的，不会被内置的人群版悄悄顶掉**（升级后口径不变）。各人群清单第一件跟通用同名（「量一次血压 / 血糖并记下来」），换了人群也不会让以前记过的那件突然对不上。",
        "【新功能】**肝肾数值画成一条线，能打出来贴在他的随访本上**。只说「降了 29」是个数字，老人听不进去；把三次数连成一条往下走的线，他才真的信「停了保健品以后我的肾在往回走」。现在记满两次就在用药清单里画出一条折线（肌酐一条、谷丙一条，点上有数值、底下有日期），配两个按钮：「**📋 复制这段（发家属 / 微信）**」复制成一段话（写明「从第一次到现在降了 41」），「**🖨 打出来（贴他随访本上）**」只打这一段（复用页面上那个打印区，整屏按钮不会跟着打出来）。给患者看的那段照例带上「须经接诊医生核对，原始化验单为准」。",
        "【新功能】**各片进度能往下钻成「这一片今天先打谁」**。上一版只能说出「河东这片落后」，可队长真要干活时问的是下一句：「那我今天进村先敲哪几家的门？」——长汀县正是每月发布**网格健康指数**（涵盖慢病控制率等 7 项指标），札兰屯也是「分片包干、网格管理」。现在各片进度表每一片多一个「**👣 这片今天先打谁（N 位）**」，展开就是一份名单：**断药的排最前**（药断了还没来的人最该先打），再按今天该办几件排，每一位写明「药断了 N 天还没来」「要办：长处方到期…」，并带「📞 打过了（记一次电话随访）」「📝 写随访记录」「📜 看时间线」三个键；「📋 复制这份名单」成一段话，发群里或带在身上都行。今天没事、药也没断的人不进名单（不制造噪音）。",
        "【新功能】**批量页加「⏪ 照抄上一季度」**。季度末多数人的活儿跟上一季度一模一样（还是那几件），十几位一位一位重新勾一遍纯属体力活。现在批量页上一键把上一季度记的那几件抄到这一季度（照抄后还能改，改完再「💾 存这一页」）；**清单换过、名字对不上的抄不过来**，一件也不虚报，并会提示「上一季度一笔都没记过，没得抄」。旁边还加了「✅ 所有人全勾上 / 🧹 全部清掉」。每一行现在也写明「高血压·基础包　3 件」，看得出是按哪个人群的清单记的。",
        "【Bug 修复】**慢阻肺病人对不上慢阻肺人群**。病历里的诊断常写全称「慢性阻塞性肺疾病」，而人群判定只认「慢阻肺」三个字，结果慢阻肺的人被当成普通老人带出老人包。现在全称也认得。"
      ]
    },
    {
      "version": "v1.67",
      "date": "2026-10-08",
      "title": "很久没来复诊配药预警 + 服务包清单可改 + 履约一次记多人 + 肝肾数值看趋势 + 各片进度直接看",
      "tags": [
        "新功能",
        "体验优化",
        "Bug 修复"
      ],
      "items": [
        "【新功能】**「很久没来复诊配药」自动预警：药吃完了 + 人也没来，一起点名**。调研里这一类最容易静悄悄出事——湖北仙桃 2026 年已筛查出 5400 余名存在**用药断点**的慢病患者，当地卫健委的原话是「老人出院后药怎么吃、吃多久，往往没人接续跟踪」；成都家庭医生自述的那位环卫阿姨，血压一直降不下来，追问之下才支支吾吾说「断了好几天」；张掖民乐 82 岁的朵奶奶擅自停药后深夜头晕心慌打电话；椒江阮阿公血压一正常就停药，四天后反弹到 176/102。以前这一区只在「🕳 疑似失访」面板里，没人天天点开看。现在：① 名单里**药断了的排最前**，写明「💊 药 X 月 X 日就该吃完了，已断 N 天还没来」；② 顶部点出「其中 N 位药早吃完了还没来——慢病的人药断了还不来，多半不是好了，是自己停了、换了保健品、或者出事了」；③ **自动进「✅ 今日待办」**（新增 🕳 这一类），点「去办」直接跳过去；④ 导出 Excel 多「药吃到哪天 / 已断药(天)」两列。没写开药天数的人只说「没来」，不说「断药」——认不出来就不冤枉人。",
        "【新功能】**服务包清单可以自己改了（各地件数不同）**。内置的「基础包 3 件 / 家庭包 5 件 / 有偿包 6 件」只是通用估计，可各地口径差得远：淮北杜集区的**基础包按人群分成十一种**（老年人包、高血压包、糖尿病包…），且每季度可预约 1 次面对面指导；济南港沟的高血压包是血压监测 ≥4 次/年 + 体格检查含肝功肾功 1 次/年；临沂河东基础包含「**为有需求的慢性病人代购慢性病常用药**」；利津的个性化包 A（10 元）含葡萄糖测定 + 血常规 + 心电图。现在点「**✏ 改服务包清单**」，弹窗里就是当前这份清单，**一行写一件**，行首写「1. 」「1、」都只当编号；写「默认」改回内置。改完以后记履约弹的就是这几件；已经记过的按**名字**对，对得上还算做了，对不上就算没做（不虚报）。",
        "【新功能】**履约「做了哪几件」可以一次给多人记**。季度末补台账的真实场景是十几张单子摊一桌子，一位一位点开、弹窗、写编号、确定——手酸还容易漏。现在点「**📦 这一季度一次记多人**」，出来一页勾选表：**一个人一行，这个包该做的几件摆成勾**，已有记录自动勾上，每行带「全勾上 / 都清掉」，上面填一次「这批是谁记的」，点「**💾 存这一页**」一次全记上。如实记：**一件也没勾的＝这一季度不算履约**（状态栏会写明几位没勾）。",
        "【新功能】**肝肾功能查出来的数能记回来、看得出趋势**。上一版只记「哪天查的」，可真到劝老人停保健品那一刻，最有说服力的不是科普文章，是他自己那张单子上的数——三月肌酐 118，停了三个月降到 89，这一句比讲半小时都管用（武汉赵女士叠加保健品 + 中药一年致肝硬化，停掉后指标才回落）。现在点「✅ 记这次已查」时会顺手问一句数值：写「**肌酐 82 谷丙 30**」行，只写两个数「82 30」也行（第一个肌酐、第二个谷丙），留空不强迫。面板上摆出「📈 查过的数：肌酐 118 ↓ 89（-29）　2026-03-01 → 2026-09-01」，**降了提示「停了保健品 / 减了量以后数往下走，这一句拿给他本人看最有说服力」，涨了改口「跟他再谈一次『还吃不吃』」**。同一天再记一次＝改数，不是多一条。",
        "【新功能】**各片进度不用先导出，页面上直接看**。上一版进度只躺在导出的 Excel 表尾，可队长真正的使用场景是周一早会要说出「哪片落后」，或者打印出来贴墙上。现在点「**📊 各片进度**」：一片一行，**居民数 / 今天该办几件 / 履约率（a/b 个季度）/ 控制率（c/d 人达标）/ 归谁管**摆齐，落后的标 ⚠ 点出来，底下「**📋 复制这张表**」复制成一段话（发微信群、贴墙都行），旁边还能一键导出含每人明细的 Excel。",
        "【Bug 修复】**「疑似失访」算错了「上次哪天来的」**。这一区以前直接取档案里第一条当「最近一次就诊」，而合并 / 导入进来的档案顺序不一定按日期排——结果上礼拜才来过的人也会被算成「很久没来」。现在跟其他名单一样**按日期排序后再取最近一次**，冤枉人的那条不会再出现。"
      ]
    },
    {
      "version": "v1.66",
      "date": "2026-10-08",
      "title": "按人每类待办都给「去办」+ 履约按季度记做了哪几件 + 干预清单回写季度考核表 + 自购药一键排肝肾功能 + 按辖区进度",
      "tags": [
        "新功能",
        "体验优化",
        "Bug 修复"
      ],
      "items": [
        "【新功能】**履约台账接上「这一季度该做哪几件」：打勾时顺手记下做了哪几件**。上一版履约只打个季度勾，年底交上去说不出「到底做了什么」——而各地 2026 服务包写的就是一件件项目（济南港沟：血压监测 ≥4 次/年、面对面随访 ≥4 次/年、体格检查含肝功肾功 1 次/年；广饶：长处方、健康教育 ≥12 次/年）。现在记签约时写「基础包 / 家庭包 / 有偿包」，点「**✅ 记这一季度履约**」会把这个包该做的几件**编号列出来**（基础包 3 件、家庭包 5 件、有偿包 6 件），写「1 3」「全」「没做」都认；留空直接确定＝只打勾不记件，已打过勾的再留空确定一次＝取消（跟以前一个手感）。年度视图第四段多了「**该做的那几件：今年该做 N 件、已记做了 M 件 → X%**」，按人那一行也带上「该做 N 件 / 做了 M 件」，导出 Excel 同步加两列。",
        "【新功能】**干预台账接上「这一季度该做清单」，并回写季度考核表**。上一版台账写清了「上次哪天做的、下次该做」，可考核是**按季度**问「规范管理做了没有」，台账上却答不出来。现在老年综合征那一行当场写「**2026-Q4 做了 1/4 件（还差 3 件）**」、做全了写「✅ 做全了」；季度考核表第八段多了「**⚠ N 位动了手、可清单没做全**」，一位一位点名（谁、当时什么等级、做了几件、还差哪几件），做全的也报一句「✅ N 位该做的都做全了」——完成率就是被这几位拉下来的，交上去前先补齐。季度导出 Excel 同步多出这一张表。",
        "【新功能】**自购药吃了很久 → 一键排肝肾功能监测**。自己买的药不在任何一张复查名单里：本院开的药有人盯着排复查，自购的没人排。可调研里出事的正是这批——杭州余杭一位 70 岁大伯每天吃 10 种「稳压」保健品、减少复诊配药，半年后查出**急性肾衰竭**；武汉赵女士叠加服用保健品与中药一年进展为**肝硬化**；广西 62 岁老人吃安神类保健品致**重度药物性肝损伤**。现在吃了 90 天以上的自购药，用药清单那一块会出现「**🩸 排一次肝肾功能监测**」：点一下排到今天（进了今日待办就催着办），查完点「**✅ 记这次已查**」，下次自动排到半年后（长期服用者各地口径每 3–6 个月查一次，60 岁以上半年一次）。到日子会并进今日待办的「🛒 自购药吃了很久」，写明「肝肾功能　该查了（已过 N 天）」。",
        "【新功能】**按辖区导出带上这一片的履约 / 控制率进度**。上一版按片出的是「这一片该干什么」，可队长真正要的是「这一片管得怎么样」——哪片履约拖了后腿、哪片血压血糖没控住。现在每片表头多了「**履约 X%（a/b 个季度）　·　控制率 Y%（c/d 人达标）**」，表尾还有一张「**各片进度一览**」：一片一行，居民数、今天该办几件、签了约的几位、履约率、控制率都摆齐，哪片落后一眼看得出。控制率口径与「📉 慢病控制率」一致（最近一年量过才算，没量过的不进分母）。",
        "【体验优化】**按人看时，每一类待办都给「去办」按钮**。以前按人看一人只给一个「去办」（只给最要紧那一类），这位身上既有筛查又有长处方到期时，要去办长处方得先切到「按类别看」再翻回来——按人看本来就是为了一件件办掉。现在他身上有几类就给几个按钮（同类不重复，最多 4 个），点哪个直接跳到哪一块。",
        "【Bug 修复】**提示里的加粗不再显示成「<b>」这样的字**。好几处说明文字靠加粗分层次，可这一路是按纯文本渲染的，结果标签原样印在页面上（看着像乱码，也看不出哪句是重点）。现在只认 b / strong / br 这几种最简单的标签，认到了才按富文本渲染，其余照旧按纯文本（不会把内容当代码跑）。"
      ]
    },
    {
      "version": "v1.65",
      "date": "2026-10-08",
      "title": "干预台账「多久该再做一遍」+ 复查判读接上调药 + 自购药吃满三个月进待办 + 按辖区导出 + 履约台账与履约率",
      "tags": [
        "新功能",
        "体验优化"
      ],
      "items": [
        "【新功能】**干预台账：勾过一次不算完，台账上写清「上次哪天做的、下次该做、到期了该做第二遍」**。上一版能导出「这一位做了哪几件」，可台账上只写做过，看不出**是不是一整年只动过一次手**——考核问规范管理时最容易被翻出来的正是这种。现在每一件干预都有了「多久该再做一遍」：运动锻炼 3 个月、用药管理半年、居家环境一年，「再问一遍那三句」跟着等级走（高危 1 个月、中危 3 个月、低危一年）。勾完当场在这一件后面写「下次该做：2027-01-06（90 天一遍）」；**到期没做的变红**：「🔴 该做第二遍了：上次 2025-03-12 做的，2025-09-08 就该再做（已过 395 天）」。面板顶部报一句「🔴 N 位有干预项到期了该做第二遍」。「📇 这一位的干预记录」升级成**年度台账**：文件名与标题带年度，多了「多久一遍 / 下次该做 / 是否已到期」三列，表头写清有几件到期；**往年做的、可今年早该做第二遍的照样列出来**（按年一滤就把最该看的那件滤没了）。没勾过的人点了照旧提示去勾，不出空表。",
        "【新功能】**复查判读完，把影响这个数的那几味药摆出来，一键去核方子**。上一版查完只说「比复查前更差」，可差了之后该动哪一味，还得回去翻用药清单——数不对劲不是为了看的，是为了决定这张方子要不要动。现在复查更差（或查完数值仍异常）时，这一行除了写「📈 比复查前更差：130 → 150」，还会接着写「💊 影响这个数的药：培哚普利片、氢氯噻嗪片」，并给出「**🧪 核这张方子**」按钮，点了直接打开重复用药初筛那一块（本院开的 + 他自己买的一起摆着看）。好转的不再念着调药。这里只摆药名和数，**不替您决定调不调药**。",
        "【新功能】**自己买的药吃了三个月以上，自动进今日待办**。长处方到期催、半年评估催，唯独「他自己买的」没人管——而调研里出事的正是这批：广西一位 62 岁老人长期吃安神类保健品吃到重度药物性肝损伤住院；多位专家口径一致：长期服用保健品 / 中成药者应每 3–6 个月查一次肝肾功能。现在**吃了 90 天以上还在吃的**、以及**快吃完的**自购药，会自动生成今日待办新的一类「**🛒 自购药吃了很久**」，写清是哪一味、吃了多少天、是不是自己买的，点「去办」直接回到用药清单那一块。停了的不念，刚吃十天、也没填还剩多少的不打扰。",
        "【新功能】**按辖区导出「这一片这个月该干什么」**。上一版有了「按人导出」，可村里、社区里分活儿其实是按片分的——入村那天要的是「河东这一片这个月该干什么」，不是「小李名下这几位」。现在待办面板多了「**📍 按辖区导出本月**」：一片一块，写清这一片有几位、归谁管（带联系方式）、每位**这个月做过什么**（近 30 天的干预 / 回访 / 解读）、**今天该办什么**；表尾还列出**还没归片的几位**（分片时最容易落下的就是这批）。辖区来自团队名单的「负责辖区」和居民身上的「📍 归到…」。",
        "【新功能】**履约台账与履约率：签了不等于做了，按季度打个勾**。考核里履约是最压分的一块（濉溪 2026：家庭医生签约 15 分里履约率占 12 分，基础包 / 家庭包 / 有偿包履约率各要求 ≥8%×月份数；颍泉 2026 把履约率、续约率一起列为团队考核核心指标），可「今日待办已办」只留 7 天，年底根本算不出履约率。所以单独做一本台账：记签约时顺手写个**服务包**（基础包 / 家庭包 / 有偿包），然后在下面选好人和季度、点「**✅ 记这一季度履约**」打个勾（再点一次取消）。年度视图多了第四段：**履约率**（已打勾的季度人次 ÷ 在管人数 × 今年已过的季度数）、**分服务包各自多少**、并点出「一个季度都没打勾的几位」；没续签的不计进分母。导出 Excel 同步带上这一块。"
      ]
    },
    {
      "version": "v1.64",
      "date": "2026-10-08",
      "title": "按人一张干预记录 + 复查结果看完就判 + 自购药吃了多久 + 辖区按人本月 + 签约续签满意度",
      "tags": [
        "新功能",
        "体验优化"
      ],
      "items": [
        "【新功能】**一位高危老人身上这一年做了哪几件、谁做的、哪天做的，一键就能导出来**。上一版干预留痕只在季度表里汇总，可真被问到「周姨这一年你们在她身上做了什么」时，得从几百行季度表里自己翻。现在老年综合征那一行多了「**📇 这一位的干预记录**」按钮：点一下直接出一份只属于她/他的 Excel（哪天、做了什么、谁做的、当时是哪一级），没勾过的人点了会提示先去勾，不会导出一张空表。这正对着考核里「责任可归属 + 规范管理率」那一条：能被单独拿出来给家属、给考核组看的记录，才算真的留痕。",
        "【新功能】**复查查完当场判一句：比复查前好 / 跟上次差不多 / 比上次更差**。上一版只做到「排了复查日、查完记一笔就认作已复查」——可两个数是摆出来了，比得比不得还得人自己看。现在记完新数，这一行直接写出「✅ 复查比复查前好：130 → 100」「📈 比复查前更差：130 → 150（涨了 15%）」，血钾这类有参考范围的按「离参考范围近了还是远了」判，肌酐这类按升降判，动不到 5% 算持平；面板顶部多点一句「📈 N 位复查比上次更差」。更差的、或查完数值还异常的，那一项的按钮会变成「**🔁 再排一次复查**」，点一下从今天往后 14 天再排一次，闭环接着转，不用重新解读一遍。化验导出的 Excel 多了「复查比上次」一列。只比您记进来的数，不替您解读报告单。",
        "【新功能】**自购药能记「还剩多少」，自动算出吃了多久、大概哪天吃完，还跟长处方到期联动**。调研里最扎心的一条：不少老人把处方药停了换保健品，出事就出在没人盯「他到底还在吃什么、吃了多久」。现在补记那一行多了「**还剩多少**」框：填「10」就是还能吃 10 天（会自动算出大概哪天吃完），填「半盒」就照抄；每一行写清「吃了 120 天　·　还剩 10 天的量　·　🔴 大概 07-01 就该吃完了（已过 99 天）」。**吃了 90 天以上还在吃的**会单独点一句（值得问「管不管用、有没有代替处方药」）；**快吃完的**会提醒趁这次续方一并问，别让他自己接着买。长处方面板也联动：这一位自己买的药快吃完 / 吃了很久的，直接写在长处方那一行下面。没填「还剩多少」的就只说吃了多久，不瞎猜哪天吃完。",
        "【新功能】**团队名单接上「负责辖区 / 人群」，能出「他名下这几位这个月该干什么」**。各地公示的家庭医生团队表都有「责任区域」这一列，因为村里、社区里分活儿是按片分的。现在团队名单多了「**负责辖区**」一栏（填「河东片」这种），居民那头在老年综合征 / 化验那一行多了「**📍 归到…**」（写辖区名就行，写「清」取消）。对上了，团队名单里就会显示「名下 N 位」。新增「**📇 按人导出本月**」按钮：一人一块，带上联系方式、负责辖区、名下这几位，每位写清**这个月做过什么**（近 30 天的干预 / 回访 / 解读留痕）和**今天该办什么**。名下认三条：辖区对得上的、今天分派给他的、最近一个月他做过干预留痕的——宁可多列也别漏。",
        "【新功能】**年度视图多了「签约、续签与满意度」，续签率 / 知晓率 / 满意率一块出**。考核除了控制率还盯这三样：平阳 2026 把签约续约率、居民知晓率、满意度写进核心指标并与补助资金挂钩；上海青浦 2026 目标是续约率 ≥70%、签约居民满意度 ≥85%、依从性 ≥80%；淮北杜集区 2026 要求知晓率 ≥70%、满意度 ≥80%；濉溪 2026 家庭医生签约 15 分里履约率占 12 分。这些数散在问卷和台账里，随访时顺手记一笔最省事。所以筛查台账那块新增**选个人 + 「✍ 记一笔」**：写一句「**续签 满意 知道**」就记上了（一次写完也认，只写「续签」也行，写「清」能清掉）。年度视图多了第三段：**续签率 / 知晓率 / 满意率**，并点出「没续签或不满意的几位」（最该先打电话的），口径写在表上（没记的不算进分子也不算进分母）；导出的 Excel 同步带上这一块。"
      ]
    },
    {
      "version": "v1.63",
      "date": "2026-10-08",
      "title": "干预留痕到人到日 + 化验复查闭环 + 自购药停用 + 团队名单 + 签约居民年度视图",
      "tags": [
        "新功能",
        "体验优化"
      ],
      "items": [
        "【优化】**该做的几件事，做完勾一下会记下「谁做的、哪天做的」——考核问到头上答得出来**。上一版那一列只能勾，勾完只知道「做了」，不知道是谁哪天做的，年底考核问「规范管理率」时只能凭印象答。现在**勾上的那一刻会问一句**：写「小李」就是小李今天做的，写「小李 2026-11-08」就是那天做的，留空就记今天、不记是谁；点「取消」就不勾（手滑点错不会记一笔）。勾完当场显示「✅ 11-08　小李」。**季度履约年报多了「八、跌倒高危干预完成率」**：这一季度做了几件、涉及几位、完成率百分之多少，算法写在表上——动了手的人按他当时等级该做几件算分母（高危 4 件、中危 4 件、低危 3 件），只勾一件的人会把完成率拉下来，这正是考核要看的「规范管理」。导出的 Excel 多「干预明细（哪天 / 谁做的）」一列。以前勾过的老数据照旧认得出来，只是没有日期可归季度。",
        "【新功能】**化验异常真正合上了环：解读完自动排复查日，到日子进今日待办**。上一版做到「异常→解读」就停了——解读完说一句「两周后复查一次」，这句话没人记、没人排、没人催。真正出事的就是这一截：肌酐涨了三成，解读完也调了药，可复查单没开也没人记得再看一眼这个数，等想起来已是半年后。现在**点完「✅ 已解读」当场就排出复查日**（解读那天往后 14 天，点「📅 改…复查日」能改成约好的那天），到日子（含已过期）自动进「今日待办」的新类别「🔬 化验复查」；**查完在这一行点「✍ 记一笔」把新数记进来，就自动认作已复查**，不再念。季度年报的化验那一块也多了「排了几个复查日、查了几个」。",
        "【新功能】**自购药能记「停了没有、什么时候停的」，还会跟清单里「这次停掉的」对一遍**。问出来的药过几个月还在吃吗？最该被看见的恰恰是**「本院这次给他停了，可他自己买的还在吃」**——有人信了网红保健品把正规药停了二十多天，出事就出在这一截。现在补记那一行多了「⏹ 停了」按钮：点一下问哪天停的（留空就是今天），标了停用就不再计入「🧪 重复用药初筛」（停了的药不该再跟现在这张方子撞车），但清单和 Excel 里仍写清「哪天停的」；点「▶ 还在吃」能撤销。用药清单里多了「停用与对照」一段：**本院这次停掉的，他自己买的还在吃 → 点名**（拿通用名比对，「络活喜」和「氨氯地平片」认得出是同一个）。患者版也写清「您记过的这些里，已经停了的」。",
        "【优化】**「指派给…」升级成能管的团队名单**。上一版只是把填过的名字攒起来能下拉选，改不了也删不掉。可各地公示的家庭医生团队表写的是**姓名 + 联系电话 + 分工 + 责任片区**——因为考核要看「责任可归属」：出了事找得到人，分活儿知道谁固定管哪一类。所以待办面板新增「**👥 团队名单**」：一行一个人，三个框（姓名 / 联系方式 / 默认分工），**能改名、能删、能补联系方式和分工**。改名字会连今天已经分派出去的责任人一起改，不会一会儿新名一会儿旧名。填了**默认分工**的人，切到「按类别看」时那一类活儿会自动预填他（分工写「筛查」的人，筛查那一堆就默认归他），不用每天再打一遍字；填了**联系方式**的，点「按人导出」时一人一块的清单上会连他的号一起带上，微信发过去就能干活。名单只记在本机、不上传。",
        "【新功能】**季度表之上再来一张「签约居民年度视图」，直接给出血压 / 血糖控制率**。考核的趋势很清楚：从「签约率、访了几次」转向「管住了没有」——各地 2026 年方案里高血压规范管理率 ≥65%、血压控制率 ≥45%、血糖控制率 ≥35%（有的地方要求控制率 ≥70%），敦煌跑出来的数是慢病规范管理率 80%、控制率稳定在 70% 以上。所以筛查台账那块新增**年度下拉 + 「📅 签约居民年度视图」**：① **结果指标**——高血压 / 糖尿病各多少人在管、最近一年量过几位、达标几位、控制率百分之多少，不达标的点名，口径写在表上（血压 <140/90、空腹血糖 <7.0，超一年没测的不算达标也不算不达标）；② **这一年在每个人身上做了什么**——把四个季度连起来，按人列出做过的事、覆盖几个季度，并点出「只覆盖 1 个季度的几位」（一年只动过一次手的，最容易被考核挑出来）。可导出 Excel。顺手修了一个真 bug：**季度年报的导出判空还停在原来四块**，这一季度只勾过干预清单或只排过复查日时点导出会什么都不出——现在这两块也算数。"
      ]
    },
    {
      "version": "v1.62",
      "date": "2026-10-08",
      "title": "跌倒复评排期与干预勾选 + 化验异常解读闭环 + 自购药批量补记 + 按人分派 + 季度履约年报",
      "tags": [
        "新功能",
        "体验优化"
      ],
      "items": [
        "【新功能】**分完等级就排好下回什么时候再问，该做的几件事能勾了**。上一版问完三句出了低 / 中 / 高危，可「下个月谁该再问一遍」还是靠脑子记——分完级不排复评，等于三问白问。现在问完三句**当场排出复评日**（按标准口径：高危 1 个月、中危 3 个月、低危一年），到日子（含已过期）自动进「今日待办」的新类别「🚶 跌倒复评」，点「去办」直接回到这里再问一遍。要约别的时间，点「📅 排个复评日」填个日期就行（填「清」回到自动排）。同时**这一级该做的几件事变成能勾的清单**：运动锻炼、用药管理、居家环境……做完勾一下，下次随访一眼看出「4 件事做了 1 件」，导出的 Excel 多「复评日 / 干预做了几件」两列。",
        "【新功能】**化验异常也接进回访闭环了：数不对劲得告诉他，还得记下来**。上一版把数摆成一串、点出「肌酐涨了 44%」，可点完就断在这儿——筛查那套「异常结果 2 周内回访」的闭环，化验这边没有。真正出事的正是这一截：肌酐涨了三成没人管，血钾低了没人知道，等下一次就诊已是几个月后。现在「📈 化验趋势」里异常的那一项多了「✅ 记…已解读」：点一下先问结果归哪一类（💬 已解读 / 💊 已调药 / 🏥 已转诊 / 📅 已安排复查 / ➖ 维持原方案，**写序号最快**），再写留痕（可留空、可后补），页面上写「✅ 已解读（哪天）　💊 已调药」。**异常那天算起 14 天**没解读会点名，并进「今日待办」的新类别「🩸 化验异常待解读」；解读完就不再念。这些记录一并进季度汇总。",
        "【新功能】**自购药能记「哪天问到的 / 谁开的」，还能一次给多位补记**。过半年再核对时，得知道这句话是哪天问出来的、靠不靠谱，所以补记那块多了「哪天问到的」（默认今天）和「谁开的 / 哪家」两个框，清单和 Excel 里都写清楚。更省事的是新增「📋 一次给多位补记」——上门随访一趟问出五六个人的自购药，回来**一行一位写成「老周 布洛芬 0.1g 药店买的」**一次全补上，来源自动认（药店 / 上级医院 / 别的），认不出按「别的」记；档案里没有的人、只有姓名没药名的行会单独报出来，不会悄悄丢掉。",
        "【优化】**责任人不用每次手打，还能按人导出一人一张**。团队就那么几个人，每天打字填名字是最没必要的重复劳动。现在「指派给…」那个框**填过一次的名字会进常用名单，下次能下拉选**（也能照旧手打新的）；新增「**按人导出（一人一张）**」，出的是一人一块的清单——「小李今天该打的电话」直接发给他本人，办完的不派活、没指派的单独一块。原来「按类别导出」照旧可用。责任人只记在本机、只留 7 天。",
        "【新功能】**季度考核表扩成履约年报**。考核问的是「这一季度你对签约居民做了什么」，不止筛查异常回访一件。现在「📊 季度考核表」给出四块：① **筛查异常回访**（分类占比、及时率、留痕完整度，照旧）；② **化验异常解读**（条数、及时率）；③ **各类待办办了多少**（按类别、按谁办的）；④ **长处方随访**（开了 ≥28 天药的人次、已随访 / 还没随访，没随访的点名）。最后还有「**这一季度对每个人都做了什么**」——按人列出做过的事，考核到家时翻到某个人就说得出。导出 Excel 把这四块和按人明细都带上。顺手修了一个真 bug：**「排复评日」里填日期会被当成清空指令**（日期带横杠 2026-11-08，原来的判断拿横杠当「清除」，结果怎么填都排不上）。"
      ]
    },
    {
      "version": "v1.61",
      "date": "2026-10-08",
      "title": "跌倒风险分级 + 化验趋势与复查日 + 自购药合并 + 待办整批指派 + 季度考核表",
      "tags": [
        "新功能",
        "体验优化"
      ],
      "items": [
        "【新功能】**跌倒风险能分级了：问三句，当场出低 / 中 / 高危**。上一版只知道他「吃了利尿剂、八十岁」，不知道他到底摔没摔过。国家卫健委 2026-03 发布的《社区老年人跌倒预防控制技术标准》（2026-09-01 实施）给的流程是先问三句：① **过去一年有没有跌倒过**（1 次 / 2 次及以上或因此住过院）；② **走路稳不稳**；③ **担不担心跌倒**。现在「🩺 老年综合征提醒」里每位点名的人下面就是这三个下拉，**当面问完随手一点，等级立刻出来**（🔴 高危 / 🟠 中危 / 🟢 低危），并写明凭什么这么判（跌倒史、走路不稳、年龄、高危药各几分）和**这一级该做的几件事**——高危给运动锻炼 + 用药管理 + 居家环境三件事并 1 个月复评，中危 3 个月后再问，低危讲两句就够。顶部按等级报人数，导出的 Excel 多「跌倒等级 / 三问 / 该做的」三列。答案与等级只记在本机，不进病历。",
        "【新功能】**化验趋势与下次复查日：肌酐、血钾是往哪走的**。长期吃普利 / 沙坦、利尿剂、止痛药、二甲双胍、他汀、地高辛的人，单看一次的数没意义，**肌酐从 88 涨到 130 这件事才要命**——可报告单进了病历就没人再看第二眼。新增「📈 化验趋势与下次复查日」：① 病历里写的数值**自动抠出来**（认「肌酐 88」这种紧跟的写法，认不出就不猜，可手动补记，同一天以手填的为准）；② 连成「哪天多少 → 哪天多少」的一串，写明**较上次升了 / 降了多少（含百分比）**；③ **按口径推出下次该查的日子**——刚开上或刚加量这类药按 **1–2 周**，稳定了按**一年一次**，过了日子就点名。血钾低于 3.5、高于 5.3，或肌酐比上次涨 30% 以上会点一句，但那是提醒不是结论（参考范围各家医院不同，以报告单为准）。可导出 Excel。",
        "【新功能】**自己买的、上级医院开的药，也能记进用药清单了**。用药重整最难的不是看清本院这张方子，是弄清他手里到底还有哪些药。老年人手里常常同时有社区开的、上级医院开的、自己去药店买的——**重复用药最常出事的就是社区开的撞上药店买的**（医生开方时看不到后者，患者又觉得「那是保健品」从来不提）。现在「🧾 个人用药清单」下面多了「＋ 补上他自己买的 / 上级医院开的」：填个药名、选一下来源（自购 / 上级医院开的 / 来源记不清）点「＋ 加进清单」就并进来了，三个版本的清单都会单独列这一段并写明**不在本院处方里**，导出的 Excel 多一列「来源」。**这些药会一起进「🧪 重复用药初筛」**——院内开氨氯地平、药店买络活喜，现在点得出来。只记在本机，不进病历。",
        "【优化】**今日待办能按类别整批指派了**。上一版只能一个人一个人填「指派给谁」，可现实里一类活儿常常就是一个人干（「今天筛查这批归小李」）。切到「按类别看」后，**每一类上面多了一个「👥 这 N 位整批指派给」**，填一次名字点一下，这一类一次全归他；新增「**按类别导出（带责任人）**」，出的是一类一块、谁负责哪一类、各多少人的清单，交班直接发微信。原来那份按人导出的照旧可用，两种都带「责任人」一列。责任人只记在本机、只留 7 天。",
        "【优化】**回访留痕能分大类了，还能按季度汇总成考核表**。年底考核问的不是「打了几个电话」，是这批异常结果里**解读了几例、调了几例、转了几例、多少例在期限内回访的**。现在点「✅ 已回访」会先问一句结果归哪一类（💬 已解读 / 💊 已调药 / 🏥 已转诊 / 📅 已安排复查 / ➖ 维持原方案，**写序号最快，写汉字也认**），再让您写留痕；新增「📊 季度考核表」——按回访日期归季度，一张表给出**分类占比、及时率（结果日到回访日 ≤14 天）、留痕完整度**，可直接导出 Excel（带每一条的间隔天数与是否及时）。留痕一览里也按分类报数。分类与留痕一样只记在本机，不进病历。顺手修了一个真 bug：**同一成分、一个写通用名一个写商品名（社区开「氨氯地平」+ 药店买「络活喜」）原来认不出是同一种药**，现在两个方向都归一。"
      ]
    },
    {
      "version": "v1.60",
      "date": "2026-10-08",
      "title": "用药清单前后对比 + 回访留痕 + 老年综合征提醒 + 长处方随访绑定 + 待办分派回看",
      "tags": [
        "新功能",
        "体验优化"
      ],
      "items": [
        "【新功能】**用药清单加了「重整对比版」：这次和上次的方子并排摆出来**。上海金山区《社区合理用药管理方案》里「药物重整」的定义，就是**对比患者正在用的药与医嘱的差异**，再决定减、停、换——可真做起来最缺的是「前后各一份」。现在选一位患者切到「重整对比版」，会先讲**这次和上次的差别**（＋新加了什么、－停了什么、✎哪味改了量，改量的把前后写法都列出来），再分别列出上次那份和这次那份。停掉的药会提醒问清「是治好了停的，还是忘了开、还是患者自己停的」。两次一字未动的会点一句「指标一直不达标的话，这张方子就该重新过了」。导出的 Excel 里多一列「与上次相比」，停掉的、改量的单独列在下面。医生 / 药师版、患者 / 家属版照旧。",
        "【新功能】**回访留痕：记下「解读了什么、怎么调的」**。上一轮只解决了「2 周内有没有回访」，可考核问的是「你到底跟他怎么说的、方案改了没有」。现在点「✅ 已回访」会先弹一个框让您写两句（怎么跟他说的、方案动了没有），写完台账里就能看到；**当时没写的点「✍ 补记留痕」后补**（补记不会把原来的回访日期冲掉）；新增「📒 回访留痕」一页，把最近所有留痕按日期倒着列出来，可单独导出 Excel（带回访日 + 留痕内容）。只记在本机，不进病历。",
        "【新功能】**老年综合征提醒：跌倒风险、长期用药该查的肾功能和血钾**。慢病管理盯的是血压血糖达不达标，可老年人真正出事往往不是指标，是**摔一跤**——骨折后卧床，之前十年控的血压血糖全不算数了。新增「🩺 老年综合征提醒」：① **跌倒风险**——吃了安定 / 安眠类、胰岛素、磺脲类（高危药，不看年龄）、**80 岁以上**、或同时踩中两类风险（降压药 + 利尿剂这类）；写明是哪一类药带来的风险、该问什么（摔过没有、夜里起夜几次、站起来发不发黑）；② **该复查的化验**——长期吃普利 / 沙坦、利尿剂、止痛药、二甲双胍、他汀的人，一年没查过**肾功能（肌酐 / eGFR）**或**血钾 / 电解质**的点名（写在病历里才算查过，「建议查」不算）。**只吃一种降压药的不点名**——否则名单里站满整个慢病花名册，等于没名单。今日待办新增「🩺 综合征待留意」一类。",
        "【新功能】**长处方与随访绑定：药拿走了、人没见着，要点名**。福建宁德 2026-07 的口径：签约慢病居民一次开具 **≥28 天**药量时，门诊**必须**进行随访管理。现在开了 ≥28 天药、而台账和档案里都找不到随访记录的人，会在「📦 长处方到期」里标「⚠ 还没随访」，顶部单独报一句人数，行内给「📞 记一次随访」一键留痕（记进履约台账）。同一批人里**断了药的仍排最前**；刚开完药那 7 天不催（这次门诊本就该顺手随访），过了一周还没随访才进今日待办。顺手修了一个真问题：开了三个月药之后回来只量个血压（病历里没再提开药），到期提醒原来会整个消失——现在认「最近一次写了开药天数」的那次就诊。",
        "【优化】**今日待办能分派、能回看了**。一个团队用同一份清单时最常吵的是「这几个人谁打电话」。现在每个人后面多了一个**「指派给…」**输入框，填上就记下来，**导出的 Excel 多一列「责任人」**，直接分头干活；新增「📖 回看前几天谁办了什么」——按天倒着列出最近 7 天办了哪些事、归谁，交接班不用靠嘴说。已办与责任人只记在本机、只留 7 天。另外修了一个真 bug：档案键本身带竖线（姓名|性别|年龄），回看解析时从第一个竖线切会把人认错，导致责任人和类别全对不上——现在从最后一个竖线切。"
      ]
    },
    {
      "version": "v1.59",
      "date": "2026-10-08",
      "title": "异常结果 2 周回访 + 个人用药清单 + 重复用药初筛 + 长处方到期 + 待办已办勾选",
      "tags": [
        "新功能",
        "体验优化"
      ],
      "items": [
        "【新功能】**异常筛查结果 2 周内回访倒计时：查出来没人解读，等于没查**。各地口径写得很清楚（贵州新蒲新区要求异常结果 2 周内回访、济宁 2026 要求体检结果 10 个工作日内反馈、阳性指征跟踪转诊），可现实里最多见的是结果回来往病历里一贴就没了下文。「📥 筛查结果回填」里现在给每一条**结果有问题**挂上 14 天倒计时：写明「距 14 天回访期限还有 N 天」，超了就写「已超 N 天没回访」并顶到列表最上面提醒先打这个电话；回访过了点「✅ 已回访（解读过）」记一笔就不再念，撤销回填时回访记录一起撤。病历里写到「尿微量白蛋白 42mg 偏高」这种结论的也会认（不只看回填台账）。今日待办里新增「🧾 异常结果待回访」一类，排在复查逾期之后、转出未归之前。",
        "【新功能】**个人用药清单：一键生成，可打印给药师 / 患者**。国家卫健委 2026 年要求患者用药建档、连续记录、跨机构可查，可落到患者手里往往只有一句「按时吃药」，老年人手里常同时有社区开的、上级开的、药店买的——谁也说不全他到底在吃什么。新增「🧾 个人用药清单」：选一位患者一键生成**药名、剂量、用法、疗程**，带上**过敏史**（最要紧）、诊断和最近一次测量；分两种版本——**医生 / 药师版**给药师做用药重整（附核对要点：同类开重、还该不该吃、疗程药该不该停、肝肾变了没有），**患者 / 家属版**用大白话写（每天在吃的药 + 四件要注意的事 + 去外院带这张单子），可直接打印交给本人或家属。可复制、可打印存 PDF、可导出 Excel。剂量用法没写进病历的就写「未写」，不替您猜。",
        "【新功能】**重复用药 / 联合不合理初筛（只提示核对）**。卫健委 216 号文要求智能审查警示重复用药、相互作用、禁忌；安庆等地给多重用药的人建专项台账逐个核对。新增「🧪 重复用药初筛」：先把常见商品名归一到通用名（**络活喜 / 亚尼安 / 安内真都是氨氯地平，立普妥 / 阿乐 / 美达信都是阿托伐他汀**——老人常以为「一个早上吃、一个晚上吃」，其实是剂量翻倍），再从最近一次用药里认出三类问题——**同类开重了**（两种他汀、两种磺脲、两种抗生素、同一种药写了两遍等）、**需要留意的联合**（止痛药 + 普利 / 沙坦 / 利尿剂：降压变弱、伤肾；止痛药 + 抗凝或抗血小板：出血叠加；利尿剂 + 地高辛：低钾加重毒性；他汀 + 大环内酯 / 抗真菌：肌病风险；抗凝 + 抗生素：INR 波动）、**吃太久没停的疗程药**（抗生素 >14 天、拉唑类 >8 周、安定安眠类 >4 周、止痛药 >14 天，中间停过会从头算）。**常规联合故意不报**（利尿剂联用、双抗、胰岛素方案、降压药联合都是有意的），**不判禁忌、不替您改方**。可导出给药师一起过。",
        "【新功能】**长处方到期提醒：别让慢病患者断药**。长处方本意是少跑腿，可另一面是没人盯着药还剩几天；各地口径不同（4 周 / 稳定患者最长 12 周），断了药的结果往往很实在。新增「📦 长处方到期」：从病历里认「开药 4 周 / 长处方 12 周 / 带药 1 个月」这类写法（或从用药疗程里取天数），算到期日并倒排——**已经断了的排最前**（写明断了几天），快到期的次之；续方了点「✅ 已续方」重新计时，病历没写天数的可以点「📝 手写记一笔」自己记（会标明是手记的）。**认不出来就不进名单、不猜**。今日待办里「长处方到期」排在该调没调之后、复查逾期之前——断药比晚复查急。",
        "【优化】**今日待办：加了「今天已办」勾选，也能按类别分组**。一张清单用到第二天，最烦的是「昨天那几条谁打完了」。现在每条待办前面都有一个勾：**勾上就记在今天这一格、默认收起来**，顶部会报「今天已办 N 件」；第二天自动是空的一格，不用管。想按类别分给不同的人干，上面切到「按类别看」（一类一堆，好分派）；办错了点「↺ 清空今天已办」恢复完整一页。导出的待办 CSV 也带上「今天已办」一列，交班用。已办只记在本机、只记今天，换设备或清缓存会丢。"
      ]
    },
    {
      "version": "v1.58",
      "date": "2026-10-08",
      "title": "今日待办总清单 + 筛查结果回填 + 筛查项目可配置 + 老年用药评估 + 低值看场合",
      "tags": [
        "新功能",
        "体验优化"
      ],
      "items": [
        "【新功能】**今日待办：把散在十几个面板的事合成一页**。档案这块已经有十几张名单了，可没人每天早上把面板挨个点开一遍。档案面板最上方新增「✅ 今日待办」：把降过头、该调没调、复查逾期、转出未归、筛查待查、漏查指标、用药待评估、档案停更**按人合并**——**一个人只占一条**，几条待办写几行，按轻重排序，每条都带上「下一步该做什么」，点「去办」直接跳到对应面板接着办。可一键复制成能发微信的清单，也可导出 Excel。这一页不新增任何判断，只是把已有名单并到一处。",
        "【新功能】**筛查结果回填：查完记一笔，明年不再提醒**。上一版只解决了「谁该查」，查完之后的三步还断着：结果回不来、回来没人解读、明年照样提醒。新增「📥 筛查结果回填」：查完点「✅ 查完了」记上日期与一句话结果，**一年内不再提醒**（一年后重新进入待查，筛查本就是一年一次）；结果里出现「升高 / 异常 / 阳性 / 出血」这类字会标成**「结果有问题，需要解读」**，并直接给「写随访记录（解读 + 调方案）」和「登记转诊」两个按钮——接住浙江德清 2026 民生实事要求的**筛查 → 反馈 → 解读 → 调药或转诊**闭环。记错了点「撤销」重填。回填只记在本机，不进病历、不上传。",
        "【新功能】**筛查项目可配置：各地口径不一样，勾了才算该查**。年度筛查的清单各地不同（有的还查同型半胱氨酸、颈动脉彩超、下肢血管、神经病变、肾功能）。「🗓 年度并发症筛查」面板里新增勾选区：默认开的是最常见的**眼底、尿微量白蛋白、心电图、足部**四项，其余按本单位口径自己勾；勾了才进入待查，取消就不再提醒。",
        "【新功能】**老年用药评估提醒：半年该复盘一次方子**。江苏通报的教训不是药开错了，是**从来没人重新看过这张方子**（支架术后固守三种降压药，直到确诊低血压、肾功能不全）。新增「💊 老年用药评估提醒」：按**年龄 ≥80 岁**或**用药 ≥5 种**两条线挑人，超过半年没做过用药评估的点名，写明为什么点名、当前用的是哪几种药，并提示重点看三件事——是不是还在吃已经不需要的药、有没有重复作用机制的药、肾功能变了没有。做完点「✅ 记一次用药评估」，半年内不再念。",
        "【优化】**低值预警细化：看场合，也看是不是调药后才掉下来的**。同样是 88/55，清晨刚起床和站起来那一电量到，意思不一样；同样是 3.6，夜里三点发作和餐后散步后测到也不是一回事。「降过头了」这一组现在会写明**这个值是什么场合测的**（清晨 / 夜间睡前 / 餐后 / 空腹 / 体位变化后 / 活动后），没写场合的明说没写、建议问清；并标出**「这次值是上次调药后才掉下来的」**（上次加了什么药、或哪种药加了量），方向更明确。底部按场合分别给了说法：体位性偏低建议卧位立位各量一次，餐后偏低看服药与进餐的时间差。"
      ]
    },
    {
      "version": "v1.57",
      "date": "2026-10-08",
      "title": "共病交叉漏筛 + 数值与用药对不上预警 + 年度并发症筛查 + 档案动态更新",
      "tags": [
        "新功能",
        "体验优化"
      ],
      "items": [
        "【新功能】**共病交叉漏筛：血压、血糖、血脂，查全了没有**。「三高共管」复盘里最扎心的一条不是方案难，是**漏查**——高血压十年的患者，血糖血脂从来没正经评价过；空腹 9.39 已经够糖尿病诊断标准却一直没确诊、没纳管，不是看不出来，是**没人交叉着看**。档案面板里多了「🧩 共病交叉漏筛」：管高血压的，看**血糖、血脂**查过没有；管糖尿病的，看**血压、血脂**查过没有；只报**最近一年没查过**的，查过的不念。写在嘱咐里的（「建议查血脂」）会单独标一句「嘱咐里提过，还没做」——**嘱咐不等于做了**。可一键复制清单发给护士站，也可导出 Excel。",
        "【新功能】**数值与用药对不上：该调没调 / 降过头了**。两头都会出事，两头都藏在「一次只看一个数」的习惯里。① **该调没调**：血压血糖不达标，可最近几次就诊**用药一字未动**（江苏通报过的案例：80 岁支架术后老人固定三种降压药不复诊，最后确诊低血压、肾功能不全）；这里写出连续几次不达标、用药几次没动、当前用的是什么，并可一键登记转诊。② **降过头了**：只盯高不盯低，血压掉到 **90/60 以下**、血糖掉到 **3.9 以下**没人管（87 岁老人固定剂量胰岛素，无症状低血糖致精神异常）；这里带上当前用药提醒往回收，并提示先问头晕乏力、心慌出汗这些症状。**只提示、不给具体处方**——加减药是您的判断。已经降过头的人不会同时出现在「该调没调」里，方向不能指反。",
        "【新功能】**年度并发症筛查提醒：眼底 / 尿微量白蛋白 / 心电图**。慢病管理里最容易被年复一年的「血压多少、血糖多少」挤掉的就是年度筛查，等出了症状再查往往已经晚了。档案面板里多了「🗓 年度并发症筛查」：高血压查**眼底、尿微量白蛋白、心电图**，糖尿病查**眼底、尿微量白蛋白、足部**，一年内没查的点名，从没查过的明说从没查过；今年查全了的人不在名单里。可复制待查清单、可导出 Excel 按人安排。",
        "【新功能】**档案动态更新：谁多久没并入新就诊**。「两张皮」的源头就在这一步——人来看了好几次，档案还停在半年前那一次，于是随访名单、控制率、共病漏筛查的全是旧数，年底对不上账。档案面板里多了「🔄 档案动态更新」：列出档案超过 **90 / 180 / 365 天**（默认 180，可改）没并入新就诊的人，写明最新一次是哪天、距今多少天、档案里已有几次；**患者列表上也会直接挂一个「🕒 N 天没更新」的标记**，不用专门打开面板才看见。可一键列入随访，也可导出名单。判据只是「档案里最新一次就诊距今多久」：人可能在外院看过，也可能真的没来，**先联系确认，别直接当失访报上去**。",
        "【优化】四个新名单共用同一套行结构与按钮样式，并统一口径说明：这一版里**「没查过」就是没查过**（不拿没测的人凑数、不替医生填达标），**「没写医嘱」的人不进用药预警**（没数就不猜），急性上呼吸道感染这类一次性的病不会混进任何慢病名单。所有名单都只在本机计算，不上传任何数据；切点与间隔以本单位考核口径为准。"
      ]
    },
    {
      "version": "v1.56",
      "date": "2026-10-08",
      "title": "慢病控制率一键出 + 转诊闭环 + 履约台账 + 依从性分组 + 患者版宣教",
      "tags": [
        "新功能",
        "体验优化"
      ],
      "items": [
        "【新功能】**慢病控制率一键出（按病种算，对照考核指标）**。考核真正盯的不是「访了几次」，是「控制住了没有」；可控制率散在历次查体化验里，年底只能凭印象报个大概。档案面板里多了「📈 慢病控制率」：按**高血压 / 糖尿病**各算一遍，给出在管多少人、其中最近量过多少、**控制率百分之多少**，并逐位列出是达标还是不达标。口径写死在表上：分母只算**最近一年量过这一项**的人，**没量过的人既不算达标也不算不达标**——宁可空着，也不拿没测的人凑分母；超过一年没量的判为过期，同样不进分母。病种按诊断 / 主诉里的病名认，认不出病名时看他是不是反复在测这一项（反复测通常就是在管）。可导出 Excel，交考核时直接附上。",
        "【新功能】**转诊闭环：转出去的人，回来没有**。双向转诊最真实的毛病是「上转易、下转难」——转诊单开出去了，人就进了黑洞，上级调了什么方案、回没回来接着管，这边一概不知道，考核问起来只能说「转了」。现在：① 在「慢病分层」里点「🏥 转诊」，会先问一句转诊原因（已按他的情况填好，直接回车即可），随即生成一份**转诊要点**——姓名性别年龄、诊断、目前用药、最近血压血糖、转诊原因、本处已随访几次都带上，别让上级医院重问一遍，可复制、可插进草稿；② 记一笔「哪天转出去的」，之后替您盯着：分 🔴 转出未归（超过 30 / 60 / 90 天还没回来，可自选）、🟡 等待回诊、🟢 已回诊三组。回来没回来按**档案里有没有比转出那天更晚的一次就诊**判——回来了照常「存入档案」就自动结案，并写明是哪天回来的。登记只记在本机，可撤销，不改任何病历。",
        "【新功能】**履约台账：每次服务留一笔，季度年度自动数**。考核的另一种问法是「你到底服务了几次」；纸质台账丢档漏档是常态，补台账时只能凭印象写——写多了心虚，写少了吃亏。在「📝 随访记录一键生成」里勾着「记入履约台账」（默认勾着），生成记录时就会顺手留一笔：日期、方式、依从性都在里面。档案面板里多了「📒 履约台账」：按季度、按年度自动数出人次，并按规范常见的**一年至少 4 次面对面随访**算够没够（电话随访不算面对面），差几次直接写出来。可导出 Excel，明细与季度小计都在表上，不含病历正文。",
        "【新功能】**服药依从性单独分组**。全国慢病规范服药比例不到四成：没症状就不吃、指标一好转就停。这批人的血压血糖怎么调都调不好——不是方案不行，是药没吃进去；可「谁没按时吃」只有当面问的时候才知道，问完就忘。档案面板里多了「💊 服药依从性分组」：把您最近一次记录的依从性分成 🔴 没按时吃（先管这批）、🟢 规律服药、⚪ 还没问过三组。**没问过就明说没问过，绝不替您填「规律服药」**。停药也可能是副作用或经济原因，先问清楚为什么，别一上来就劝。",
        "【新功能】**患者版宣教一键生成，能发微信、能打印**。「少吃盐、按时吃药、头晕要来」每次都要讲，讲完患者就忘——手机上没有、纸上也没有。档案面板里多了「📢 患者版宣教一键生成」：选一位患者，自动带出他的诊断、目前用药、最近血压血糖、控制情况与依从性，AI 据此写一份通俗的自我管理要点（这个病是怎么回事、每天要做的几件事、药怎么吃漏了怎么办、什么情况马上就医、什么时候回来复查）。一键**复制发微信**，或**打印**出来让他带走（打印只出宣教那一段，不会把整屏按钮打出去）。⚠️ 内容是 AI 写的，每一句都要您过目，尤其是药名与剂量，一个字都不能错；没选患者就点生成会明说要先选人，不会白扣一次算力。",
        "【优化】控制率与达标的判定一律「只认档案里有的数」：没量过就写没量过，没记药就写未记录，不拿旧数、不拿别人的数、也不替医生凑一个好看的百分比。算不出的指标宁可空着，也不显示 0%。"
      ]
    },
    {
      "version": "v1.55",
      "date": "2026-10-08",
      "title": "慢病分层先打给谁 + 控制不满意自动追访 + 数值雷同与用药核对 + 随访记录一键生成",
      "tags": [
        "新功能",
        "体验优化",
        "缺陷修复"
      ],
      "items": [
        "【新功能】**慢病分层：先打给谁，一眼看得出**。公卫督导点名最多的一条是「血压血糖控制不满意，却没有追加随访」，可「谁控制得不好」散在历次病历的查体与化验里，靠翻是翻不出来的。档案面板里多了「🩺 慢病分层」：把每位慢病 / 长期用药患者最近一次量过的血压、血糖挑出来，分成 🔴 控制不满意（先打给这些）、🟡 很久没测、🟢 控制满意三组，并按这个顺序排。数值从您自己存档的病历里认，认不出就不判，绝不用旧值或别人的值凑数。可导出 Excel 交给公卫科照着打。",
        "【新功能】**控制不满意 → 自动算出「该在哪天之前追访」**，连续两次不满意会直说该转诊。规范写得很硬：控制不满意者应在 2 周内追加随访；连续两次随访都不满意，就不只是「再约一次」，而要转诊上级医院或调整治疗方案。现在判为不满意的那位会写明不达标的是哪一项、该在哪天之前追访；档案里上一次也不达标的，会额外标出「已连续 2 次控制不满意」并建议转诊。判读只用基层常用切点（血压 140/90、空腹血糖 7.0、餐后 10.0、随机 11.1、糖化 7.0），且各按各的尺子——餐后的数不会拿空腹的切点去卡。**只用来排「先打给谁」，不构成诊断**，以本单位口径为准。",
        "【新功能】**数值雷同与用药核对**：督导点名、人眼却看不出的两处，现在机器替您扫。档案面板里多了「🔍 数值雷同与用药核对」：① 同一项数值连续 3 次一字不差（如三次都是 120/80）会被直接当成编造嫌疑，这里会把这位点名、写清连续几次、并带上这几次的日期，可一键去看时间线核对；只有 2 次相同不提（两次相同很常见，别冤枉人）；空腹与餐后不混着比。② 档案里的用药还停在一年前的，会提醒当面问一句现在到底吃什么，并带上当时记的药名，别照着旧记录填表（督导点名的就是这条）。另外，若当前这份草稿里没提到档案里连续两次都在用的药，也会提一句——是停了还是漏写了，请您确认，慢病断药是要紧事。查不出就明说查不出，不凑数。",
        "【新功能】**随访记录一键生成，直接粘进公卫系统**。填表真正烦的不是思考，是把同样的格子再敲一遍。档案面板里多了「📝 随访记录一键生成」：患者从档案里选，姓名与最近一次用药自动带出（点按钮也能补带），随访日期默认今天，血压血糖必须您按本次实测填写——**不给默认值**，因为照抄上次正是被判编造的原因。填完一键生成规范文本：随访日期与方式、血压血糖、目前用药、服药依从性、本次评估（控制满意 / 不满意 / 本次未测）、处置与建议、生活方式指导、下次随访日期。不满意的自动算在 2 周后（并写明连续两次该转诊），满意的按常规三个月，都是具体到哪一天。可复制，也可直接粘进当前草稿。填了离谱的数（如 999/999）当没填处理，不拿它下判断。",
        "【修复】从「疑似失访」或「慢病分层」点了「列入随访」的人，如果病历里其实写了复查交代、只是还没到期，名单里依然不会出现——按钮变成「已在随访名单」，名单里却找不到人，等于白点。这是「列入随访」最容易踩空的一处。现在只要您手动列入过，就算还没到期也会列出来，并标上「👀 已列入随访（提前列出）」，随时可以撤出。",
        "【修复】随访记录与核查面板里的条目，以前用的是另一种排版，按钮位置跟名单里的对不上。已统一成同一种条目样式，「看时间线」「写随访记录」的位置永远在同一个地方。"
      ]
    },
    {
      "version": "v1.54",
      "date": "2026-10-08",
      "title": "疑似失访预警 + 随访完成率考核表 + 一人一档时间线 + 备份直通账号 + AI 改写也给改前改后",
      "tags": [
        "新功能",
        "体验优化",
        "缺陷修复"
      ],
      "items": [
        "【新功能】**疑似失访：慢病 / 长期用药、却很久没再来的人，单独列一区**。待复查名单只认「病历里明写了复查交代」的人，没写交代的人永远沉默——而基层最痛的一条恰恰是「失访无感知」：患者搬家、换号、自己停药，医生这边毫无动静，年底考核点名才发现人已经半年没来。现在档案面板里多了「🕳 疑似失访」：按两条硬标准挑人——① 属于慢病诊断或长期用药；② 超过 90 / 180 / 365 天（可自己选，默认 90）没再来。每位都写明依据（慢病诊断、长期用药、就诊次数），不猜、不下结论。点「📞 已联系上」压 90 天（到期人还没来会重新出现），点「👀 列入随访」把他放进待复查名单（病历里没写交代的按两周估，并在条目里标明是您手动列的，不冒充医生写过的话），还能点「📜 看时间线」回看他就诊经过。可导出 Excel 交给公卫科核实。",
        "【新功能】**随访完成率一键出考核表**。年底要交的是「应随访的人里，访到了多少」。档案面板里多了「📊 随访完成率」：您病历里每写一次复查交代就算一个应随访人次，配它的下一次实际就诊算一个周期——按时来的算已随访，交代到期了人还没来的算到期未访，没到期的不进分母。给出随访完成率与按期随访率两个数字，并逐条列出每位患者的「上次交代 / 应复查日 / 实际复诊日 / 早了或晚了几天」，可导出 Excel。**没写交代的人一律不计入**：宁可少算，也不拿没交代的人凑分母——那等于替自己把完成率算好看，考核时一查一个准。",
        "【新功能】**一人一档时间线：用药变化一眼看全**。慢病随访最费神的是「他上次吃的什么药、这次换没换」，而档案列表只给最近一次，翻旧账要点开一条条看。现在每位患者旁边多了「📜 时间线」：按时间正序铺开历次就诊（日期 / 诊断 / 用药），并把每一次的用药变化直接标出来——＋ 新增、－ 停用、✎ 调整（如「二甲双胍 0.25g 每日三次 → 0.5g 每日两次」），没变的会明说「用药与上一次相同」，不让人猜。过敏史与既往史置顶，可整段复制。",
        "【新功能】「该备份了」那条提醒，现在**直接能加密传到账号**。以前它只给「导出文件」一条路，而换设备时最省事的其实是账号同步（档案在您这台设备上加密后才上传，服务端只有密文）。提醒里多了「☁ 加密传到账号」：已登录且本机记过口令就一键传，没登录或没填口令会把云端面板打开并说清该做什么，不会默默失败。传到账号也算备份过一次，那条「超过 30 天没备份」的提醒从这天重新起算——两条备份路各记各的会互相打架，医生备了一份却还被另一条念着，久了两条提醒都会当噪音关掉。",
        "【新功能】**AI 改写、重新生成、精简去重，也和补写一样摆出改前改后**。上一版只有「AI 补写」给对照，但整篇被替换（重新生成 / 改成患者须知 / 按指令修改 / 一键精简）才是改动最大、最容易看漏的那一类——医生看到的是「AI 又写了一版」，并不知道这一版和上一版差在哪。现在这些动作都会列出改了哪几处、改前改后各是什么、全文多少字变成多少字，并给「↩ 撤回这次……」一键回到改动前。整篇被改写得认不出小节时（比如改成患者须知）会退化成整篇对照，不会显示「没改动」骗人；内容确实一样才说一样。",
        "【修复】随访完成率最初只拿「上一次就诊的交代」去配下一次就诊，等于把当前这一轮应随访的周期整个漏掉了——病人这次看完交代了复查、还没到期，表里什么都不显示，只有等他下次来了才补记。已改为按每一次交代逐个算周期，没到期的不进分母、到期未来的照常计入。",
        "【修复】手动列入随访的人，撤不出来：名单里没有「撤出随访」的口子，列进去就一直占着，久了医生干脆不用这个功能。已补上，管完就能撤。"
      ]
    },
    {
      "version": "v1.53",
      "date": "2026-10-08",
      "title": "随访能约「下次联系时间」+ 30 天没备份会提一句 + AI 补写给改前改后对照 + 复用可整位患者豁免 + 趋势多一维",
      "tags": [
        "新功能",
        "体验优化",
        "缺陷修复"
      ],
      "items": [
        "【新功能】随访联系结果现在能**约一个具体的「下次联系时间」**。上一版只有「已联系待安排」三个字，接手的人不知道今天该不该再打——一条随访记录最有价值的一列恰恰是「下次什么时候联系」。现在点「📞 已联系待安排」「📵 联系不上」会问一句日子（默认一周后再联系 / 三天后再试，直接回车即可，也认 2026-10-15、2026/10/15、10-15 这些写法），到那天之前不再催、到那天自动回到催办名单；想提前就点「现在就联系」。名单上和导出的 CSV 里都写清「下次联系 2026-10-15（还有 5 天）」。认不出来的日子会明说并退回默认，绝不替医生编一个日期。",
        "【新功能】**超过 30 天没备份，会自己提一句**。档案只存在这台机器的浏览器里，清一次缓存、换一台机器就没了，但「记得备份」靠人记是不成的——忙起来谁都想不起来，想起来时机器已经坏了。现在从没备份过、或距上次备份超过 30 天，档案面板里会出现一行提醒，顶部也提一句（档案面板不是每天都点开，只在里面提等于没提），旁边直接给「现在备份」和「今天别再提」两个按钮。两条提醒一次只显示一条，不叠着念。档案是空的不提（没东西可备），刚备份完不提，今天提过就不再提。",
        "【新功能】**AI 补写完会摆出每一节的「改前 → 改后」**。一次补五节，医生看到的是草稿变长了，却不知道 AI 到底往里写了什么——不复看就签字等于把笔交给模型。现在补完会在质控面板上方逐节列出改前改后（原来空着的会写「原来是空的」），可以一键复制，也可以「↩ 撤回这次补写」回到补写前。AI 一节都没改动时会明说「没改动」，并提示要么自己补空骨架、要么下次问诊时把这几项问出来。",
        "【新功能】本人旧病历雷同的点名，多了**「这位患者今天整体豁免」**。慢病复诊一复就是五六节（查体、化验、既往史都同上次的），一节点一次「确实重查了」，点五六次之后医生只会闭着眼连点，那和没有检查一样。现在雷同项在两节以上时给一个整体的口子，点一下折成一行，写清免了什么、什么时候恢复、还能撤销。同样收紧：只当天有效、只这位患者，明天或换个人照旧逐节点名。逐节豁免仍然保留（只认那一句，改了内容就重新出现）。",
        "【新功能】核对趋势多了**「是否带出既往摘要」**这一维。复诊带出既往史是最省时间的一步，但它也有代价：带出来的不是这次问出来的，医生容易「看着都像对的」就一路回车。把这一批的核对率单独拎出来看，才知道该在哪一步使劲。老记录里没有这个字段会直接跳过，不会凑一个「没带出」组造假数据；导出的 CSV 也多一列，老记录留空。",
        "【修复】约好的日子到了，人却回不到催办名单：点「已联系」时除了记日子还会顺手挂起 14 天，两套挂起叠在一起，点「现在就联系」也被那 14 天挡着——点了没反应，是随访里最恼人的体验。已改为约了具体日子就不再叠那 14 天，且点「现在就联系」会一并清掉旧挂起。",
        "【修复】「联系不上」的人被一起挂起了：上一版把联系不上也放进「已约好」那一区，医生就看不见这个人了，而联系不上恰恰是最需要一直盯着、留痕给下一班的那种。现在只有「已联系待安排」才挂起到约好的那天，「联系不上」始终留在催办名单里，只是多了下次联系的日子。",
        "【修复】同一位患者连写两份病历时，只有第一份带出过既往摘要，却三份全被记成「带出过」：带出的标记没有在用掉后清掉。已改为生成草稿即消费掉这个标记，换患者或下一份没再带出就不算。"
      ]
    },
    {
      "version": "v1.52",
      "date": "2026-10-08",
      "title": "随访联系结果分级登记 + 提前量可调 + 备份导出真文件/可从文件恢复 + AI 一次补多节 + 趋势多两维",
      "tags": [
        "新功能",
        "体验优化",
        "缺陷修复"
      ],
      "items": [
        "【新功能】随访联系结果**不再只有一个「已联系」**。2026 年基层公卫督导里反复被挑的毛病就是「随访记录只有『未接通』三个字」——一个结果代码没法指导下一次该干什么。现在每位患者后面有四个按钮：✅ 已来复查、📞 已联系待安排、📵 联系不上、🚫 拒绝随访，后果各不相同：已来复查和拒绝随访 → 结案（不再催，但留档备查，可撤销）；已联系待安排 → 挂起 14 天；联系不上 → 留在名单里留痕并累计次数，连着两次会提示「建议先核对电话号码或请团队复核，别再重复拨打」。",
        "【新功能】导出的随访名单 CSV 多了**「联系结果」一列**，结案的人也一并导出（公卫要的是留痕，不是只留还没联系的）。表里写清谁打过、什么结果、联系不上几次，下一班不用重打一遍。",
        "【新功能】随访**提前量可以自己定**：默认只列已经过了复查日子的，也可选到期前 3 / 7 / 14 天就列出来——想提前打电话安排的人不用等到过期才看见。选择存在本机，改了立刻按新口径重算。",
        "【新功能】「导出备份」改成**真的下载一个文件**。上一版这里只是复制到剪贴板，界面上却写着「存一份文件到本机或U盘」——那是句空话，剪贴板一刷新就没了，医生会以为自己备份过。现在点它下载一个带日期与患者数的 .json 文件（里面标了格式与导出时间），可以复制到U盘、网盘或发邮件。",
        "【新功能】新增**「从备份文件恢复」**：选一个备份文件即可把里面的患者补回本机。只补本机没有的（差集），本机已有的记录一个字都不动——恢复做成覆盖是危险的，手滑选错文件，正在用的档案就没了。口令忘了、机器坏了，靠这个文件就能找回来；很早以前手工复制出去的裸档案（没有格式头）也认得出来。",
        "【新功能】质控缺多节时可以**「✨ AI 按原文一次补齐这 N 节」**：缺 5 节点 5 次不叫一键。仍然只准用本次对话原文、原文没提的一律写「对话未提及，请补充」，补完自动重查；诊断、处理意见、随访建议、医师签名这四节**连按钮都不给**（临床判断与签名不代笔，这条红线没因为批量而放松）。",
        "【新功能】本人旧病历雷同的点名，多了一个**「✅ 本次确实重查了」**：复诊时查体确实可能和上次一模一样，每次都点名，医生三次之后就学会无视，真照搬的也跟着溜过去。点一下即豁免，但收紧两条——只在当天有效（明天再看同一句仍会点名），且只认这一份内容（改了体征就重新出现）。既不是永久关闭一项检查，也不让医生天天挨冤枉。",
        "【新功能】核对趋势多了**「初诊/复诊」和「病历篇幅」**两维。原本计划做「按诊室/挂号来源」，做之前先问了一句：那两样得每次看病前多填一格，而一个让医生多打字的功能最后一定是空着的，空着的维度等于没有。所以换成两维本机本来就有、不用填的数据：初诊/复诊（复诊能带出既往、写得快，容易「看一眼就过」）、病历篇幅（简/中/详，写得越长越容易不复看）。这两个维度老数据里没有对应字段，会直接跳过，不会凑一个「未知」组造假数据。",
        "【修复】提前量的默认值没生效：`Number(null)` 是 0，被当成合法的「只列已经过期的」，新用户默认看不到「快到期」的人。已改为「没存过就走默认 3 天」。",
        "【修复】病历篇幅分档对非数字输入会判成「详」：`NaN <= 0` 是 false，本该当「没有数据」跳过。已改为只对有效数字分档。"
      ]
    },
    {
      "version": "v1.51",
      "date": "2026-10-08",
      "title": "待复查提醒（一天一次·可关）+ 随访名单导出 Excel + AI 按对话原文补 + 本人旧病历改日期复用 + 趋势维度可勾选",
      "tags": [
        "新功能",
        "体验优化",
        "缺陷修复"
      ],
      "items": [
        "【新功能】待复查名单会**轻轻提一句**了：上一版名单做得再好，也得医生记得点开才算数；而基层最真实的场景是「随访该做了没人提醒，患者不主动来，医生也顾不上逐个通知，随访就拖成了想起来才做」（2026 年基层慢病管理调研的原话）。现在打开页面时，如果档案里有 3 位以上患者已经过了您自己交代的复查日子，病历框下方会出现一条横条，写清有几位、拖得最久的是谁、超了多少天，点「看名单」直接展开并滚到名单前。",
        "【新功能】提醒做得克制，是因为**做成骚扰就等于没做**：一天最多出现一次（换一天才会再提醒一次）；逾期不到 3 位不出现（一两位您自己记得住）；「今天别再提醒」和「以后都别提醒」两个按钮都能关，关了就真不再出现。名单依据的仍是您自己写在病历里的交代，患者是否真的需要来，仍由您判断。",
        "【新功能】随访名单能**导出成 Excel（CSV）**给护士站或公卫科：护士站打电话要的是一张表，不是一段复制文本。点「导出名单（Excel）」下载一份 CSV，七列——姓名、上次就诊日期、距今多少天、上次交代、应复查日、状态（已超期/即将到期）、超了几天，带 BOM 用 Excel/WPS 直接打开不乱码。里面只有这几列，没有其他病历内容。",
        "【新功能】质控缺项除了「＋ 补上这一节」（插空骨架），多了一个「✨ 让 AI 按对话原文补」：不想自己打字时，让 AI 只照着**本次对话原文**补这一节——原文里没提的一律写「对话未提及，请补充」，指令里明令禁止用常识或常见写法自行补写症状、体征、数值、检查结果或诊断，也不许改动其他小节。补完自动重新核查一遍。消耗 1 点算力，且补完必须逐字核对（确认框里就写明了）。",
        "【新功能】AI 补写有一条硬的：**没有对话原文就干脆不让点**。让 AI 凭「这类病历通常怎么写」去补一节，那是在替医生编内容——空着是「没写」，编上去是「写了假的」。没有录音或粘贴的对话时，点了会直接说明原因，并建议您改用空骨架自己填。",
        "【新功能】新增**本人旧病历「改日期复用」检测**：复诊时最省事的做法是复制上次病历改个日期，于是查体结果、化验数值其实是上一次的。这类记录在国外叫 chart cloning，医保与质控都当红旗——等于在病历里写了本次没做过的检查。现在跨次比对会逐节比对本次草稿与本人上次就诊：体格检查/辅助检查一字不差 → 高危点名（提醒确认本次是否真的重新查过）；现病史/主诉只改了数字（「3 天」→「5 天」）→ 点名提醒按本次实际改。既往史/过敏史本来就该长期一致，不拿来报，避免草木皆兵。",
        "【新功能】核对趋势的**维度可以自己勾选**：病历类型、科室、自定义模板、星期几、就诊时段五个维度默认都开，但多数人只看得过来一两个。现在面板上有五个小胶囊，取消哪个面板立刻少哪一组，导出的 CSV 也只写勾选的维度，选择存在本机、下次打开还是原来那几个；一个都不勾也不会变空白（自动保住「病历类型」）。",
        "【修复】章节提取会把每一节的正文都收进来（本轮实测出的静默失效）：取某一节正文时，标题行后面带的文字没有判断是不是目标那一节，导致取「体格检查」时把主诉、现病史、诊断等所有节的正文全收了进来，复用比对因此永远对不上、一条都报不出来。已改为只收目标节的正文。",
        "【修复】查体与化验的复用判定改严了：这两节带数值，「WBC 6.2」改成「11.4」说明医生确实重查并重记了，此时再说「你照抄上次」是冤枉人（实测会把新写的病历误报成照抄）。现在体格检查/辅助检查只在**一字不差**时才报；现病史/主诉仍然连「只改了数字」一起认，因为那正是改日期复用最典型的特征。",
        "【优化】各维度趋势的标题统一成「按X的趋势」，与可勾选的维度名一一对应；目前只显示部分维度时，面板底部会说明当前显示的是哪几个、想看更多在上面勾选即可，避免「面板变短了是不是坏了」的误会。"
      ]
    },
    {
      "version": "v1.50",
      "date": "2026-10-08",
      "title": "待复查名单替您记着谁该来了 + 质控一键补齐与定位 + 照抄比最近 3 次 + 趋势看星期几/时段 + 档案逐次勾选合并",
      "tags": [
        "新功能",
        "体验优化",
        "缺陷修复"
      ],
      "items": [
        "【新功能】档案里新增「📅 待复查名单（谁该来了）」：慢病随访最磨人的不是打电话，是「谁该复查了」要靠脑子记、靠台账本翻——一个家庭医生团队签着几千号居民，谁三个月没回来根本记不住。现在点开档案里这一栏，系统会把每位患者最近一次的处理意见过一遍，认出「2 周后复查血常规」这类**您自己明写**的约定，拿今天的日期一比，逾期了的按拖了多久排在最前；快到期的（3 天内）单独一档，方便提前打电话。点「已联系」就把这位挂起 14 天，不会天天弹同一批人；名单能一键复制发给护士站。三条底线：只认病历里明写的约定，绝不替您猜「这个病该三个月查一次」；没写具体日子的按门诊常见的两周算，并在条目里写明是估的；全部纯本机计算，不上传任何数据。",
        "【新功能】质控报告能「一键修」了：以前质控只会说「您漏了」，找和补还得自己动手——那是把活儿描述了一遍，不是替您干活。现在凡是**位置确定、内容无争议**的机械动作都做成一键：缺某一节，点「＋ 补上这一节」就把这一节的骨架插到它该在的位置（【既往史】会插到【过敏史】前面，不会插到病历最末尾）；缺好几节时上面还有「🧰 一键补齐这 N 节」，不用点 N 次；逻辑矛盾和待补充标记给「📍 定位到草稿」，点一下就跳过去并把那句话涂成底色；随访缺口给「📋 复制这句」。补完会自动再核查一遍（核查不消耗算力），那条自己就从列表里消失了。",
        "【新功能】质控一键修有一条明确的红线：**涉及临床判断的一律不代改**。补进去的是空骨架（写着「对话未提及，请补充」），AI 不知道该填什么，填什么必须由您本人决定；「性别与记载冲突」到底该改性别还是改那句，只给定位不给代改——猜错了就是事故。宁可多一步点击，也不替医生下结论。",
        "【新功能】跨患者照抄现在比**最近 3 次**而不是只比一次：上一版只拿另一位患者的一次记录去比，而复制粘贴残留可能来自上上次或上上上次那位。现在这位患者最近 3 次就诊都会逐次比对，点名时会写明那句话出自哪一天的就诊。",
        "【新功能】核对趋势新增「按星期几」与「按就诊时段」两个维度：调研里最常说漏的规律是「周五下午、周一上午的病历核对率明显更低」——周五赶着下班、周一堆着周末积压的患者，都是人最疲惫、最容易生成完直接存的时候。总趋势看不出来（被平均掉了），按星期几/时段摊开就一目了然。星期几按周一到周日自然排序（不是按份数乱排），时段分上午/下午/晚间/凌晨；两个维度也都进了 CSV 导出，交材料时可以直接用。",
        "【新功能】档案对比支持**逐次勾选合并**：上一版「只补这一位」是按人整批补，而账号里多出的几次里可能只有一次是想要的（另几次也许是另一台机器上写错的）。现在每次就诊前面都有勾选框（默认全勾），按钮上会写明「把勾选的 N 次补进本机」「把勾选的 N 次合并到账号」，取消哪次就不动哪次。原来「用本机这份覆盖账号里的这位」仍然保留，两者是互补关系：只想补几次用勾选，确定以本机为准就整位覆盖。",
        "【修复】待复查名单不会把「不适随诊」这种套话当成约了复查：每份病历结尾都有这类话，算进去的话全档案的人都会出现在名单上，医生点开两次就再也不看了。同时「半年后复查胃镜」这类长间隔会正确按 180 天算，不会在第 60 天就被当成逾期。",
        "【修复】跨患者照抄拿错了就诊记录（静默失效，本轮实测出来）：档案是「最新一次排在最前」存的，而比对时取的是数组最后一条，也就是**最旧**那次——三年前的旧病历当然跟本次草稿对不上，于是这条检查几乎从不响。而复制粘贴残留恰恰来自最近这几位。已改为按最近 3 次逐次比对。",
        "【修复】分两句写的过敏史自相矛盾查不出来（静默失效）：「否认药物过敏史。对头孢类药物过敏。」这种真实存在的自相矛盾，判定否定范围时跨过了句子分隔符，被当成「头孢也在否认范围内」，结果永远不报。现在跨句不再算作同一句否定范围；同句并列的「否认青霉素、头孢类药物过敏」照旧判定为已否定，不会变成误报。",
        "【修复】质控里的「删掉多余那处」按钮被新按钮抢了位置：新增的「补一节 / 定位」按钮原先复用了「删重复」的样式类名，按类名找按钮的地方会点到别的动作上。已把通用动作按钮拆成独立的类名，两类按钮各归各。"
      ]
    },
    {
      "version": "v1.49",
      "date": "2026-10-08",
      "title": "整篇说明书一次粘 + 重复句一键删 + 待办合成一张清单 + 趋势按模板 + 档案对比按人展开 + 跨患者照抄拦截",
      "tags": [
        "新功能",
        "体验优化",
        "缺陷修复"
      ],
      "items": [
        "【新功能】儿童剂量表「整篇说明书直接粘」：上一版要求先把「用法用量」那段挑出来再粘，等于把活儿又推回给医生、还容易漏。现在连「适应症」「禁忌」「不良反应」「药理毒理」一起粘进来也没关系，系统会自动按章节切开、只留用法用量相关段落，并**在预览里告诉您跳过了哪几个章节**（不会闷声丢东西）。药名也从说明书标题或【药品名称】里认——用法用量段常常只写「口服。小儿每日 20～40 mg/kg，分 3 次服用」，压根不重复药名，没有标题兜底就整篇白粘。成人用法会自动忽略并单独记一笔（「已忽略 N 行成人用法」），不再混进「没认出来」里把真正要改的行顶下去。同一味药认出多行（小儿一段、新生儿一段）时会合并成一行（取适用范围最广的那行），不会互相覆盖导致「改了没生效」。",
        "【新功能】重复表述可以「一键删掉多余那处」：上一版只告诉您哪句话写了两遍，找和删还得自己动手——那是把活儿描述了一遍，不是替您干活。现在质控报告里那条重复下面直接给一个「🧹 删掉多余那处」按钮：点一下就把后面几处删掉、保留第一处，顺手带走多余的逗号，不会留下「，」开头的残句或整行空壳；删完还会自动重新核查一遍（核查不消耗算力），那条自己就从列表里消失了。措辞略有出入（一句被更长的句子包住）时，删的是较短的那处——较长那句已经把这件事说全了。",
        "【新功能】跨次比对先给一张「待办清单」：复查项目、疗程去向、用药疗效、待查结果这四类原来跟矛盾、过敏混在一张长列表里，医生要逐张卡片读完才知道今天该补哪几句话。现在结果最上方合成一张清单，按「🔬 待查结果 / 💊 用药疗效 / ⏳ 疗程去向 / 📅 复查安排 / 📋 照抄确认」分类列出来，高危的排前面，还能一键复制（交班、自查、给科里看都方便）。下面再逐项展开看依据，不用在长列表里翻。",
        "【新功能】核对趋势能按自定义模板看：很多医生天天用的不是内置病历类型，而是自己改过的那套模板（本科室结构 + 自己加的条目）。现在统计面板会再画一组按自定义模板的趋势，并在份数够、差距明显时直接给结论（如「整体核对率 62%，其中『我的儿科模板』只有 17%」）；CSV 导出里也加了按模板的小计与趋势。加上原有的病历类型、科室，一共三个维度，交叉看就能定位「到底是哪一类写法最容易漏项」。",
        "【新功能】档案对比能按人展开、只挑那一位动手：上一版只报「张三：本机 3 次 / 账号 2 次」，看不出差的是哪一次，要处理就得整份覆盖——为了一次就诊把全部档案盖过去，风险远大于收益。现在点开这位患者会列出「只在本机：2026-10-08　复诊」「只在账号：…」，并给两个只针对这一位的按钮：把账号多的那几次补进本机（只补不删）、或用本机这份覆盖账号里的这位（其他患者不动）。",
        "【新功能】跨患者照抄拦截（调研驱动）：2026 年已有多家医院通报过同一类事故——医生复制粘贴时把上一位患者的信息带进了这一位的病历（男性患者病历里出现「月经量」）。这类错读起来完全通顺，人眼扫不出来，但一旦发生就是通报、扣绩效甚至纠纷。现在系统会把本次草稿跟**别的患者**的档案逐句比对（全部在本机完成，别的患者的数据一个字都不出本机），一字不差的长句会当高危点出来并写明是哪位患者；「多饮水、注意休息」这类套话不算，同名不同归档键（上次写成「6」这次写成「6岁」）也不会误报。恰恰是患者第一次来（没有既往记录）时最容易发生，所以这条不依赖他自己的既往记录。",
        "【修复】「删掉多余那处」在章节标题后的那句上不生效（静默失效，实测出来）：判定「独立成句」时左边界只认了左半边括号，「【既往史】否认高血压、糖尿病病史」这句前面顶的是「】」，于是那一处根本找不到、点了没反应。已补上右半边括号。",
        "【修复】跨患者检查把句子切得太碎、导致最该拦的全漏报：原先连逗号一起切，「既往有高热惊厥史，青霉素过敏」被切成两个不足 10 字的碎片，长度不够门槛就整个放过；同时「既往」被当成格式词开头而跳过，而「既往有高热惊厥史」恰恰是最该拦的那种——临床上是具体内容、读起来又完全通顺，串到别人身上没人看得出来。现在只在句号/换行处切分，并且只挡「既往体健」这类真正的套话。",
        "【修复】按周给药的药物被当成每日三次（静默的 20 倍误差）：说明书里「甲氨蝶呤 10～15 mg/m²/日，每周一次」这类按周给药的写法，次数表认不出来时会落到默认的 3 次/日，把周剂量当成一天吃三次。现在会认出「每周 / 每周一次 / qw」并按 1 次/日记录，同时在预览里写明「说明书写的是按周给药，若那个数本就是周剂量请把区间手动除以 7」——折不准就不装作算好了。"
      ]
    },
    {
      "version": "v1.48",
      "date": "2026-10-08",
      "title": "说明书整段粘贴自动建儿童剂量表 + 边改边看高亮跟着走 + 复查到点才提醒 + 核对趋势按科室 + 档案一键对比差异 + 质控挑重复句",
      "tags": [
        "新功能",
        "体验优化",
        "缺陷修复"
      ],
      "items": [
        "【新功能】儿童剂量表可以「整段粘贴说明书自动生成」了：以前要一格一格对着说明书抄（药名、上下限、次数、疗程、单次封顶），抄一遍十几分钟、抄错一格就全错，所以实际上很少有人真的去维护——表里没有的药，剂量写错了系统也一声不吭。现在把说明书的「用法用量」整段复制进来、一行一种药，点「识别」即可：「阿莫西林：20～40 mg/kg/日，分 3 次」「布洛芬：5～10 mg/kg·次，每 6 小时一次，每日总量不超过 40 mg/kg」「阿奇霉素：10 mg/kg/日，顿服，连服 3 日」都能认出来，还会自动做三件事：按「每 6 小时一次」折算成 4 次/日、把每次用量乘次数折成日剂量、用说明书写的「每日总量不超过 xx」压住折算出来的上限。认出来的会先列成预览请医生核对数字和单位（mg/kg 还是 mg/m²），**认不出来的行会原样列出来并说明为什么没认**——最糟的不是少认几行，而是自作主张认错一个数字却不说。说明书只给单个值（如「8 mg/kg/日」）时会按 ±25% 展开成区间并在预览里写明，不认可可以自己改。",
        "【新功能】「跳到草稿」的涂色会跟着您的修改走，改字不再消失：上一版一敲键盘高亮就被清掉，等于逼医生「先记住是哪一句、再去找」，那是倒退。现在记住的是**标的那句话**而不是第几个字——在前面插一段、把这句话改掉一两个字，底色都仍然标在它现在的位置上；只有那句话被整个删掉时高亮才会自己消失。一边看着标出来的句子一边改，才是最常用的姿势。",
        "【新功能】核对习惯可以按科室各看一条趋势，并直接说出「哪一类最该先管」：同一个人在儿科和全科的核对习惯可能差很多，只看总数的话儿科一直没核对会被全科的高核对率盖住，而漏项恰恰出在儿科。现在统计面板会多画一组按科室的趋势，并在份数够、差距明显时直接给一句结论（如「最近整体核对率 62%，其中『儿科』只有 17%（12 份里核对了 2 份）」）。导出的 CSV 里也加了按科室的小计和趋势，科室质控交材料时能直接用。",
        "【新功能】档案可以一键对比「本机 vs 账号」差在哪：以前只有「一键备份」和「取回」两个按钮，换设备时医生最怕两件事——取回之后本机原来的档案被覆盖没了，或者账号里那份其实是几个月前的旧版、一取回反而把新的盖掉。现在点「对比本机与账号」会先列出：两边完全一致几位、只在本机（备份后会补进账号）几位、只在账号（取回后会补进本机）几位、两边都有但就诊记录不一样的几位（点名到人），然后才给出两个动作按钮，并写明「合并进本机只补不删 / 备份到账号会整体覆盖账号里那份」。备份提醒条里也补上了上次备份的具体日期。",
        "【新功能】病历质控会挑出「重复表述」（调研里医生对 AI 病历最集中的抱怨是又长又重复、还得逐句核对）：AI 常把同一句话分别写进两个章节——「否认高血压、糖尿病病史」同时出现在现病史和既往史，各看各的都通顺，只有通读全篇才会发现，而通读恰恰是医生最没空做的事。现在会在质控报告里单列一组「🔁 重复表述」点名是哪一句、出现了几次，措辞略有出入（一句被更长的句子包住）也认得出。这一项只轻扣 2 分、最多 6 分——它拖慢的是阅读，不改也不会出医疗差错，不该跟缺项同权重。",
        "【修复】「半年后复查胃镜」被当成「没写结果」反复误报（重要）：原先只要过了 2 天、本次没出现检查项名字就报「上次开了 XX，本次没写结果」。于是患者第 5 天因为感冒来复诊，也会被报「胃镜没写结果」——那不是漏项，是骚扰，看两次就会把这类提示整体忽略掉。现在会认出上次医嘱里写的约定时间（1 周后 / 3 天后 / 半年后），**只有真过了约好的日子才报**，文案也会写成「上次约了『1周后复查血常规』，本次既没结果也没写为何没做」。",
        "【修复】医生写了「患者未复查 / 拒绝复查 / 结果未回」仍被报断头账：质控要的是「有交代」，不是「必须做了」。现在本次点名交代了这项为什么没做，就算闭环不再报。判据必须**点名到具体检查项**——只写「【辅助检查】未做」说的是本次没开检查，跟上次交代的那项查没查毫无关系，把它当解释等于替医生编了个理由。"
      ]
    },
    {
      "version": "v1.47",
      "date": "2026-10-08",
      "title": "儿童剂量会查疗程与单次封顶 + 依据句直接涂成底色 + 疗程没交代去向会提醒 + 核对趋势按病历类型 + 档案自动提醒备份",
      "tags": [
        "新功能",
        "体验优化",
        "缺陷修复"
      ],
      "items": [
        "【新功能】儿童剂量不只查日总量，还会查「疗程天数」和「单次封顶」：日剂量对，不代表能一直吃，也不代表一次给这么多是安全的。阿奇霉素是 3～5 日疗法、布洛芬与对乙酰氨基酚用于解热按说明书不超过 3 天、布洛芬单次有 10 mg/kg 的上限——现在这类「写长了」「一次给猛了」都会提醒。剂量表里多了「疗程上限(天)」和「单次上限」两格，**留空就是不查**（拿不准的药宁可不报，也不给一个说不清来路的数字）。单次与日总量同时超标时只报一条，不刷屏；疗程超过常规 2 倍才算高危，超一点点只是提示。",
        "【新功能】点「↗ 跳到草稿」不再只是选中：现在会**把那句话涂成底色留在那儿**（像荧光笔划过，字仍然看得清）。上一版跳过去选区一闪就没了，医生低头改两下还得再找一遍。涂色会保留约 10 秒；一改字就自动清掉（位置会错位，留着反而误导），换下一份病历时也会清掉。「定位下一处」按钮现在同样会涂色，一次只亮一处，不会分不清点到哪儿了。",
        "【新功能】上次写了疗程、这次还在开同一个药却没交代去向 → 提醒补一句：疗程是有终点的医嘱。上次写「阿奇霉素 连服 3 日」，本次草稿里又出现阿奇霉素，却不写「已按疗程服完 / 续用 N 天 / 症状未缓解改用…」，读病历的人（包括下次接诊的大夫）根本不知道这药吃完了没有。现在会提示「上次开的『阿奇霉素』写了 3 天疗程，本次还在开，没写是吃完停了还是继续用」，并按就诊日期算一句「按日期算那 3 天疗程早该吃完了 / 还没走完就复诊了」。写了「停药/续用/满疗程/服完」等表述就不报；本次没开这个药（等于已停）也不报。",
        "【新功能】核对习惯可以按病历类型各看一条趋势：只有一个总趋势会被结构骗到——门诊病历每周 20 份且全核对，入院记录一直 0/3，总核对率照样好看，真正拖后腿的那一类被平均掉了。现在统计面板会按类型多画几条（■ 已核对 / · 未核对），核对率低的那一类单独标出来。门槛是「该类型至少 4 份、至少跨 3 个自然周」，份数不够不画（3 份 2 周画出来的趋势只是噪声）。导出的 CSV 末尾也附了这张分类型趋势表。",
        "【新功能】档案久未备份时会自动提一句：档案只存本机，清缓存、换电脑、系统更新就可能全没了，而备份这事的失败模式从来不是功能坏了，是没人想得起来点。现在攒了档案又久未备份（从没备份过 / 改动超过 3 天 / 超过 30 天没备份）时，生成病历后会在草稿下方轻轻出现一条横条（**不是弹窗、不打断写病历**），点「立即备份」一次搞定。三条硬约束：一天最多提一次；点「7 天内不提醒」就真的 7 天不提；备份完横条自己消失。没登录或没记住口令时会打开档案面板并说明该填什么，不会静默失败。",
        "【新功能】整句照抄上次病历会提醒（防错误纵向传播）：AI 草稿看着专业、读起来通顺，于是错误被一次次复诊原样带下去——最典型的载体就是把上次的处理意见整句照搬。现在会提示「这一句和上次病历一字不差：『阿莫西林胶囊 0.25g 每日三次，连服 7 天』」，请确认它这次仍成立。判据收得很紧：只有含药名或剂量的用药句才算，「多饮水」「注意休息」这类套话不算，改过一个字（说明医生确实看过了）也不算。可以用「依据」后面的按钮直接跳到草稿里那一句。",
        "【新功能】患者信息里可以填体重和身高了（选填）：儿童按体重折算剂量、抗肿瘤药按体表面积折算剂量都要用到这两个数。以前只能从病历原文里抠——病历没写就无从折算，按体表面积那一项还会退化成「按体重估算」，而医生想补也**没有地方补**：功能做了却没入口。现在填一次即可，复核依据里会写明「体重/身高来自您在患者信息里填的」，和从病历里抠出来的区分开。",
        "【修复】儿童药只写药名时查不到（静默失效）：系统原来靠「药名 + 剂型」识别用药，而医生写儿科处方常只写「阿莫西林 0.25g 每日三次」——少了剂型整行抓不到，剂量写错也一声不吭。现在儿童剂量复核会再拿剂量表里的药名去病历里找一遍，找到就取其后的剂量（只查表里这几十个药，不会把「体重 15kg」这类数字当成药）。",
        "【修复】儿科最常用的「干混悬剂」剂型识别不了：阿奇霉素、头孢克肟、阿莫西林在儿科几乎都开成干混悬剂，剂型词表里少了这一个词，整行药就抓不出来。现已补上（同时补了混悬剂、滴剂、溶液、凝胶）。",
        "【优化】剂量表的「已改」标记现在也认得出只改了疗程上限或单次上限的情况（以前只比对数值、次数、口径、年龄段）。"
      ]
    },
    {
      "version": "v1.46",
      "date": "2026-10-08",
      "title": "儿童剂量可按体表面积/分年龄段 + 依据一键跳到草稿 + 改量未写理由会提醒 + 核对趋势 + 档案一键备份取回",
      "tags": [
        "新功能",
        "体验优化"
      ],
      "items": [
        "【新功能】儿童剂量表支持「按体重」与「按体表面积」两种口径：绝大多数儿科药按体重（mg/kg/日），但抗肿瘤药、部分免疫抑制剂的说明书本就按体表面积写（mg/m²/日）——上一版只有一种口径，给这类药写的剂量要么查不出来、要么套错单位。现在每一行都能单独选口径（选项里直接写明单位，避免填完数才发现单位不对）。选按体表面积时，病历里有身高就按 Mosteller 公式算（依据行会写明身高取自哪句话），没有身高就按体重估算，并且**明确写明是估算**，不会让您拿着估算值去对说明书。",
        "【新功能】儿童剂量可按年龄段分档：同一个药在新生儿、婴幼儿、学龄儿的常规剂量可以差一倍，套同一个区间必然有一边是误报。现在每一行都能选适用年龄段（全年龄 / 新生儿 0～1月 / 婴幼儿 1月～3岁 / 学龄前 3～6岁 / 学龄 6～14岁），同一个药可以按年龄段加多行，复核时按患者年龄自动挑最贴切的那行；年龄不明或没匹配到分档行时退回「全年龄」行，绝不会因为分了档就查不到药。提示末尾会写明「本次比对用的是内置/您自己维护的区间，适用哪个年龄段」。",
        "【新功能】依据可以点：上一版把「依据：对话原文… ↔ 病历草稿…」写出来了，但十几秒生成的病历动辄几十行，知道有这回事还得自己往下翻找那句话——「查得出却找不到在哪」比「压根没查出来」更让人烦。现在每条提示的依据后面多了一个「↗ 跳到草稿」小按钮，点一下直接滚动到草稿里那句话并选中（跳过去后草稿框会闪一下，不看一眼根本不知道已经定位成功）。找不到时会明说「草稿里已找不到」，不会点了没反应。",
        "【新功能】上次开的药这次改了量却没写原因 → 提醒补一句：剂量调整是复诊最常见的动作，而「为什么调」恰恰是最容易漏的一句；漏了它，下次接诊的大夫（以及需要说明时的第三方）只看到数字变了、看不到依据。现在会提示「『氨氯地平片』这次的用量和上次不一样（剂量 5mg → 10mg），没写调整理由」。防误报做在前面：0.5g 与 500mg 是一回事、tid 与「每日三次」是一回事，都不算改量；外用药（软膏/雾化/生理盐水）不报；写了「加量/减量/疗效不佳/不耐受/控制不佳」等说明就不报；距上次超过 90 天不报；一次最多点名 2 种药。差 4 倍以上的变化（多半是小数点写错）升级为高危项，其余只是提示——提醒太多等于没有提醒。",
        "【新功能】核对记录按周看趋势：一个「本月核对率 62%」看不出自己是在变好还是变差。统计面板现在多一段按周的趋势图（■ 已核对 / · 未核对，每周一行，最多 8 周），并在末尾给一句结论（「在变好：前半段 40%，最近升到 75%」「在下滑：前半段 80%，最近降到 55%」「基本稳定」）。差 15 个百分点以上才下结论——差 3%、5% 就跳出一句「您在下滑」，那是拿噪声当结论。导出的 CSV 末尾也附了这张按周趋势表，交材料时直接用。",
        "【新功能】患者档案一键备份到账号 / 换设备一键取回：档案默认只存本机，清缓存、换电脑就没了，而备份这事的失败模式从来不是功能坏了，是每次都要先翻两层面板、再输两遍口令，于是拖着不备份。现在档案面板里直接多了一个「☁ 备份到账号 / 换设备取回」：填一次口令点一下就好；可以勾选「在这台设备上记住口令」（默认不勾，且会写明共用电脑别勾、取消勾选会立刻清掉已存的口令）。换设备后打开这个面板会主动提示「账号里存着一份加密档案（多大、哪天存的），填上口令点取回就能拿回来」。档案始终是**在您这台设备上加密后再传出**的，服务端只保管密文；也请务必同时用「导出备份」存一份文件——口令一旦忘记无法找回，两条路都走才稳妥。",
        "【修复】药名带剂型时匹配不上：医生照着处方填「甲氨蝶呤片」「布洛芬混悬液」，而系统从病历里提取出来的药名是不带剂型的（「甲氨蝶呤」），单向包含匹配会落空——明明填了这个药却一声不吭，这是最坏的一种静默失效。现在两边都去掉剂型后缀再互相比对，填全名或填简名都能对上。",
        "【优化】剂量表的「已改 / 自建」标记现在也认得出只改了口径或年龄段的情况（以前只比对数值与次数，只改口径的行会显示成没动过）。",
        "【优化】「加一种药」时的提示改为同时说明两种口径与单位，不再只提 mg/kg/日。"
      ]
    },
    {
      "version": "v1.45",
      "date": "2026-10-08",
      "title": "儿童剂量表可自己改 + 每条提示写明依据出处 + 用药后效果闭环 + 核对记录跨设备：把「只给结论不给依据」这个最招人烦的地方改掉",
      "tags": [
        "新功能",
        "体验优化",
        "缺陷修复"
      ],
      "items": [
        "【新功能】儿童剂量参考表可以由您自己维护：上一版把常用药的常规日剂量区间写死在系统里，但不同厂家规格、不同感染部位的用法区间本来就不一样——写死的表里只要有一条和您手上的说明书对不上，您对整张表的信任就塌了，之后每次看到儿童剂量提示都会直接忽略，等于这个功能白做。现在新增「⚖️ 儿童剂量参考表」面板：内置 9 种常用药照常给（不填也能用），但任意一个区间都能改，也能加自己常用的药、删掉用不上的。改哪条只影响哪条，改完立刻生效（含生成后自动复核）。填错会挡住：下限必须小于上限（写反了会把正常量全报成超量）、数值离谱会被拒。改过之后提示里会写明「本次比对用的是您自己维护的剂量区间」。登录后会随账号带走。",
        "【新功能】每条提示都写明「依据出处」：以前提示只说「按体重 15kg 算，日剂量偏高」，您看到 15 的第一反应一定是「15 哪来的？」——不给您看原文，您就得自己通篇找一遍，找完没找到就只能整条忽略。2026 年多篇医生调研里，医生对 AI 病历工具最集中的抱怨不是不准，而是「它说我错了，可它依据什么说的」这种黑箱感（TryTwofold 把它列为信任问题的核心；NEJM AI 则指出审核一旦流于形式，法律责任仍全在医生）。现在每一条复核提示下面都会多出一行「依据」，把对话里的原话与病历里的原句并排给出来：儿童剂量写明体重取自病历哪句话（手填的则注明来自您填的患者信息）；否定词写反给出患者原话「我没有高血压」；左右侧写反给出「我左膝盖疼」；剂量差十倍给出对话里的「0.25g」与草稿里的「2.5g」；跨次比对的断头账则给出上次那份处理意见的原文。两边都定位不到时宁可不显示——显示错的依据比不显示更糟。",
        "【新功能】用药后效果闭环：上次开了药，本次复诊既没提到这药、也没写「好转/无效/不良反应/停药」之类的话 → 提示补一句。《病历书写基本规范》要求复诊记录写清治疗后反应，而这一句恰恰最容易整段漏掉：医生忙着写本次症状，AI 也不会凭空编疗效。复诊病历缺疗效评估是质控必查项，也是下次调整用药的依据。四道防误报：外用药与溶媒（软膏/雾化/生理盐水这类本来就不评估疗效）不报；本次任何段落提到过这个药名算提了（又开了同一种药说明方案在延续）；写了疗效或不良反应表述即算写了；距上次不足 3 天（药还没吃完）或超过 90 天（旧账）不报。一次最多点名 2 种药。写一句「服上药后咳嗽减轻，无不良反应」或「患者未服药」都算闭环。",
        "【新功能】核对记录跟随账号走：以前核对痕迹只存在本机，换台设备（诊室电脑换家里电脑、手机换平板）统计就从零开始——您明明核对了一整个月，新设备上却显示「生成 3 份、核对 0 份」，那是在冤枉人，结果只会是关掉这个功能。现在登录后会双向合并：两边各写各的病历，按草稿编号去重，「已核对」取并集（在手机上勾过、回到电脑上也算核对过，取反会让人觉得自己明明核对过系统却说没有）。同步内容仍然只有「一份草稿 + 时间 + 是否核对 + 病历类型」，没有任何病历内容与患者信息；清空记录会连账号里那份一起清掉，不会出现「明明点了清空又回来了」。",
        "【新功能】核对覆盖率按病历类型分维度：一个笼统的「本月核对率 62%」看完只知道好或不好，不知道该改什么；分成「门诊病历 X 份、核对率 Y%」「入院记录 X 份、核对率 Y%」才看得出是哪一类病历被跳过了——那往往不是态度问题而是流程问题（比如入院记录都在查房路上随手生成，根本没时间看）。统计面板现在按类型分组显示，份数少于 3 份的类型不评率（3 份里 1 份没勾就是 67%，那是噪声不是结论）；导出的 CSV 增加了「病历类型」列，末尾附一张按类型的分维度小计表，交质控材料时直接用。",
        "【新功能】药名里带数字的药也认得：维生素B1片、维生素K1注射液、辅酶Q10胶囊这类写法原先整条匹配不上，给这类药写错剂量时系统一声不吭。现在允许药名含数字（仍要求首字符是汉字或字母，所以「0.5g片」不会被凭空切成一种叫「5g」的药）。",
        "【修复】用药频次从来没被真正识别到：儿童剂量折算时读的是内部对象而不是频次文本，导致「每日 2 次」被当成没写频次、一律按常规次数估算——按 3 次折和按 2 次折算出来的日剂量差 50%，这条提示的准确性直接打折。同时提示明细里会打出「[object Object]」这种看不懂的字样。现在按真实频次折算，明细里显示频次原文（如「每日 4 次」），并写明按几次/日算的；确实没写频次时才按常规次数估算，并照旧明说「按常规 N 次/日估算」。"
      ]
    },
    {
      "version": "v1.44",
      "date": "2026-10-08",
      "title": "儿童按体重给药校验 + 检查回报闭环 + 主动勾选已核对：把「按体重算错量」和「开了检查没人跟」这两类断头账补上",
      "tags": [
        "新功能",
        "体验优化",
        "缺陷修复"
      ],
      "items": [
        "【新功能】儿童按体重给药校验：成人剂量写错是差一点，儿童剂量写错是差一个数量级——儿童没有「一片两片」的直觉兜底，全靠体重折算。英国 RCPCH 2026 年 4 月的立场声明直说：儿科体重从 0.5kg 到 100kg 的巨大跨度，导致最常见的错误形态就是「十倍过量（ten-fold overdoses）」；BMJ Quality & Safety 2024 年 Bates 社论把「按体重给药」列为儿科用药安全被忽视太久的最高优先级。沙特一项 545 张儿科门诊处方的前瞻研究里，26.1% 的处方至少有一处错误，其中 68.3% 是剂量相关。现在：病历里读得到体重、且判断是患儿时，会自动折算成 mg/kg/日并对照常规范围；超出常规上限较多按高危报、明显不足作提示。设计上刻意保守——只在明确是患儿时才跑、没有体重就闭嘴、只对能查到常规范围的药跑、区间人为放宽（不同感染部位与厂家规格本来就有差异），并且每一条都写明「以药品说明书为准」。0.5g 与 500mg 仍判为同一个量。",
        "【新功能】检查回报闭环：上次处理意见里开了「查血常规」「行胸部 CT」，那次的辅助检查里却没有这项结果——说明结果是后出的；本次来了如果还是没提，这笔账就一直悬着。UNSW 的系统综述（J Gen Intern Med）发现门诊化验结果有 7%～62%、影像报告高达 36% 没有被跟进；JAMA Intern Med 的调研里 83% 的医生在两个月内至少延迟过一次结果查看，只有 41% 满意自己的结果管理，而医生最想要的功能正是「追踪检查订单直到闭环」。现在会点名是哪一次就诊开的哪一项检查，并说明补一句「未查 / 结果未回」同样算闭环。三道防误报：那次当场就有结果的不算待办、本次在辅助检查或现病史里提到即算闭环、距上次不足 2 天（多数检查当天出不来）不报。",
        "【新功能】「本次已核对」主动勾选：核对记录原先只统计「打开过复核面板」，但打开页面只能证明页面被展开过，不代表逐项看完了——拿它当判据说医生「没核对」是冤枉人的。现在复核面板里加了一个勾选框，医生逐项看过后顺手一勾，记录里会单独显示「主动勾选已核对」份数，覆盖率提醒也改用勾选数作判据。换下一份草稿时勾选自动取消，不会串到下一份上（翻看历史旧病历时也不会误记）。",
        "【新功能】核对记录可导出：一键导出 CSV，每行一条草稿，只有生成时间、有没有打开复核、有没有主动勾选已核对三列，末尾附合计与勾选率。里面没有任何病历内容和患者信息，可以直接交给科室做质控留痕。带 BOM，Excel 打开中文不乱码。",
        "【新功能】过敏史三要素里的「发生时间」单独提示：病历规范对过敏史的要求是致敏原、发生时间、症状表现三要素。上一轮已经会提示「没写表现」，这一轮补上最后一项——表现写了但没写是哪一年的事时单独提示一次，并给出可直接照抄的写法（如「3 年前」）。刻意一次只提一条：表现没写时只提示表现，两条一起糊上去反而让人一条都不想改。",
        "【修复】「本次已核对」勾选框在没有草稿时也会显示：类选择器上的 display:flex 盖掉了 [hidden] 的浏览器默认样式，导致本该隐藏的勾选框一直显示在复核面板里。",
        "【修复】核对记录导出按钮只看近 30 天：一个月没写病历（或只有更旧的记录）的人，导出按钮一直是灰的，旧记录永远导不出来。现在按全部记录判断。",
        "【修复】「体重指数 24.5」被当成体重 24.5kg：BMI 的数值会被当成公斤数，折算出来的 mg/kg 整个是错的——错得比不查还糟。现在先抹掉体重指数/BMI、出生体重、孕前体重这类写法再取体重。",
        "【修复】成人病历里写「建议儿科会诊」被当成儿科：会给成人用药套儿童剂量区间，那是纯粹的误报。现在儿科标识只认患儿/小儿/婴幼儿/婴儿/新生儿/儿童/早产儿，不收「儿科」。",
        "【修复】「超声雾化吸入」被当成开了超声检查：雾化是治疗不是检查，做雾化的孩子每次来都会被报「超声没回结果」。现在这类写法先剔除。",
        "【修复】「胸部 CT」「腹部 B 超」这类带空格的检查名匹配不上：只能退回到泛称「CT」「B 超」，提示里就少了最关键的信息（到底查哪儿）。现在比对前先压掉空格。"
      ]
    },
    {
      "version": "v1.43",
      "date": "2026-10-08",
      "title": "过敏史规范度 + 剂量倍数位移 + 待办闭环 + 核对回执：把「写了等于没写」和「交代了没人跟」这两类错拦下来",
      "tags": [
        "新功能",
        "体验优化",
        "缺陷修复"
      ],
      "items": [
        "【新功能】过敏史规范度复核：只写「有药物过敏史」等于没写——下一位开药的人不知道要避开什么。国内病历书写规范要求过敏史写明致敏原、发生时间、症状表现；ISMP Canada 的「过敏永不事件」通报里，三起事故都发生在医院早有过敏记录的情况下，根因就是记录写得太粗。现在会自动查三件事：对话里说了具体过敏物而草稿只写泛指的（如「我对青霉素过敏」被压成「有药物过敏史」）按高危报；对话里说了过敏、草稿却写成否认的按高危报；写了过敏物但没写表现的作提示。「过敏性鼻炎」这类病名不会被当成过敏史，「药物过敏吗？」这种问诊句不会被当成患者自述。",
        "【新功能】剂量差一个数量级单独重点提示：0.25g 写成 2.5g 是多点了一位小数点，10mg 写成 100mg 是少看一个零——这类错与普通「剂量写错」不是一个量级，差一位就是十倍过量，是各国用药安全报告里最典型的致死笔误。现在这类会单列一条、文案直接点明差了多少倍，并且始终排在所有待核对项的最前面，不会被提示项挤掉。0.5g 与 500mg 仍判为同一个量，不会因为换了个单位写法就误报。",
        "【新功能】待办闭环提醒：上次写了「1 周后复查血常规」，这次来了新病历只写本次主诉，那句交代就这么悬着——没写做了，也没写没做，而质控与医保查的正是这一句。AI 只看本次对话，不会记得上次写了什么，所以这里拿档案里上次的处理意见来查。三道防误报：只认明确的待办（「不适随诊」这类套话不算）、本次病历在现病史或辅助检查里写了复查结果就算闭环、还没到约定时间不报。",
        "【新功能】我的核对记录：澳大利亚 RACGP 的反馈里有句大实话——「刚用上的前几周会逐字核对，之后就不查了」，而 AI 的错误率不会随医生用熟而下降。现在每生成一份病历记一笔，打开复核或跨次比对看过即算核对过一次，您可以随时看到「近 7 天 / 近 30 天生成了多少份、核对过几份」。只记份数与时间戳两个数字，不记任何病历内容，全部留在本机。",
        "【新功能】档案备份新鲜度：备份过一次不等于一直安全——档案每天都在新增，而清缓存、换设备往往毫无预兆。现在同步面板会写明上次加密备份是什么时候、当时有几位患者，此后档案又有改动时会提醒再备份一次；从没备份过会直接说明「还从来没有加密备份过」。换设备登录后若账号里存着档案，也会主动提示您可以取回（只查有无与大小，不下载密文）。",
        "【修复】医生的问诊句被当成患者自述过敏：「药物过敏吗？患者：否认药物过敏」这段对话，以前会被判成「对话里说了过敏、草稿却写否认」而误报高危——几乎每份问过过敏史的病历都会中招。现在疑问句不再计入。",
        "【修复】本次写「建议复诊」被当成已闭环：待办闭环判定时只在全文里找「复查/复诊」，而每份病历的随访建议里都写着「不适复诊」，于是这条提示几乎永远不报。现在按段落判断：写在现病史、辅助检查里的才算跟进，写在随访建议、处理意见里的是本次新开的交代。",
        "【修复】20 倍剂量不算小数点错位：原先只认恰好 10 的整数次幂，0.25g 写成 5g（20 倍）漏掉了。现在按数量级判定，差 10 倍以上、不足整次幂的也会点明倍数（显示「约 20 倍」）。",
        "【优化】跨次就诊比对的高危项现在排在提示级之前：条目超出上限时被截掉的只会是提示项，不会再出现最要命的那条因排在后面而看不见的情况。"
      ]
    },
    {
      "version": "v1.42",
      "date": "2026-10-08",
      "title": "跨次就诊比对 + 剂量单位复核：查前后矛盾这种最难被发现的错，查剂量这种最容易出事的错",
      "tags": [
        "新功能",
        "体验优化",
        "缺陷修复"
      ],
      "items": [
        "【新功能】跨次就诊比对：病历质控里最难被发现的一类错不是错别字，而是前后矛盾——上次写着高血压病史，这次因为患者口述时没提，AI 写成了「否认高血压」。这类错读起来完全通顺，扫一眼看不出来。现在病历一生成，就拿您自己存在本机的历次就诊摘要自动比对：既往有 → 本次否认会重点标出，既往的慢病与长期用药这次没提会作提示，既往记过过敏却开了同类的药（如青霉素过敏开阿莫西林）会立即拦下。疾病可能新发也可能已痊愈，所以只标出供您核对，绝不自动改病历。",
        "【新功能】高危复核扩展到剂量与单位：用药错误里剂量占比最高，而 AI 转写最常犯的正是「0.25g 写成 0.5g」「每日三次写成每日两次」这类看着无害的错。现在会自动把草稿里的剂量、频次与对话原文逐项对照：剂量不一致按高危报，频次不一致按提示报（口述时常当场改频次），剂量没写单位会提醒补上。0.5g 与 500mg 是同一个量，已做等价换算，不会把「换了个单位写法」误报成剂量写错。",
        "【新功能】纠错报告可以导出了：哥本哈根大学那项研究里最刺眼的一句是——医生改了那么多，却没有任何东西能证明这件事发生过。现在账本可以一键导成 CSV：累计与近 30 天各改了多少处、哪些词库已记住、哪些还没教过、逐份记录都在里面，可以直接发给科室或供应商。和账本一样，导出物里只有改动的那几个字，没有病历全文和患者信息。",
        "【新功能】批量统计加了「按周」「按月」分组：按日期分组太细，科室月度总结要的是按月、按周这种粒度。周次按 ISO 周计算（周一为一周之始），不会出现自己数周数数错的情况。",
        "【新功能】质控目标线支持「甲级率」：医院考核常用甲级率（常见要求 ≥95%）而不是抽象的质控分，所以目标口径现在可以二选一。切到甲级率后趋势图、达标天数、柱子上的数字都会跟着变成百分比；两种口径的目标值分开记住（质控分默认 90，甲级率默认 95），都是自设参考线，界面已标明，不冒充院方标准。",
        "【新功能】分享码可以带上机构与科室：科室群里常有几套码在传，光看一串字符分不清是谁调的那套。现在生成时可以填上机构与科室，同事导入时会显示「来自 市第一医院 · 呼吸内科」，并自动回填到他的输入框，方便改完再传下去。和以前一样，码里不含任何病历内容和患者信息。",
        "【修复】甲级率口径下趋势的首尾差值算的是分数：切换目标口径后，界面上会出现「甲级率…比第一次高 3%」而实际高的是 3 分——数字对不上口径。现在差值跟着口径走，甲级率算百分点，质控分算分数。",
        "【修复】厂商预设下拉一次性加载、失败就永久空着：开页面那一刻若恰好网络抖动或令牌正在轮换，下拉就永远只剩「请选择」，页面还不报错，医生会以为这个版本没有厂商预设。现在会退避重试，点开下拉或点「套用」时若还没拉到也会补拉一次。",
        "【优化】没有档案时的提示说明了归档口径：档案按「姓名+性别+年龄」归档，三项要和上次一致，改了一项就找不到了——以前只说「还没有存档记录」，医生会以为功能坏了。"
      ]
    },
    {
      "version": "v1.41",
      "date": "2026-10-08",
      "title": "生成后自动复核 + 纠错账本：让「改了有没有用」看得见，让致命错误不再靠记性发现",
      "tags": [
        "新功能",
        "体验优化",
        "缺陷修复"
      ],
      "items": [
        "【新功能】高危项复核改为生成后自动跑：UC Davis 对 356 份 AI 病历的评估显示，5.3% 的错误「不更正就可能造成严重伤害」，而编辑数据里 14.9% 的病历被完全原样保存——最需要复核的恰恰最不可能被点开。现在病历一生成就在本机自动比对对话原文，只在真有可疑处时才弹出一行提示；没有问题就一句话都不说，绝不制造噪音。仍然只标出可疑处，绝不自动改您的病历。",
        "【新功能】复核新增「无据推断」：专查草稿里冒出对话根本没提过的药与诊断——这正是上述研究中三类典型错误的共同特征。凭空多出的药按高危报（用药安全），诊断只按提示报（诊断常是医生据查体下的结论，报成高危会误报泛滥）。口述简称（「吃点头孢」写成头孢克洛）、转写听错一字（阿莫西宁／阿莫西林）都不会误报。",
        "【新功能】我的纠错账本：哥本哈根大学对一家丹麦医院的两年研究发现，医生平均每月因改错字被打断约 602 次，而这些改动被回传给厂商当训练数据，医生自己却看不到改动起了什么作用。现在您改过的每一处都会记下来，攒成一本账：近 30 天核对几份、改了几处、词库已经记住几处、还有几处没教过——没教过的可以一键教会词库，以后转写直接写对。只存改动的那几个字，不存整份病历，全部留在本机。",
        "【新功能】字段设置分享码：一家医院里往往是有人先花半小时调好 HIS 字段名，其余同事照样得再调一遍。现在点一下生成一串码发给同事，他粘贴进来即可。码里只有字段名与顺序，不含任何病历内容和患者信息，可以放心发在科室群里。",
        "【新功能】批量统计支持分组与质控目标线：除了总数，现在可以按诊断、病历类型、患者、等级、日期分组看构成（「这个月的高血压复诊占了多少、写得怎么样」）；质控趋势图上加了一条自设目标线（默认 90 分，可改），达标与未达标的柱子用颜色区分，并直接列出低于目标的日子。目标分是自设参考线，界面已标明，不冒充院方考核标准。",
        "【优化】同步口令的提示说清「为什么不行」：这个口令无法找回（服务端只有密文），所以不再笼统提示「至少 6 位」，而是具体说明太短几位、纯数字、常见口令、重复字符等，并新增「再输一遍」确认框防止打错字永久取不回；取回失败时同时给出一条出路（重设口令再上传即可覆盖旧密文）。",
        "【优化】一字未改提醒：复制或导出时若草稿与 AI 初稿一字未改，会温和提示一次（同一份只提示一次，改过就不再提）。研究显示 AI 病历的严重错误恰恰集中在被原样放行的那部分。",
        "【修复】只读接口遇令牌失效会静默失败：厂商预设清单、分享码、分组维度等 GET 接口在令牌过期时不刷新重试，页面表现为下拉只剩占位项、提示「认不出来」，看起来像功能不存在。现在会自动刷新令牌重试一次，分组维度还会在展开面板时补拉一次。",
        "【修复】分组维度取原型链属性会把服务打挂：groupBy 传 __proto__ / constructor 等值时直接崩溃（分组键来自请求体，任何字符串都可能传进来）。已改为白名单 + hasOwnProperty 判定。",
        "【修复】纠错账本按「一份草稿记一笔」统计：医生改一份草稿往往改很多次，按次记会把一处改动算成十处，统计失真。"
      ]
    },
    {
      "version": "v1.40",
      "date": "2026-10-08",
      "title": "选厂商即配好 HIS 字段 + 高危项复核 + 配置随账号走：把装机成本和致命错误一起降下来",
      "tags": [
        "新功能",
        "体验优化",
        "缺陷修复"
      ],
      "items": [
        "【新功能】主流 HIS / EMR 厂商预设：贵院系统里字段叫什么，不用再逐个打字改——在导出面板选一家厂商，10 个字段名一次性填好，之后还能逐项微调。预设按各厂商常见命名习惯整理（院内二次开发普遍，界面已明确提示以贵院实际为准）。",
        "【新功能】高危项复核：专查「AI 一本正经地写错」的那几类致命错误——对话里说「否认药物过敏」被写成「药物过敏」、「左肺」写成「右肺」、草稿里出现对话没有的数值。把草稿与对话原文逐项对照，标出需要您亲自看一眼的地方，绝不自动改您的病历。本机比对，不调 AI、不耗算力。",
        "【新功能】专科骨架条目可增删：内置 15 个科室的骨架只覆盖共性，同为外科，甲乳和创伤要写的完全不同。现在可以在本科室骨架上加条目、去掉用不上的条目，改完录音生成时 AI 就按这份清单排版。",
        "【新功能】批量统计筛选与质控趋势：除了时间范围，现在还能按患者、诊断、病历类型、日期区间、质控分与等级筛选，回答「这个月看了多少高血压复诊」。同时把每天的质控均分画成趋势柱，一眼看出病历质量是在变好还是变差，数据也能随 CSV 导出。",
        "【新功能】配置随账号同步：术语词库、HIS 字段设置、常用短语不含患者信息，登录账号后自动存一份，换台设备登录就带回来，不用再手动备份。患者档案默认不同步；如您需要，可设置一个同步口令，档案在您本机用 AES-GCM 加密后才上传，服务端只保管密文、没有口令解不开。",
        "【优化】HIS 字段支持排序：每行加了「上移 / 下移」按钮，导出顺序随手可调（后端早已支持，此前只能改配置，等于没有）。",
        "【修复】按患者筛选永远筛不中：历史记录里原本只存时间与正文、没存患者姓名，导致筛选条件永远匹配不到且不报错。现在生成时会一并记下姓名（更早的记录没有姓名属正常，界面已说明）。",
        "【修复】厂商预设下拉一直是空的：预设清单接口是 GET，前端却按 POST 请求，页面不报错、只显示一个占位项，看起来像「没有预设」。",
        "【修复】骨架条目去掉后无法恢复：被隐藏的条目此前直接从清单里移除，界面再也没有「恢复」入口，只能清空全部自定义才能找回。现在隐藏的条目会保留并标为「已去掉（删除线）」，随时可恢复。",
        "【安全】医生自定义的骨架条目会进入提示词，因此做了三层清洗：剥离控制字符与换行、剥离方括号、剥离冒号等号等提示词结构符，并限量 8 条、限长 16 字。骨架指令尾部始终保留「内容只能来自对话，未提及一律写【对话未提及，请补充】」的约束。"
      ]
    },
    {
      "version": "v1.39",
      "date": "2026-10-08",
      "title": "生成前套骨架 + 转写即纠错 + 一键工作量统计：把返工提前消灭",
      "tags": [
        "新功能",
        "体验优化",
        "缺陷修复"
      ],
      "items": [
        "【新功能】专科骨架在生成时就套用：选好科室后录音，AI 直接按本专科的章节顺序与必查要点书写，不用再把《主诉》手动挪到院内系统要的位置。骨架只规定「写什么、按什么顺序写」，内容仍只能来自对话，绝不替医生编。",
        "【新功能】术语词库作用于转写稿：新增「转写时自动纠错」开关（默认开）。药品名在写进病历之前就改对——ASR 对药品名的错误率可高达 40%，事后改要逐字找，事前纠一次到位。每次纠错都会逐条列出「原文→改后」供核对。",
        "【新功能】HIS 字段映射可配置：贵院系统里不叫「主诉」而叫别的名字？在导出面板的「字段名对照设置」里改一次，之后每次导出都按您的叫法；不需要的字段可勾「不导出」，分隔符也能改。设置存在本机。",
        "【新功能】一键批量统计：把生成记录里的病历汇总成表格——病历总数、日均接诊、类型分布、质控平均分、甲/乙/丙分布、最常缺的内容。基层每月填病例报表动辄几十小时，这里能省掉大部分。支持 CSV（Excel 可直接开，已带 BOM 防乱码）与文字汇总两种格式，展开面板即自动汇总。",
        "【新功能】备份与换设备迁移：词库、患者档案、HIS 字段设置都存在本机浏览器，换电脑或清缓存会全丢。新增「导出全部备份 / 导入备份文件」，一键带走、一键恢复，导入时只还原白名单内的数据。",
        "【优化】生成后会明确告知本版套用了哪个专科骨架（显示在通道标签上），以及转写稿按词库纠正了几处（显示在提示栏最前，便于核对用药安全）。",
        "【优化】导出面板改了字段设置后，已生成的导出内容会立刻按新设置重算，不用再点一次按钮。",
        "【修复】批量统计的甲/乙/丙等级分布恒为 0：内部键名与质控引擎实际返回的「甲级/乙级/丙级」不一致，导致等级统计完全失效、医生会误以为这批病历没有评级。",
        "【修复】CSV 导出的列名写死为默认字段名，改了映射配置后统计表与粘贴版对不上。",
        "【安全】专科骨架只接受内置白名单科室，传入任意字符串（含脚本片段）一律回落到通用档，不存在提示词注入面；字段映射配置值会剥离换行与控制字符，避免破坏导出行结构。"
      ]
    },
    {
      "version": "v1.38",
      "date": "2026-10-08",
      "title": "专科病历模板 + 个人术语词库 + 患者档案：从「写完」到「好写」",
      "tags": [
        "新功能",
        "体验优化"
      ],
      "items": [
        "新增「专科病历模板」：按科室一键生成病历骨架（儿科自动加体重与喂养、骨科加受伤机制与远端血运、中医加舌脉辨证、急诊加时间节点与去向），横线处填空即可，本机生成不耗算力",
        "新增「我的术语词库」：把常被听错的药品名一次性改对（如「绿皮格雷」→「氯吡格雷」），支持手动添加、批量导入（Excel 粘贴）、32 条内置推荐词库一键加入",
        "一键纠错会逐条列出「改了什么」供核对，改错可用版本对比回退，绝不静默改写病历",
        "新增「患者档案」：按姓名+性别+年龄归档历次就诊，复诊一键带出过敏史、慢病史与最近用药，过敏史永远排在最前",
        "患者档案只存本机浏览器，服务端不保存任何患者信息，支持导出备份与一键清空",
        "历史版本升级为列表：自动留存最近 10 版，可任选一版「与当前对比」或「回到这版」，不再只能对比上一版",
        "修复：档案「最近用药」实际取的是最早一次，会带出过期旧药",
        "修复：「否认慢性病史」被当成既往史带出，会把更早记的高血压病史盖掉",
        "修复：试用限流提示为英文原文，医生看不懂；改为中文并告知恢复时间与解决办法"
      ]
    },
    {
      "version": "v1.37",
      "date": "2026-10-08",
      "title": "专科质控 + 一键导入 HIS/EMR + 版本对比：AI 写完直接能进院内系统",
      "tags": [
        "新功能",
        "修复"
      ],
      "items": [
        "新功能·专科质控：医生选了科室后按该科标准加查——儿科必查体重与喂养史、骨科必查远端血运与受伤机制、妇科必查月经婚育史、中医必查舌象脉象与辨证、急诊必查时间节点与去向等 13 个科室规则；只在明确选科室时启用，避免系统猜错科室误扣分",
        "新功能·导入 HIS / EMR：一键把病历转成院内系统吃得下的格式（HIS 字段文本 / 键值 / 纯文本 / Markdown / JSON / XML / CSV 共 7 种），自动把【主诉】改成「主诉：」、整理诊断与用药清单、CSV 带 BOM 防 Excel 中文乱码；可复制可下载，全程本机处理不耗算力",
        "新功能·版本对比：每次「AI 修改」「重新生成」自动留下上一版，一键看出改了哪几行、具体改了哪几个字（词级标红），并可一键回退——不用再从头通读一遍",
        "优化·长录音稳定性：微信内切后台/来电话导致录音被系统回收时，自动续录并明确告知「中间有一段可能没录上」；离开页面前拦截提示，防止误关丢录音",
        "修复：中医「四诊不全」提示失效——原规则用「望闻问切」单字匹配，导致「双肺未闻及啰音」的纯西医病历被判为已四诊合参，现改为匹配舌象/脉象特征写法",
        "修复：导出时「【随访建议】」这类标题只被识别为「随访」，后半截文字漏进正文并残留方括号；改为先剥标题外壳再全量比对",
        "修复：未选科室时抗菌药物疗程提示被静默丢弃（专科项为空导致整块结果被判空）",
        "修复：版本对比把「两行各改了几个字」误判为整篇重写（LCS 未按位置配对删除块与新增块），相似度也从「相同行数占比」改为整篇用词重合度，不再出现改两个字却显示 0% 的情况"
      ]
    },
    {
      "version": "v1.36",
      "date": "2026-10-07",
      "title": "兼容性与署名修复：微信里能存预设了，署名设置后复制/导出/打印都自动带上",
      "tags": [
        "修复"
      ],
      "items": [
        "修复：「存为预设」在微信内置浏览器/部分应用内打开时点了没反应（浏览器禁用弹窗输入所致），改为页面内直接输入预设名，所有浏览器可用",
        "修复：设置「医师署名」后，一键复制 / 导出 Word / 打印出的病历仍带 XXX 占位的问题——现在设置署名的瞬间草稿即自动替换（所见即所得），且所有交付出口兜底替换",
        "修复：同一份草稿重复复制会出两行签名的问题（幂等处理），换医生署名时旧签名自动替换为新署名",
        "首页：「AI 不编造」升级为合规表述——没查到的项目如实标注「请补充」，病经历得起病历质控和医保检查（对应 2026 医保飞检病历真实性核查趋势）",
        "实测：真浏览器全链路回归（注册→文字生成→分角色→待补充→署名即时替换→复制拦截→复制带签名幂等→预设保存/取消/切换/删除→移动端视口无溢出）"
      ]
    },
    {
      "version": "v1.35",
      "date": "2026-10-07",
      "title": "录音空白守卫：没录上内容时明确提示，不再出空草稿",
      "tags": [
        "优化"
      ],
      "items": [
        "优化：录音环境太吵、声音太小或没说话时，不再生成一份近乎空白的草稿让人困惑——改为明确提示「没有识别到有效对话内容」，并引导靠近手机重新录音或改用文字粘贴",
        "实测：静音录音全链路验证通过（录音→上传→转写→空内容识别→守卫提示）"
      ]
    },
    {
      "version": "v1.34",
      "date": "2026-10-07",
      "title": "长录音支持：超过 5 分钟自动分段转写合并",
      "tags": [
        "新功能",
        "优化"
      ],
      "items": [
        "新功能：录音/上传音频超过 5 分钟不再失败——服务器自动把长音频切成小段逐段转写，再按顺序合并成完整对话稿（支持约半小时内），长门诊不用再手动分段",
        "优化：页面提示与使用指南同步更新（原「建议不超过5分钟」为上游模型单次上限，现已由服务端自动处理）",
        "说明：超长录音（约半小时以上）仍建议分段录制，或用「追加到当前对话」合并生成"
      ]
    },
    {
      "version": "v1.33",
      "date": "2026-10-07",
      "title": "口述补充：查体所见等当面没录上的内容，补一段就行",
      "tags": [
        "新功能"
      ],
      "items": [
        "新功能：录音按钮旁新增「🎤 口述补充」——查体所见、口头医嘱等当面没录进录音的内容，患者走后对着手机说一段，自动转写填入输入框（自动勾选追加），核对后重新生成即可",
        "为什么需要：查体时医生双手忙着、嘴离手机远，环境录音天然录不全——国际同类产品（Abridge/Suki）都把口述补充作为标配功能",
        "说明：口述补充转写与生成一样消耗 1 点算力（会员不限）；转写后先核对再生成，内容由您把关"
      ]
    },
    {
      "version": "v1.32",
      "date": "2026-10-07",
      "title": "用药核对：开药之后，让 AI 帮你把把关",
      "tags": [
        "新功能",
        "用药安全"
      ],
      "items": [
        "新功能：工作台新增「💊 用药核对」——基于病历草稿的用药清单，自动筛查两两相互作用、同类药重复、特殊人群注意点，并列出需要对照说明书确认的条目",
        "边界清晰：只核对材料里已有的药，绝不建议加药换药；不确定就明说不确定，不编造相互作用；上线前经 4 组已知相互作用组合验证全部命中（如华法林+复方丹参出血风险、头孢+饮酒双硫仑反应）",
        "说明：核对结果仅供医师参考，以最新说明书为准；与生成一样消耗 1 点算力（会员不限）"
      ]
    },
    {
      "version": "v1.31",
      "date": "2026-10-07",
      "title": "复诊带入：老患者一填名字，上次病历自动找出来",
      "tags": [
        "新功能"
      ],
      "items": [
        "新功能：生成病历后自动记入本机「患者档案」（按姓名，最多存30位）；下次同一患者来复诊，填上同名就会提示「发现老患者的上次病历」，点「一键带入」，AI 重点写本次病情变化和治疗调整，不再全文重复",
        "隐私说明：患者档案只保存在您本机浏览器，不上传服务器；不想用点「忽略」即可，也可清空「上次病历参考」框",
        "说明：带入的上次病历会让 AI 对比写变化（上次吃什么药、这次效果如何），这是复诊/随访场景最省时间的功能"
      ]
    }
  ]
}