feat(asl): Complete Tool 4 SR Chart Generator and Tool 5 Meta Analysis Engine

Tool 4 - SR Chart Generator:
- PRISMA 2020 flow diagram with Chinese/English toggle (SVG)
- Baseline characteristics table (Table 1)
- Dual data source: project pipeline API + Excel upload
- SVG/PNG export support
- Backend: ChartingService with Prisma aggregation
- Frontend: PrismaFlowDiagram, BaselineTable, DataSourceSelector

Tool 5 - Meta Analysis Engine:
- 3 data types: HR (metagen), dichotomous (metabin), continuous (metacont)
- Random and fixed effects models
- Multiple effect measures: HR / OR / RR
- Forest plot + funnel plot (base64 PNG from R)
- Heterogeneity statistics: I2, Q, p-value, Tau2
- Data input via Excel upload or project pipeline
- R Docker image updated with meta package (13 tools total)
- E2E test: 36/36 passed
- Key fix: exp() back-transformation for log-scale ratio measures

Also includes:
- IIT CRA Agent V3.0 routing and AI chat page integration
- Updated ASL module status guide (v2.3)
- Updated system status guide (v6.3)
- Updated R statistics engine guide (v1.4)

Tested: Frontend renders correctly, backend APIs functional, E2E tests passed
Made-with: Cursor
This commit is contained in:
2026-02-26 21:51:02 +08:00
parent 7c3cc12b2e
commit 205932bb3f
30 changed files with 3596 additions and 114 deletions

View File

@@ -1,12 +1,13 @@
# AIclinicalresearch 系统当前状态与开发指南
> **文档版本:** v6.2
> **文档版本:** v6.3
> **创建日期:** 2025-11-28
> **维护者:** 开发团队
> **最后更新:** 2026-02-26
> **🎉 重大里程碑:**
> - **🆕 2026-02-26ASL 工具 4 SR 图表生成器 + 工具 5 Meta 分析引擎开发完成!** PRISMA 流程图(中英切换)+ 基线特征表 + Meta 分析HR/二分类/连续型)+ 森林图/漏斗图 + R Docker meta 包 + E2E 36/36 通过
> - **🆕 2026-02-26CRA Agent V3.0 P0+P1 全部完成!** 自驱动质控流水线 + ChatOrchestrator + LLM Function Calling + E2E 54/54 通过
> - **🆕 2026-02-24ASL 工具 3 V2.0 架构升级至散装派发 + Aggregator** 9 条研发红线 + 散装派发与轮询收口任务模式指南 v1.1 沉淀
> - **2026-02-24ASL 工具 3 V2.0 架构升级至散装派发 + Aggregator** 9 条研发红线 + 散装派发与轮询收口任务模式指南 v1.1 沉淀
> - **2026-02-23ASL 工具 3 V2.0 开发计划完成!** HITL + 动态模板 + M1/M2/M3 三阶段 22 天
> - **🆕 2026-02-23ASL Deep Research V2.0 核心功能完成!** SSE 实时流 + 段落化思考 + 瀑布流 UI + Markdown 渲染 + 引用链接可见 + Word 导出 + 中文数据源
> - **🆕 2026-02-22SSA Phase I-IV 开发完成!** Session 黑板 + 对话层 LLM + 方法咨询 + 对话驱动分析E2E 107/107 通过
@@ -29,17 +30,13 @@
> - **2026-01-24Protocol Agent 框架完成!** 可复用Agent框架+5阶段对话流程
> - **2026-01-22OSS 存储集成完成!** 阿里云 OSS 正式接入平台基础层
>
> **🆕 最新进展ASL 工具 3 架构升级 + V2.0 核心完成 2026-02-24**
> - 📋 **🆕 ASL 工具 3 V2.0 架构升级至散装派发 + Aggregator** — 废弃 Fan-out采用散装模式v2.0 定稿9 条研发红线M1/M2/M3 三阶段 22 天)
> - 📋 **🆕 散装派发与轮询收口任务模式指南 v1.1** — Postgres-Only 合规的 Level 2 批量任务处理模式API 散装 → N Worker → Aggregator 收口)
> - 📋 **分布式 Fan-out 任务模式开发指南** — Level 3 参考8 模式 + 18 反模式,已不用于 ASL 工具 3
> - ✅ **🎉 ASL Deep Research V2.0 核心功能完成** — SSE 流式架构 + 瀑布流 UI + HITL + 5 精选数据源 + Word 导出
> - ✅ **SSE 流式替代轮询** — 实时推送 AI 思考过程reasoning_content段落化日志聚合
> - ✅ **Markdown 渲染 + 引用链接可见化** — react-markdown 正确渲染报告,`[6]` 后显示完整 URL
> - ✅ **中文数据源专项测试** — CNKI/中华医学期刊网 domain_scope 有效,混合源建议分批搜索
> - ✅ **DeepSearch 通用能力指南 v2.0** — `docs/02-通用能力层/04-DeepResearch引擎/`
> - ✅ **🎉 SSA Phase I-IV 全部开发完成** — Session 黑板 + 意图路由器 + 对话层 LLM + 方法咨询 + AskUser 标准化 + 对话驱动分析 + QPER 集成
> - ✅ **SSA E2E 测试全部通过** — Phase I 31/31 + Phase II 38/38 + Phase III 13/13 + Phase IV 25/25 = 共 107 项
> **🆕 最新进展ASL 工具 4+5 开发完成 2026-02-26**
> - **🎉🆕 ASL 工具 4 SR 图表生成器完成** — PRISMA 2020 流程图(中英切换)+ 基线特征表 + 双通道数据源(项目流水线/Excel+ SVG/PNG 导出
> - **🎉🆕 ASL 工具 5 Meta 分析引擎完成** — HR/二分类/连续型 3 种数据类型 + 随机/固定效应模型 + 森林图/漏斗图 + R Docker meta 包 + E2E 36/36 通过
> - **🆕 R Docker 镜像更新** — 新增 meta 包,工具总数从 12 增至 13ST_META_ANALYSIS
> - ✅ **🎉 ASL 工具 3 M1+M2 开发完成** — 散装派发+Aggregator + MinerU VLM + XML Prompt + HITL 审核抽屉 + Excel 导出
> - ✅ **🎉 SSA Phase I-IV 全部开发完成** — Session 黑板 + 意图路由器 + 对话层 LLM + 方法咨询 + QPER 集成E2E 107/107
> - ✅ **🎉 CRA Agent V3.0 P0+P1 完成** — ChatOrchestrator + LLM Function Calling + 4 工具 + E2E 54/54
>
> **部署状态:** ✅ 生产环境运行中 | 公网地址http://8.140.53.236/
> **REDCap 状态:** ✅ 生产环境运行中 | 地址https://redcap.xunzhengyixue.com/
@@ -77,7 +74,7 @@
|---------|---------|---------|---------|---------|--------|
| **AIA** | AI智能问答 | 12个智能体 + Protocol Agent全流程方案 | ⭐⭐⭐⭐⭐ | 🎉 **V3.1 MVP完整交付90%** - 一键生成+Word导出 | **P0** |
| **PKB** | 个人知识库 | RAG问答、私人文献库 | ⭐⭐⭐ | 🎉 **Dify已替换自研RAG上线95%** | P1 |
| **ASL** | AI智能文献 | 文献筛选、Deep Research、全文智能提取 | ⭐⭐⭐⭐⭐ | 🎉 **V2.0 核心完成(80%+ 🆕工具3计划v2.0就绪** - SSE流式+瀑布流UI+HITL+Word导出+散装派发+Aggregator+动态模板 | **P0** |
| **ASL** | AI智能文献 | 文献筛选、Deep Research、全文智能提取、SR图表、Meta分析 | ⭐⭐⭐⭐⭐ | 🎉 **V2.0 核心完成(90%+ 🆕工具4+5完成** - SSE流式+瀑布流UI+HITL+Word导出+散装派发+PRISMA流程图+Meta分析引擎(R Docker) | **P0** |
| **DC** | 数据清洗整理 | ETL + 医学NER百万行级数据 | ⭐⭐⭐⭐⭐ | ✅ **Tool B完成 + Tool C 99%(异步架构+性能优化-99%+多指标转换+7大功能** | **P0** |
| **IIT** | IIT Manager Agent | CRA Agent - LLM Tool Use + 自驱动质控 + 统一驾驶舱 | ⭐⭐⭐⭐⭐ | 🎉 **V3.0 P0+P1完成** ChatOrchestrator + 4工具 + E2E 54/54 | **P1-2** |
| **SSA** | 智能统计分析 | **QPER架构** + 四层七工具 + 对话层LLM + 意图路由器 | ⭐⭐⭐⭐⭐ | 🎉 **Phase I-IV 开发完成** — QPER闭环 + Session黑板 + 意图路由 + 对话LLM + 方法咨询 + 对话驱动分析E2E 107/107 | **P1** |
@@ -169,9 +166,40 @@
---
## 🚀 当前开发状态2026-02-23
## 🚀 当前开发状态2026-02-26
### 🎉 最新进展ASL Deep Research V2.0 核心功能完成2026-02-23
### 🎉 最新进展ASL 工具 4 + 工具 5 开发完成2026-02-26
#### ✅ ASL 工具 4 SR 图表生成器 + 工具 5 Meta 分析引擎
**重大里程碑ASL 证据整合工具链(工具 3→4→5核心功能全部完成**
| 工具 | 核心功能 | 技术实现 | 状态 |
|------|---------|---------|------|
| 工具 4SR 图表生成器 | PRISMA 2020 流程图(中英切换)| 前端 SVG 渲染 + I18N | ✅ |
| 工具 4SR 图表生成器 | 基线特征表Table 1 | Ant Design 动态列 | ✅ |
| 工具 4SR 图表生成器 | 双通道数据源 | 项目流水线 API + Excel 上传 | ✅ |
| 工具 5Meta 分析引擎 | HR / 二分类 / 连续型 | R meta 包metagen/metabin/metacont | ✅ |
| 工具 5Meta 分析引擎 | 森林图 + 漏斗图 | R base64 PNG | ✅ |
| 工具 5Meta 分析引擎 | 异质性统计量 | I²、Q、p、Tau² | ✅ |
| 工具 5Meta 分析引擎 | 数据输入 | Excel 上传 + 项目流水线 | ✅ |
| 工具 5Meta 分析引擎 | E2E 测试 | 36/36 通过HR/OR/RR/连续型/边界情况) | ✅ |
**关键技术决策**
-**R Docker 集成**meta 包安装到 R Docker 镜像Brain-Hand 架构复用 SSA 基础设施
-**Log 尺度回转**meta 包返回 log 尺度 HR/OR/RRR 脚本内 exp() 回转
-**Excel 优先输入**:用户下载 Excel 模板编辑数据后上传,避免浏览器内编辑表格的复杂度
-**PRISMA 中英切换**I18N 对象驱动,默认中文(面向国内医生),英文用于 SCI 论文
**新增 API 端点**5 个(工具 4: 2 个 + 工具 5: 3 个)
**新增前端路由**2 个(`/charting` + `/meta-analysis`
**R Docker 更新**meta 包新增,工具总数 13
**相关文档**
- 模块状态:`docs/03-业务模块/ASL-AI智能文献/00-模块当前状态与开发指南.md`
- R 引擎指南:`docs/02-通用能力层/06-R统计引擎/01-R统计引擎架构与部署指南.md`
### 🎉 ASL Deep Research V2.0 核心功能完成2026-02-23
#### ✅ ASL Deep Research V2.0 核心开发完成
@@ -1510,7 +1538,7 @@ npm run dev # http://localhost:3000
### 模块完成度
-**已完成**AIA V2.085%核心功能完成、平台基础层100%、RVW95%、通用能力层升级100%)、**PKB95%Dify已替换** 🎉
- 🚧 **开发中****ASL80%,🎉 V2.0 核心功能完成SSE流式+瀑布流UI+HITL+Word导出+中文数据源**、DCTool C 98%Tool B后端100%Tool B前端0%、IIT60%Phase 1.5完成)、**SSAQPER主线100% + Phase I-IV 全部完成E2E 107/107Phase VI 待启动)** 🎉
- 🚧 **开发中****ASL90%,🎉 工具3 M1+M2 + 工具4 + 工具5 完成PRISMA图+Meta分析+R Docker**、DCTool C 98%Tool B后端100%Tool B前端0%、IIT60%Phase 1.5完成)、**SSAQPER主线100% + Phase I-IV 全部完成E2E 107/107Phase VI 待启动)** 🎉
- 📋 **未开始**ST
### 部署完成度
@@ -1660,9 +1688,9 @@ if (items.length >= 50) {
---
**文档版本**v6.1
**最后更新**2026-02-23
**本次更新**ASL Deep Research V2.0 核心功能完成SSE流式+段落化思考+引用链接可见化+瀑布流UI+Word导出+中文数据源
**文档版本**v6.3
**最后更新**2026-02-26
**本次更新**ASL 工具 4 SR 图表生成器 + 工具 5 Meta 分析引擎开发完成PRISMA 中英切换 + Meta 分析 HR/二分类/连续型 + R Docker meta 包 + E2E 36/36
---

View File

@@ -1,9 +1,9 @@
# R 统计引擎架构与部署指南
> **版本:** v1.3
> **更新日期:** 2026-02-22
> **维护者:** SSA-Pro 开发团队
> **状态:** ✅ 生产就绪(Phase Deploy 完成 — 12 工具 + Block-based 标准化输出)
> **版本:** v1.4
> **更新日期:** 2026-02-26
> **维护者:** SSA-Pro 开发团队 / ASL 循证工具箱团队
> **状态:** ✅ 生产就绪(13 工具 + Block-based 标准化输出 — 新增 Meta 分析引擎
---
@@ -42,11 +42,11 @@ R 统计引擎是平台的**专用统计计算服务**,基于 Docker 容器化
┌─────────────────────────────────────────────────────────────┐
│ 业务模块层 │
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ │
│ │ SSA-Pro │ │ 其他 │ │ 其他 │ │
│ │ 智能统计 │ │ 模块 │ │ 模块 │ │
│ └────┬────┘ └────────┘ └─────────┘ │
├───────┼────────────────────────────────────────────────────┤
│ ▼ 通用能力层
│ │ SSA-Pro │ │ ASL │ │ 其他 │ │
│ │ 智能统计 │ │Meta分析 │ │ 模块 │ │
│ └────┬────┘ └────────┘ └─────────┘ │
├───────┼────────────────────────────────────────────────────┤
│ ▼ 通用能力层
│ ┌─────────────────────────────────────────────────────┐ │
│ │ R 统计引擎 (Docker) │ │
│ │ • /health 健康检查 │ │
@@ -68,6 +68,7 @@ R 统计引擎是平台的**专用统计计算服务**,基于 Docker 容器化
| gtsummary | 最新 | 基线特征表生成Phase Deploy 新增) |
| gt/broom | 最新 | 表格渲染/模型整理Phase Deploy 新增) |
| scales/gridExtra | 最新 | 坐标轴格式化/多图排版Phase Deploy 新增) |
| meta | 8.2.1 | Meta 分析引擎ASL 工具 5 新增 — metagen/metabin/metacont |
| Docker | 24+ | 容器化部署 |
---
@@ -187,7 +188,7 @@ RUN apt-get update && apt-get install -y \
curl \
&& rm -rf /var/lib/apt/lists/*
# 直接安装 R 包(含 Phase Deploy 新增依赖)
# 直接安装 R 包(含 Phase Deploy + ASL Meta 分析依赖)
RUN R -e "install.packages(c( \
'plumber', \
'jsonlite', \
@@ -203,7 +204,8 @@ RUN R -e "install.packages(c( \
'gridExtra', \
'gtsummary', \
'gt', \
'broom' \
'broom', \
'meta' \
), repos='https://cloud.r-project.org/', Ncpus=2)"
# 安全加固:创建非特权用户
@@ -273,8 +275,8 @@ ssa-r-statistics 1.0.1 xxxxxxxxxxxx x minutes ago 1.81GB
|------|------|
| 基础镜像下载 | ~2 分钟(首次) |
| 系统依赖安装 | ~1 分钟 |
| R 包安装15含 gtsummary/gt | ~10 分钟 |
| **总计** | **~13 分钟** |
| R 包安装16含 gtsummary/gt/meta | ~15 分钟 |
| **总计** | **~17 分钟** |
---
@@ -378,7 +380,7 @@ GET /health
"timestamp": "2026-02-19 08:00:00",
"version": "1.0.1",
"dev_mode": true,
"tools_loaded": 1
"tools_loaded": 13
}
```
@@ -402,15 +404,16 @@ GET /api/v1/tools
"linear_reg",
"logistic_binary",
"mann_whitney",
"meta_analysis",
"t_test_ind",
"t_test_paired",
"wilcoxon"
],
"count": 12
"count": 13
}
```
#### 已实现的统计工具12 个)
#### 已实现的统计工具13 个)
**Phase 2A 基础工具7 个)**
@@ -434,6 +437,14 @@ GET /api/v1/tools
| `ST_LINEAR_REG` | 线性回归 | 连续结局多因素分析 |
| `ST_BASELINE_TABLE` | 基线特征表(复合工具) | 基于 gtsummary 的一键式基线表生成 |
**ASL 循证工具箱新增1 个)**
| tool_code | 名称 | 场景 | 调用方 |
|-----------|------|------|--------|
| `ST_META_ANALYSIS` | Meta 分析引擎 | HR / 二分类 / 连续型 Meta 分析,生成森林图 + 漏斗图 | ASL 工具 5 |
> **跨模块复用说明:** `ST_META_ANALYSIS` 由 ASL 模块(工具 5Meta 分析引擎)引入,后端代理位于 `backend/src/modules/asl/meta-analysis/`,使用 `inline` 数据协议Meta 分析通常 5-30 个研究,数据量极小)。该工具同样可被 SSA 或其他模块复用。
### 5.3 执行技能
```http
@@ -593,6 +604,79 @@ Content-Type: application/json
> **特点:** `ST_BASELINE_TABLE` 是复合工具,基于 `gtsummary::tbl_summary()` 自动判断变量类型(连续/分类、选择统计方法T 检验/Mann-Whitney/卡方/Fisher输出标准三线表。`report_blocks[0].metadata.is_baseline_table = true` 触发前端特殊渲染P 值标星、rowspan 合并行)。
### 5.6 Meta 分析示例ASL 工具 5 — v1.4 新增)
```http
POST /api/v1/skills/ST_META_ANALYSIS
Content-Type: application/json
```
**请求体HR 数据类型):**
```json
{
"data_source": {
"type": "inline",
"data": [
{"study_id": "Gandhi 2018", "hr": 0.49, "lower_ci": 0.38, "upper_ci": 0.64},
{"study_id": "Socinski 2018", "hr": 0.56, "lower_ci": 0.45, "upper_ci": 0.70},
{"study_id": "West 2019", "hr": 0.60, "lower_ci": 0.45, "upper_ci": 0.80}
]
},
"params": {
"data_type": "hr",
"model": "random"
}
}
```
**支持的 3 种数据类型:**
| data_type | 必需列 | R 函数 | 效应指标 |
|-----------|--------|--------|----------|
| `hr` | `study_id`, `hr`, `lower_ci`, `upper_ci` | `meta::metagen()` | HR |
| `dichotomous` | `study_id`, `events_e`, `total_e`, `events_c`, `total_c` | `meta::metabin()` | OR / RR / RD |
| `continuous` | `study_id`, `mean_e`, `sd_e`, `n_e`, `mean_c`, `sd_c`, `n_c` | `meta::metacont()` | MD |
**params 参数:**
| 参数 | 类型 | 默认值 | 说明 |
|------|------|--------|------|
| `data_type` | string | 必填 | `"hr"` / `"dichotomous"` / `"continuous"` |
| `model` | string | `"random"` | `"random"` (DerSimonian-Laird) / `"fixed"` |
| `effect_measure` | string | 自动 | 仅二分类有效:`"OR"` / `"RR"` / `"RD"` |
**成功响应(核心字段):**
```json
{
"status": "success",
"results": {
"pooled_effect": 0.5948,
"pooled_lower": 0.5255,
"pooled_upper": 0.6733,
"pooled_pvalue": 0.0,
"i_squared": 15.4,
"tau_squared": 0.0031,
"q_statistic": 4.73,
"q_pvalue": 0.316,
"k_studies": 3,
"effect_measure": "HR",
"model": "Random Effects"
},
"plots": [
"data:image/png;base64,...(森林图)",
"data:image/png;base64,...(漏斗图)"
],
"report_blocks": [
{"type": "key_value", "title": "Meta-Analysis Summary", "items": [...]},
{"type": "image", "title": "Forest Plot", "data": "..."},
{"type": "image", "title": "Funnel Plot", "data": "..."},
{"type": "markdown", "title": "Heterogeneity Assessment", "content": "..."}
]
}
```
> **重要实现细节 — 对数尺度反变换:** `meta` R 包对比值类效应量HR / OR / RR的内部计算在**对数尺度**上进行,即 `TE.random` 返回的是 `log(HR)` 而非 HR。`meta_analysis.R` 在结果提取阶段对比值类指标自动执行 `exp()` 反变换,确保 API 返回临床可读的效应量(如 HR = 0.59 而非 log(HR) = -0.52。连续型指标MD无需反变换。
---
## 6. 开发指南
@@ -798,6 +882,7 @@ blocks[[length(blocks) + 1]] <- make_markdown_block("两组差异具有统计学
| `ST_WILCOXON` | `before_var`, `after_var` | — |
| `ST_LINEAR_REG` | `outcome_var`, `predictors` (数组) | `confounders` (数组) |
| `ST_BASELINE_TABLE` | `group_var` | `analyze_vars` (数组,不传则自动全选) |
| `ST_META_ANALYSIS` | `data_type` (`hr` / `dichotomous` / `continuous`) | `model` (`random` / `fixed`)、`effect_measure` (二分类: `OR` / `RR` / `RD`) |
### 6.6 R 语言陷阱速查(从实际 Bug 中总结)
@@ -921,6 +1006,23 @@ cd r-statistics-service
docker-compose restart
```
#### 陷阱 8`meta` 包返回对数尺度效应量v1.4 新增)
**现象:** Meta 分析返回 HR = -0.52,但期望 HR ≈ 0.59
**原因:** `meta` R 包的 `metagen()`/`metabin()` 对比值类效应量HR、OR、RR在**对数尺度**上计算。`TE.random`/`TE.fixed` 返回的是 `log(HR)``log(OR)`,而非原始比值。
```r
# ❌ 错误:直接返回 TE对数尺度
pooled_effect = ma_result$TE.random # 返回 -0.52(这是 log(HR)
# ✅ 正确:对比值类指标做 exp() 反变换
is_ratio <- sm_label %in% c("HR", "OR", "RR")
display_te <- if (is_ratio) exp(pooled_te) else pooled_te # 返回 0.59(真实 HR
```
**影响范围:**`meta_analysis.R`不影响其他统计工具。连续型指标MD无需反变换。
### 6.7 开发环境新增 R 包
当新工具依赖尚未安装的 R 包时,有两种方式:
@@ -1156,7 +1258,7 @@ curl -s -X POST "http://localhost:8082/api/v1/skills/ST_T_TEST_IND" \
curl -s http://localhost:8082/health | jq
```
### 9.3 R 工具集中测试脚本12 工具 + JIT
### 9.3 R 工具集中测试脚本13 工具 + JIT
项目提供了 R 统计引擎的全工具测试脚本:
@@ -1166,7 +1268,7 @@ node r-statistics-service/tests/run_all_tools_test.js
```
测试覆盖:
- 12 个统计工具Phase 2A × 7 + Phase Deploy × 5
- 13 个统计工具Phase 2A × 7 + Phase Deploy × 5 + ASL × 1
- JIT 护栏检查ST_T_TEST_IND / ST_ANOVA_ONE / ST_FISHER / ST_LINEAR_REG
- `report_blocks` 协议校验类型、必填字段、metadata
@@ -1180,17 +1282,44 @@ node run_e2e_test.js
```
测试覆盖:
- Layer 1: R 服务12 个统计工具 + JIT 护栏)
- Layer 1: R 服务13 个统计工具 + JIT 护栏)
- Layer 2: Python DataProfile API
- Layer 3: Node.js 后端 API登录 → 会话 → 规划 → 执行)
### 9.5 Meta 分析引擎专项 E2E 测试v1.4 新增)
覆盖 Meta 分析的完整链路Node.js → R Docker → 森林图/漏斗图生成):
```bash
cd backend
npx tsx src/modules/asl/meta-analysis/__tests__/meta-e2e-test.ts
```
测试覆盖8 个测试项36 个断言):
- R 服务健康检查 + meta_analysis 工具注册验证
- HR 风险比 Meta 分析5 个研究,随机效应)
- 二分类 OR Meta 分析4 个研究)
- 二分类 RR Meta 分析(效应指标切换)
- 连续型 MD Meta 分析5 个研究)
- 固定效应模型切换
- 边界条件:仅 1 个研究(应返回错误)
- 森林图 + 漏斗图 Base64 PNG 生成验证
最近一次测试结果2026-02-26
```
Results: 36 passed, 0 failed (1.3s)
HR = 0.5948 [0.5255, 0.6733], I² = 15.4%
OR = 0.4530 [0.3328, 0.6166], p < .001
MD = -1.4923 [-1.9098, -1.0749], I² = 70%
```
---
## 附录:文件结构
```
r-statistics-service/
├── Dockerfile # 生产镜像定义(含 gtsummary/gt/broom/scales/gridExtra
├── Dockerfile # 生产镜像定义(含 gtsummary/gt/broom/scales/gridExtra/meta
├── docker-compose.yml # 开发环境编排(含 volume 挂载)
├── renv.lock # R 包版本锁定(备用)
├── .Rprofile # R 启动配置(备用)
@@ -1201,7 +1330,7 @@ r-statistics-service/
│ ├── error_codes.R # 错误映射
│ ├── result_formatter.R # 结果格式化
│ └── block_helpers.R # Block-based 输出辅助函数Phase E+ 协议)
├── tools/ # 统计工具12 个)
├── tools/ # 统计工具13 个)
│ ├── t_test_ind.R # 独立样本 T 检验
│ ├── t_test_paired.R # 配对 T 检验
│ ├── mann_whitney.R # Mann-Whitney U 检验
@@ -1213,7 +1342,8 @@ r-statistics-service/
│ ├── anova_one.R # 🆕 单因素方差分析Phase Deploy
│ ├── wilcoxon.R # 🆕 Wilcoxon 符号秩检验Phase Deploy
│ ├── linear_reg.R # 🆕 线性回归Phase Deploy
── baseline_table.R # 🆕 基线特征表 — 复合工具Phase Deploy
── baseline_table.R # 🆕 基线特征表 — 复合工具Phase Deploy
│ └── meta_analysis.R # 🆕 Meta 分析引擎 — HR/二分类/连续型ASL 工具 5
├── tests/
│ ├── run_all_tools_test.js # 🆕 全工具自动化测试12 工具 + JIT + blocks 校验)
│ ├── test_t_test.json # T 检验测试数据
@@ -1234,6 +1364,7 @@ r-statistics-service/
| 版本 | 日期 | 更新内容 |
|------|------|----------|
| v1.4 | 2026-02-26 | ASL Meta 分析引擎:工具 12→13+ST_META_ANALYSISDockerfile 新增 `meta` 包,新增 §5.6 Meta 分析 API 示例、陷阱 8对数尺度反变换、§9.5 Meta E2E 测试36 断言全通过),架构图更新 ASL 调用方 |
| v1.3 | 2026-02-22 | 开发者体验增强:新工具模板补全 report_blocks§6.1)、各工具 params 速查表§6.5、R 语言 7 大陷阱实录§6.6)、新增 R 包操作指南§6.7)、新增 Q11-Q13 常见问题 |
| v1.2 | 2026-02-22 | Phase Deploy 完成:工具 7→12+Fisher/ANOVA/Wilcoxon/线性回归/基线表、Dockerfile 新增 gtsummary 等 5 包、Block-based 输出协议文档化§6.4)、全工具测试脚本 |
| v1.1 | 2026-02-20 | Phase 2A 完成7 个统计工具、JIT 护栏、热重载说明、常见问题补充 |

View File

@@ -1,11 +1,12 @@
# AI智能文献模块 - 当前状态与开发指南
> **文档版本:** v2.2
> **文档版本:** v2.3
> **创建日期:** 2025-11-21
> **维护者:** AI智能文献开发团队
> **最后更新:** 2026-02-25 🆕 **工具 3 M1 骨架管线 + M2 HITL 工作台开发完成!**
> **最后更新:** 2026-02-26 🆕 **工具 4 SR 图表生成器 + 工具 5 Meta 分析引擎开发完成!**
> **重大进展:**
> - 🆕 2026-02-25**工具 3 M1+M2 开发完成!** 散装派发+Aggregator 全链路、MinerU 集成、XML Prompt 隔离、fuzzyQuoteMatch 溯源、HITL 审核抽屉、Excel 导出、数据归一化修复
> - 🆕 2026-02-26**工具 4 + 工具 5 开发完成!** PRISMA 流程图(中英切换)+ 基线特征表 + Meta 分析引擎HR/二分类/连续型 + 森林图/漏斗图)+ R Docker meta 包集成 + E2E 36/36 通过
> - 2026-02-25**工具 3 M1+M2 开发完成!** 散装派发+Aggregator 全链路、MinerU 集成、XML Prompt 隔离、fuzzyQuoteMatch 溯源、HITL 审核抽屉、Excel 导出、数据归一化修复
> - 2026-02-24工具 3 V2.0 架构升级Fan-out → 散装派发 + Aggregator 轮询收口,通用模式指南 v1.1 沉淀
> - 2026-02-23V2.0 核心功能完成SSE 流式架构 + 段落化思考日志 + 引用链接可见化
> - 2026-02-22V2.0 前后端联调完成!瀑布流 UI + Markdown 渲染 + Word 导出 + 中文数据源测试
@@ -32,15 +33,17 @@
AI智能文献模块是一个基于大语言模型LLM的文献筛选系统用于帮助研究人员根据PICOS标准自动筛选文献。
### 当前状态
- **开发阶段**:🎉 工具 3 M1+M2 开发完成M3 待启动
- **开发阶段**:🎉 工具 3 M1+M2 + 工具 4 + 工具 5 开发完成
- **已完成功能**
- ✅ 标题摘要初筛Title & Abstract Screening- 完整流程
- ✅ 全文复筛后端Day 2-5- LLM服务 + API + Excel导出
-**智能文献检索DeepSearchV1.x MVP** - unifuncs API 集成
-**Unifuncs API 网站覆盖测试** - 18 站点实测9 个一级可用
-**🎉 Deep Research V2.0 核心功能** — SSE 流式架构 + 瀑布流 UI + HITL + Word 导出
-**🆕 工具 3 M1 骨架管线** — 散装派发+Aggregator 全链路、PKB ACL 防腐层、DeepSeek-V3 纯文本盲提、3 步极简前端
-**🆕 工具 3 M2 HITL 工作台** — MinerU VLM 表格集成、XML Prompt 隔离、fuzzyQuoteMatch 溯源、SSE 实时日志、审核抽屉、Excel 宽表导出
-**工具 3 M1 骨架管线** — 散装派发+Aggregator 全链路、PKB ACL 防腐层、DeepSeek-V3 纯文本盲提、3 步极简前端
-**工具 3 M2 HITL 工作台** — MinerU VLM 表格集成、XML Prompt 隔离、fuzzyQuoteMatch 溯源、SSE 实时日志、审核抽屉、Excel 宽表导出
-**🆕 工具 4 SR 图表生成器** — PRISMA 2020 流程图(中英切换)+ 基线特征表 + 双通道数据源(项目流水线/Excel 上传)+ SVG/PNG 导出
-**🆕 工具 5 Meta 分析引擎** — HR/二分类/连续型 3 种数据类型 + 随机/固定效应模型 + 森林图+漏斗图 + R Docker meta 包集成 + E2E 36/36 通过
- **待开发**
- 📋 **工具 3 M3 动态模板引擎** — 自定义字段 CRUD、Prompt 注入防护、E2E 测试
- **V2.0 已完成**
@@ -245,6 +248,121 @@ GET /api/v1/asl/extraction/pkb/knowledge-bases/:kbId/documents # PKB 文档
| `extraction_tasks` | 提取任务idempotencyKey 幂等) |
| `extraction_results` | 单文档提取结果extractedData JSON + quoteVerification + reviewStatus |
### 🆕 工具 4 SR 图表生成器2026-02-26 开发完成)
**功能定位:** 基于工具 3 提取结果,一键生成 PRISMA 2020 流程图 + 基线特征表Table 1支持从项目流水线或 Excel 导入数据。
**开发状态:** ✅ 开发完成
**核心功能:**
| 功能 | 技术实现 | 状态 |
|------|---------|------|
| PRISMA 2020 流程图 | SVG 渲染,支持中英文切换 | ✅ |
| 基线特征表Table 1 | Ant Design Table 动态渲染 | ✅ |
| 双通道数据源 | 项目流水线API 聚合)+ Excel 上传 | ✅ |
| 图表导出 | SVG / PNG 导出 | ✅ |
| Excel 模板 | 下载标准模板 + 解析上传文件 | ✅ |
| 中英文切换 | PRISMA 图中英文 I18N默认中文 | ✅ |
**核心架构决策:**
| 决策 | 方案 |
|------|------|
| PRISMA 数据聚合 | 后端 Prisma `count` 聚合 aslLiterature / screeningResult / fulltextResult / extractionResult |
| 基线数据来源 | 后端查询 approved 的 extractionResultflattenModuleData 归一化 |
| 图表渲染 | 前端 SVG 组件,无第三方图表库依赖 |
| 中英切换 | I18N 对象 + lang prop + 切换按钮组 |
**新增 API 端点:**
```http
GET /api/v1/asl/charting/prisma-data/:projectId # PRISMA
GET /api/v1/asl/charting/baseline-data/:projectId # 线
```
**新增前端路由:**
```
/literature/charting # SR 图表生成器页面
```
**核心代码组件:**
| 组件 | 文件 | 说明 |
|------|------|------|
| 图表服务 | `charting/services/ChartingService.ts` | Prisma 聚合 + 基线数据提取 |
| 图表控制器 | `charting/controllers/ChartingController.ts` | 2 个 API 端点 |
| PRISMA 图 | `components/charting/PrismaFlowDiagram.tsx` | SVG 渲染 + I18N 中英切换 |
| 基线表 | `components/charting/BaselineTable.tsx` | Ant Design 动态列表格 |
| 数据源选择 | `components/charting/DataSourceSelector.tsx` | 项目流水线 / Excel 双通道 |
| Excel 工具 | `utils/chartingExcelUtils.ts` | 模板下载 + 解析 + 图表导出 |
| 主页面 | `pages/SRChartGenerator.tsx` | Tab 切换 PRISMA / 基线表 |
### 🆕 工具 5 Meta 分析引擎2026-02-26 开发完成)
**功能定位:** 定量 Meta 分析引擎,支持 HR / 二分类OR/RR/ 连续型数据,生成森林图 + 漏斗图 + 异质性统计量,基于 R Docker 服务meta 包)。
**开发状态:** ✅ 开发完成E2E 36/36 通过
**核心功能:**
| 功能 | 技术实现 | 状态 |
|------|---------|------|
| 3 种数据类型 | HRmetagen、二分类metabin、连续型metacont | ✅ |
| 2 种效应模型 | 随机效应DerSimonian-Laird+ 固定效应Inverse Variance | ✅ |
| 多效应量度 | HR / OR / RR二分类| ✅ |
| 森林图 | R meta::forest() → base64 PNG | ✅ |
| 漏斗图 | R meta::funnel() → base64 PNG | ✅ |
| 异质性统计 | I²、Q 统计量、p 值、Tau² | ✅ |
| 数据输入 | Excel 上传 + 项目流水线(工具 3 提取结果) | ✅ |
| 只读数据预览 | Ant Design Table 预览 + 数据验证 | ✅ |
| Excel 模板 | 3 种数据类型模板 + 示例数据 + 使用说明 | ✅ |
| R 代码可复现 | 返回可复现的 R 代码片段 | ✅ |
**核心架构决策:**
| 决策 | 方案 |
|------|------|
| 统计引擎 | R Docker 服务meta 包Brain-Hand 架构Node.js 编排R 执行) |
| 数据传输 | inline JSON小数据直传 |
| 效应量回转 | meta 包返回 log 尺度R 脚本内 exp() 回转为临床可解释值 |
| 前端数据输入 | Excel 上传(编辑后回传)或关联项目流水线自动提取 |
| 数据预览 | 只读 Ant Design Table不做浏览器内编辑 |
**新增 API 端点:**
```http
POST /api/v1/asl/meta-analysis/run # Meta
GET /api/v1/asl/meta-analysis/project-data/:projectId # 线
GET /api/v1/asl/meta-analysis/health # R
```
**新增前端路由:**
```
/literature/meta-analysis # Meta 分析引擎页面
```
**核心代码组件:**
| 组件 | 文件 | 说明 |
|------|------|------|
| R 分析脚本 | `r-statistics-service/tools/meta_analysis.R` | metagen/metabin/metacont + exp() 回转 + 森林图/漏斗图 |
| 后端服务 | `meta-analysis/services/MetaAnalysisService.ts` | R Docker 代理 + 项目数据提取 |
| 后端控制器 | `meta-analysis/controllers/MetaAnalysisController.ts` | 3 个 API 端点 |
| 结果面板 | `components/meta/ResultsPanel.tsx` | 汇总统计 + 图表展示 + R 代码 + 下载 |
| Excel 工具 | `utils/metaExcelUtils.ts` | 3 种模板生成 + 解析 + 验证 |
| 主页面 | `pages/MetaAnalysisEngine.tsx` | 3 步向导(数据输入→参数配置→分析结果) |
| E2E 测试 | `meta-analysis/__tests__/meta-e2e-test.ts` | 36 项测试全部通过 |
**R Docker 更新:**
- Dockerfile 新增 `meta` 包安装
- 镜像版本维持 `ssa-r-statistics:1.0.1`
- 工具总数从 12 增至 13新增 `ST_META_ANALYSIS`
- 详见 `docs/02-通用能力层/06-R统计引擎/01-R统计引擎架构与部署指南.md`
**关键技术点:**
1. **Log 尺度回转**meta 包对 HR/OR/RR 返回 log 尺度值R 脚本中使用 `exp()` 回转为临床可解释值
2. **R JSON 序列化**Plumber 默认会将单元素向量包装为数组,前端需要 `Array.isArray` 防御
3. **数据类型自动检测**:从 Excel 或项目数据自动推断 HR/二分类/连续型
### 智能文献检索 DeepSearch V1.x2026-01-18 MVP完成
**功能概述:**
@@ -1503,16 +1621,23 @@ Drawer打开: <50ms
3.**outcomes 模板匹配**:根据文献内容自动推荐 survival/continuous/dichotomous
4.**缺失字段补充**country、inclusion_criteria、primary_outcome 等M3 自定义字段支持)
### 工具 4/5 后续优化
1.**PRISMA 图数据自动关联**:自动读取项目各阶段实际计数,减少手动输入
2.**基线表统计检验**:自动计算 p 值、标准差等描述统计
3.**Meta 分析亚组分析**:支持 subgroup 分层分析
4.**Meta 分析敏感性分析**逐一剔除法Leave-one-out
5.**Meta 分析发表偏倚检验**Egger's test / Begg's test
6.**网状 Meta 分析NMA**netmeta 包集成
### 短期优化
1. ⏳ Deep Research V2.0 端到端回归测试
2. ⏳ 搜索历史管理(历史任务列表)
3. ⏳ 标题摘要初筛 Prompt 优化(准确率 60% → 85%+
### 中期Month 2-3
1. ⏳ 工具 4网状 Meta 分析)开发
2.工具 5证据质量评价 GRADE开发
3.生产环境部署
4. ⏳ 证据图谱可视化
1. ⏳ 工具 6证据质量评价 GRADE)开发
2.生产环境部署
3.证据图谱可视化
---
@@ -1522,15 +1647,15 @@ Drawer打开: <50ms
---
**最后更新**2026-02-25(工具 3 M1+M2 开发完成 + 数据归一化修复
**最后更新**2026-02-26(工具 4 SR 图表生成器 + 工具 5 Meta 分析引擎开发完成
**文档状态**:✅ 反映真实状态
**下次更新时机**:工具 3 M3 动态模板引擎开发完成
**下次更新时机**:工具 3 M3 动态模板引擎开发完成 或 工具 6 GRADE 开发完成
**本次更新内容**v2.2
- ✅ 工具 3 M1 骨架管线完成:散装派发+Aggregator、PKB ACL、纯文本盲提、3步极简前端
- ✅ 工具 3 M2 HITL 工作台完成MinerU 集成、XML Prompt 隔离、fuzzyQuoteMatch、SSE 日志、审核抽屉、Excel 导出
-M2 关键修复DynamicPromptBuilder 扁平输出、ExcelExporter 数据归一化、Schema-driven 前端
-新增工具 3 API 端点12 个、前端路由3 个、数据库表4 个)
- ✅ 更新下一步计划:M3 动态模板引擎 + RoB 增强 + 后续工具 4/5
**本次更新内容**v2.3
- ✅ 工具 4 SR 图表生成器完成PRISMA 2020 流程图(中英切换)+ 基线特征表 + 双通道数据源 + SVG/PNG 导出
- ✅ 工具 5 Meta 分析引擎完成HR/二分类/连续型 + 随机/固定效应模型 + 森林图/漏斗图 + R Docker meta 包 + E2E 36/36 通过
-新增工具 4 API 端点2 个)、工具 5 API 端点3 个、前端路由2 个)
-R Docker 镜像更新:新增 meta 包,工具总数 13
- ✅ 更新下一步计划:工具 4/5 后续优化 + 工具 6 GRADE