本项目是一个专为医院信息集成平台如基于 Apache Camel、Spring Integration 或东方通 TongE2G/TongWeb 的 ESB 系统设计的消息血缘追踪工具。它不依赖特定厂商中间件接口而是从原始运行日志出发自动构建消息在各服务节点间的流转路径形成可查询、可回放、可导出的结构化血缘档案。核心机制是以 message ID 和 correlation ID 为关联主键将非结构化日志统一解析为带时序与上下文的消息条目再通过 NetworkX 构建有向无环图DAG并内置循环检测、最短路径计算、字段级差异比对与敏感数据脱敏能力。交付形态覆盖 CLI 命令行Python Typer TypeScript/Node.js 双实现、SQLite 本地存储、交互式 HTML 可视化vis-network 渲染、FastAPI HTTP API 及 Docker 容器化部署。技术栈明确限定为 Python 3.10负责解析、建模、存储与 TypeScript/Node.js 18负责 CLI 调用封装与前端渲染所有功能模块均围绕医疗集成场景中真实存在的日志格式、转换规则与质控需求展开。定位与能力范围我们不做通用日志分析平台也不对接数据库变更日志或应用埋点。本项目的边界非常清晰只处理医院 ESB/集成平台产生的运行期消息流转日志目标是还原“一条患者检验申请从HIS发出经路由、协议转换、字段映射、适配器调用最终抵达LIS”的完整链路。这意味着它天然服务于三类人一是集成工程师需要快速定位某次失败消息卡在哪一跳二是信息科质控人员需验证转换逻辑是否符合《医院信息互联互通标准化成熟度测评》中关于数据流向可追溯的要求三是第三方审计方在等保或电子病历评级现场要求提供指定业务消息的端到端血缘证据。它不替代日志采集系统如 Filebeat/Fluentd也不做实时流式血缘如 Apache Atlas而是聚焦离线批量分析你把当天的 Camel 日志、东方通 EASWay 日志或 JSON Lines 格式日志文件丢进来它就给你生成一份带时间戳、节点名、输入输出快照和字段差异的血缘报告。所有能力都围绕一个事实展开医院集成链路不是扁平服务调用而是多层嵌套的转换流水线而日志是唯一留存全链路证据的载体。核心功能本系统五大能力全部源自真实集成运维痛点不是技术炫技多源日志统一解析原生支持 Apache Camel/Spring Integration 结构化日志、东方通 TongE2G/TongWeb 私有格式、以及通用 JSON Lines 三种输入。每种解析器均实现detect_format方法支持--format auto自动识别。血缘图谱自动构建基于 NetworkX 构建消息级 DAG自动识别循环引用如因配置错误导致消息在两个适配器间反复跳转并提供shortest_path查询接口用于回答“HIS 到 LIS 最少经过几步”。医疗敏感字段默认脱敏在解析阶段即识别手机号、身份证号、银行卡号、金额类字段正则匹配 上下文关键词辅助输出时自动替换为***保障审计过程不泄露隐私。转换链路逐跳回放给定任意 message ID即可回溯其完整流转路径展示每一跳的输入 payload 与输出 payload并支持--diff参数高亮字段级变化例如patient_id未变、order_time被格式化、test_code被映射为新值。多格式血缘导出与可视化除 SQLite 本地存档外支持导出为交互式 HTML拖拽缩放搜索节点、标准 JSON供其他系统集成、Mermaid 流程图嵌入 Confluence 文档且可选包含样本数据便于演示。功能模块输入依据输出成果典型使用场景日志解析.log/.jsonl文件结构化消息条目含 message_id, endpoint, timestamp, input, output接入新上线的东方通集成项目日志血缘构建解析后的消息条目集合SQLite 中的lineage.db含 nodes/edges 表搭建院内集成血缘知识库底座转换回放message ID lineage.db终端逐跳打印输入/输出及 diff 高亮排查某条医保结算失败原因HTML 可视化lineage.dblineage.html含 vis-network 渲染向信息科主任汇报 HIS-LIS-RIS 三方集成拓扑API 服务lineage.db FastAPI/replay/{msg_id}等 REST 接口对接医院统一监控平台告警联动使用与配置所有操作均通过 CLI 驱动Python 与 TypeScript 两套入口完全等价可根据环境自由选择。安装仅需两步依赖pip install -r requirements.txt npm install实际使用分三阶段第一阶段构建血缘档案选择对应日志格式执行analyze输出lineage.dbpython -m lt_src.cli.main analyze \ --log-file data/sample_easway.log \ --format easway \ --output lineage.db成功后终端显示类似✅ 解析 142 条消息检测到 3 处循环路径已写入 lineage.db。第二阶段按需回放诊断用replay命令定位具体问题python -m lt_src.cli.main replay \ --message-id msg-78901 \ --storage-db lineage.db \ --diff \ --highlight order_status输出将清晰列出[1] HIS → Router: input.order_status“draft”, output.order_status“draft”→[2] Router → Adapter: input.order_status“draft”, output.order_status“submitted”。第三阶段交付与共享用export生成可交付物python -m lt_src.cli.main export \ --format html \ --output lineage_report \ --storage-db lineage.db \ --include-samples生成lineage_report/目录含index.html直接双击打开与配套数据文件。工程结构项目采用清晰分层架构Python 为血缘引擎核心TypeScript 为跨平台胶水层integration-lineage-tracker/ ├── lt_src/ # Python 主体解析、建模、存储、CLI │ ├── parsers/ # camel.py, easway.py, jsonl.py各实现 ParserProtocol │ ├── lineage/ # DAG 构建、循环检测、路径查询 │ ├── storage/ # SQLite CRUD 封装支持导入导出 │ └── cli/ # Typer 实现的 analyze/replay/export/serve 四命令 ├── src/ # TypeScript CLI调用 Python 子进程或提供独立 Node 实现 ├── templates/ # HTML 可视化模板含 vis-network 初始化脚本 └── data/ # 所有示例日志与规则sample_camel.log 等关键设计原则是解析器可插拔、存储可迁移、可视化可脱离。新增东方通新版本日志格式只需在parsers/下新增一个类实现三个方法注册进_detect_parser()即可想换 PostgreSQL改storage/下的后端实现要嵌入现有 Web 系统直接读取lineage.db或调用export --format json获取数据。环境与运行本系统对运行环境有明确约束避免“在我机器上能跑”陷阱环境组件要求说明Python3.10低版本不支持结构化模式匹配影响 JSON 解析健壮性Node.js18为兼容 TypeScript 5.x 与现代 fetch APISQLite内置无需额外安装开箱即用适合单机分析场景Docker可选提供 docker-compose.yml含 lineage-cli分析与 lineage-api服务两个 profile容器化使用极简docker-compose run --rm lineage-cli analyze \ --log-file /app/sample_data/sample_camel.log \ --format camel \ --output /app/data/lineage.db数据自动落盘至lineage-datavolume本地data/目录实时同步无需手动拷贝。数据与扩展所有数据均源于日志文件本身不引入外部元数据源。示例数据集data/是完整可用的最小闭环sample_camel.log含正常流转 人为注入的循环路径用于验证检测能力sample_easway.log东方通典型报文头 Base64 编码 payloadsample_generic.jsonl每行一个 JSON 对象含msg_id,from,to,input,output字段sample_rules.xslt与sample_mapping.json用于规则解析模块测试扩展新日志格式只需两步1. 在lt_src/parsers/新建my_vendor.py实现parse_file(),parse_line(),detect_format()2. 在lt_src/cli/main.py的_detect_parser()函数中添加判断逻辑。整个过程不改动核心引擎不重编译符合医疗 IT 系统对稳定性的硬性要求。项目地址https://github.com/nexorin9/integration-lineage-tracker