# 汉唐中医 v1.11.23 发布说明 > 发布日期:2026-09-14 > 内部版本:1.11.23+18(Android versionCode=18) ## 一句话 《伤寒论》《金匮要略》双双拆到**条文级**并入知识库(伤寒论 380 篇 / 金匮要略 453 篇),正文里的方剂名·药材名一点即跳详情,方剂详情「见于经典」反向标注出处条文——经方正文与方剂·药物首次实现**双向联动**。 --- ## 📷 界面预览 ![v1.11.23 伤寒论 / 金匮要略 条文级阅读库](https://cdn.jsdelivr.net/gh/jangviktor-web/nihaixia-app@master/docs/images/screenshot_v1123_shanghan_jingui.webp) > 从左到右:① **知识库新增「伤寒金匮」Tab** —— 伤寒论 380 篇(条文级 + 五经概述)与金匮要略 453 篇两个入口。 ② **伤寒论 · 阅读库** —— 23 大模块拆到条文级逐条排列(太阳·总纲 / 太阳病中风(桂枝汤证) / 太阳病伤寒(麻黄汤证) / 太阳病传经判断 ……)。 ③ **方剂「见于经典」** —— 以桂枝汤为例,分「伤寒论 / 金匮要略」两组列出**专门介绍该方**的条文,点按直达原文。 ④ **金匮要略 · 阅读库** —— 25 篇杂病按条文排列(藏府经络先后病、痉湿暍病、疟病 ……)。 --- ## 🌟 本版主打:伤寒论 / 金匮要略 条文级阅读库 ### 1. 知识库新增「伤寒金匮」Tab - 知识库 Tab 由 6 个增至 7 个:六经 / 方剂 / 本草 / 针灸 / 内经 / **伤寒金匮** / 搜索。 - 入口页两张书卡:**伤寒论 380 篇**(六经辨证 · 条文级 + 五经概述)、**金匮要略 453 篇**(杂病辨证)。 ### 2. 伤寒论:23 大模块 → 380 条条文 - 资源:`assets/shanghan/clause_000.md` … `clause_379.md`;索引 `lib/data/classic_lecture_data.dart` 的 `kShangHanLectures`。 - 原来「一章 = 一个大 markdown」,现在**一条条文 = 一个文件**,阅读库逐条列出(太阳·总纲 / 太阳病中风(桂枝汤证) / 太阳病伤寒(麻黄汤证) / 太阳病传经判断 ……)。 - 兼容原稿五花八门的分隔格式:`#### 条文N`(太阳 / 阳明)、`### 二七七:`(少阳~厥阴)、行首裸数字冒号等;剔除「## 本经常用方剂」索引段与「条文2-8」这类**区间分组头**(二者非条文)。 ### 3. 金匮要略:25 篇 → 453 条 - 金匮原稿结构与伤寒不同:条文是长段落,另夹「XX方」小节。拆分规则:**只在条文型标题断句,方剂小节并入其所属条文**(例:「疟病结为症瘕…宜鳖甲煎丸。」块内的「鳖甲煎丸方」并回该条)。 - 每篇篇首「## 篇名」+ 引言单独成块,标为「概述」。 ### 4. 方剂 ⇄ 条文 双向联动 - **条文 → 方剂 / 药物**:阅读库正文中出现的已知方剂名 / 药材名(含异名,如 茈胡→柴胡)自动变成链接,点按直达方剂 / 药物详情。 - **方剂 → 条文**:方剂详情新增「见于经典」区,分「伤寒论」「金匮要略」两组列出**专门介绍该方**的条文,点按回到原文。 - **命中规则(只认「专门介绍」,压低噪声)**:① **方证标题首行即该方**;或 ② **条文原文中该方之后紧接「主之」**。舍去「宜 / 与 / 属 / 可 / 当」等弱信号;并做**最长优先匹配**,避免「四逆汤」误命中「茯苓四逆汤」「通脉四逆汤」。 - 实测(380 + 453 真实资源):伤寒论侧 桂枝汤 20→**12**、小柴胡汤 10→**5**、四逆汤 ~10→**9**;金匮侧 桂枝汤 2、小柴胡汤 4、四逆汤 3。 - 性能:833 个条文资源改为 `Future.wait` **并行**读取,首次打开方剂详情不卡顿。 ### 5. 内经阅读库同源重构 - 抽出通用 `ClassicLibraryScreen`(列篇目 → 点入 `MarkdownDocScreen`),内经 / 伤寒论 / 金匮要略三个阅读库共用同一实现;内经篇目实现 `LectureIndex` 接口,删掉一份重复的列表页实现(净 -87 行)。 ## 🐛 本版修复:Markdown 阅读页正文链接「点了没反应」 - **现象**:闭门课 / 伤寒金匮 / 内经 正文里,被标成链接的方剂名·药名点击无任何反应;而列表页的标签 chip 却正常。 - **根因**:`flutter_markdown` 会把链接地址做 percent-encoding —— `formula://四逆汤` 传到 `onTapLink` 时已是 `formula://%E5%9B%9B%E9%80%86%E6%B1%A4`;旧代码只去掉 `formula://` 前缀、未解码,拿编码串去查库必然查不到 → 静默不跳。 - **修复**:新增顶层 `decodeMarkdownHref()`,先 `Uri.decodeComponent` 再查库(非法 `%` 兜底原样返回)。**一处修复覆盖全部 Markdown 阅读页**:闭门课 / 伤寒金匮 / 内经搜索 / 方剂详情「见于经典」/ 药物关联闭门课。 - **回归**:新增 `test/markdown_link_href_test.dart`(3 例,含「未解码必失败」的反证)。 --- ## 🧪 测试验证 - `flutter analyze lib`:**0 issue**。 - 全量 `flutter test`:**549 通过 / 3 失败**。 - `quality_score_bc_test`(B/C 质量评分)、`ziwei_bench_test`(MingLi-Bench 跨引擎比对)为紫微 / 八字**既有基线**失败,与本次改动无关。 - `create_folder_dialog_test`(新建书签文件夹后弹窗关闭)只涉及书签文件夹,与本次伤寒 / 金匮 / 链接改动**无交集**,列为待查项。 - 本次新增 / 相关的 4 个测试文件 **17/17 全过**:`formula_intro_test`(6) + `classic_lecture_assets_test`(3) + `markdown_link_href_test`(3) + `markdown_doc_contrast_test`(5)。 ## ⚠️ 已知问题(Known Issues) - 紫微 / 八字 2 项既有测试失败(同上),与本次改动无关,待专项修复。 - 新建书签文件夹弹窗关闭的 UI 测试失败,与本次改动无关,待查。 - 伤寒论 / 金匮条文按原稿自动切分,个别条目名沿用原文序号写法(如「二七七」);阅读与跳转不受影响。