Files
AIclinicalresearch/docs/03-业务模块/SSA-智能统计分析/07-统计专家配置/统计专家配置清单与准备指南.md
HaHafeng f0736dbca1 feat(asl/extraction): Complete Tool 3 M1+M2 - skeleton pipeline and HITL workbench
M1 Skeleton Pipeline:
- Scatter-dispatch + Aggregator polling pattern (PgBoss)
- PKB ACL bridge (PkbBridgeService -> PkbExportService DTOs)
- ExtractionSingleWorker with DeepSeek-V3 LLM extraction
- PermanentExtractionError for non-retryable failures
- Phantom Retry Guard (idempotent worker)
- 3-step minimal frontend (Setup -> Progress -> Workbench)
- 4 new DB tables (extraction_templates, project_templates, tasks, results)
- 3 system templates seed (RCT, Cohort, QC)
- M1 integration test suite

M2 HITL Workbench:
- MinerU VLM integration for high-fidelity table extraction
- XML-isolated DynamicPromptBuilder with flat JSON output template
- fuzzyQuoteMatch validator (3-tier confidence scoring)
- SSE real-time logging via ExtractionEventBus
- Schema-driven ExtractionDrawer (dynamic field rendering from template)
- Excel wide-table export with flattenModuleData normalization
- M2 integration test suite

Critical Fixes (data normalization):
- DynamicPromptBuilder: explicit flat key-value output format with example
- ExtractionExcelExporter: handle both array and flat data formats
- ExtractionDrawer: schema-driven rendering instead of hardcoded fields
- ExtractionValidator: array-format quote verification support
- SSE route: Fastify register encapsulation to bypass auth for EventSource
- LLM JSON sanitizer: strip illegal control chars before JSON.parse

Also includes: RVW stats verification spec, SSA expert config guide

Tested: M1 pipeline test + M2 HITL test + manual frontend verification
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-25 18:29:20 +08:00

587 lines
27 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# SSA 智能统计分析 — 统计专家配置清单与准备指南
> **文档版本:** v1.0
> **创建日期:** 2026-02-23
> **目标读者:** 统计学专家 / 生物统计师
> **文档目的:** 系统性梳理 QPER 架构中所有需要统计学专家审核/配置的内容,便于专家提前准备
---
## 📋 目录
1. [系统架构概览](#1-系统架构概览)
2. [配置总览清单(一览表)](#2-配置总览清单)
3. [A 类:统计方法决策表](#3-a-类统计方法决策表)
4. [B 类:分析流程模板](#4-b-类分析流程模板)
5. [C 类R 统计工具](#5-c-类r-统计工具)
6. [D 类:工具参数约束表](#6-d-类工具参数约束表)
7. [E 类LLM Prompt 模板](#7-e-类llm-prompt-模板)
8. [F 类:意图识别规则](#8-f-类意图识别规则)
9. [G 类:统计工具注册表](#9-g-类统计工具注册表)
10. [当前状态与待办事项](#10-当前状态与待办事项)
11. [专家审核工作流程建议](#11-专家审核工作流程建议)
---
## 1. 系统架构概览
### QPER 四层架构
系统采用 **QPER** 四层流水线架构处理用户的统计分析请求:
```
用户:"比较两组血压有没有差别"
┌─ Q · Query意图理解──────────────────────────┐
│ LLM 解析用户意图 → 结构化查询 │
│ 需要配置:意图识别规则(F)、意图 Prompt(E) │
│ 输出goal=comparison, Y=SBP, X=Group, design=ind │
└──────────────────────┬─────────────────────────────┘
┌─ P · Planner方法规划───────────────────────────┐
│ 决策表匹配 → 流程模板填充 │
│ 需要配置:决策表(A)、流程模板(B)、工具注册表(G) │
│ 输出WorkflowPlan [step1: 描述统计, step2: T检验] │
└──────────────────────┬─────────────────────────────┘
┌─ E · ExecuteR引擎执行──────────────────────────┐
│ 调用 R 工具执行统计计算 │
│ 需要配置R 工具脚本(C)、参数约束(D) │
│ 输出StepResult[](含 P 值、统计量、效应量等) │
└──────────────────────┬─────────────────────────────┘
┌─ R · Reflection论文级结论──────────────────────┐
│ LLM 基于真实 R 引擎结果生成论文结论 │
│ 需要配置:结论 Prompt(E) │
│ 输出ConclusionReport含摘要、方法学、局限性
└────────────────────────────────────────────────────┘
```
### 核心原则
| 原则 | 说明 |
|------|------|
| **LLM 不做计算** | LLM 只负责意图理解、方案规划、结果解读,所有统计计算由 R 引擎完成 |
| **白盒透明** | 用户可以看到每一步做了什么、为什么、R 代码是什么 |
| **自动降级** | 不满足参数检验前提条件时,自动切换非参数方法 |
| **可审计** | 生成可在本地运行的 R 代码,支持结果复现 |
---
## 2. 配置总览清单
> 🟢 = 已配置完成 | 🟡 = 已配置但需专家审核/完善 | 🔴 = 未配置
| 类别 | 配置项 | 文件路径 | 当前状态 | 专家需做什么 |
|------|--------|----------|---------|-------------|
| **A. 决策表** | 统计方法选择规则11 条) | `config/decision_tables.json` | 🟡 | 审核匹配规则、降级条件、补充缺失场景 |
| **B. 流程模板** | 分析步骤编排5 个模板) | `config/flow_templates.json` | 🟡 | 审核步骤合理性、补充新模板 |
| **C. R 工具** | 统计计算脚本12 个) | `r-statistics-service/tools/*.R` | 🟡 | 审核统计方法正确性、护栏阈值 |
| **D. 参数约束** | 变量类型/水平约束12 工具) | `config/tool_param_constraints.json` | 🟡 | 审核约束条件minLevels/maxLevels 等) |
| **E. Prompt** | LLM 提示词12 个) | 数据库 + seed 脚本 | 🟡 | 审核统计术语准确性、Few-Shot 示例 |
| **F. 意图规则** | 意图识别关键词5 类) | `config/intent_rules.json` | 🟡 | 补充统计领域关键词 |
| **G. 工具注册表** | 工具元信息12 工具) | `config/tools_registry.json` | 🟡 | 审核工具描述、参数说明、前提条件 |
---
## 3. A 类:统计方法决策表
**文件:** `backend/src/modules/ssa/config/decision_tables.json`
### 作用
当系统理解了用户意图后Q 层输出 goal + outcomeType + predictorType + design通过此表进行 **四维匹配**,选出最适合的统计方法。
### 当前已配置的 11 条规则
| 规则 ID | 分析目标 | 结局类型 | 自变量类型 | 设计 | 主方法 | 降级方法 | 降级触发条件 |
|---------|---------|---------|-----------|------|--------|---------|-------------|
| `DIFF_CONT_BIN_IND` | comparison | continuous | binary | independent | T 检验 | Mann-Whitney | Shapiro-Wilk P<0.05 |
| `DIFF_CONT_BIN_PAIRED` | comparison | continuous | binary | paired | 配对 T 检验 | Wilcoxon | 差值 Shapiro-Wilk P<0.05 |
| `DIFF_CONT_MULTI_IND` | comparison | continuous | categorical | independent | ANOVA | Kruskal-Wallis | Shapiro-Wilk P<0.05(内部自动切换) |
| `DIFF_CAT_CAT_IND` | comparison | categorical | categorical | independent | 卡方检验 | Fisher | 期望频数<5 超过 20% 且 2×2 表 |
| `DIFF_CAT_CAT_SMALL` | comparison | categorical | binary | independent | Fisher | 无 | 直接使用 |
| `ASSOC_CONT_CONT` | correlation | continuous | continuous | * | 相关分析 | 无 | Pearson/Spearman 自动选择 |
| `ASSOC_CAT_ANY` | correlation | categorical | * | * | 卡方检验 | Fisher | 期望频数<5 超过 20% |
| `PRED_BIN_ANY` | regression | binary | * | * | Logistic 回归 | 无 | — |
| `PRED_CONT_ANY` | regression | continuous | * | * | 线性回归 | 无 | — |
| `DESC_ANY` | descriptive | * | * | * | 描述性统计 | 无 | — |
| `COHORT_STUDY` | cohort_study | binary | * | * | 描述统计 | 无 | 对应队列研究模板 |
### 🔍 专家需审核的问题
1. **降级条件是否正确?**
- Shapiro-Wilk P<0.05 作为正态性检验阈值是否合理?
- 期望频数<5 超过 20% 的 Fisher 切换标准是否合理?
2. **缺失的分析场景:**
- 有序分类变量ordinal的比较方法
- 多因素方差分析(多个自变量)?
- 生存分析Kaplan-Meier、Cox 回归)?
- 重复测量设计?
- 倾向性评分匹配?
- 交叉表的多重比较?
3. **优先级是否合理?**
- 当多条规则同时匹配时,`priority` 值高的优先,需确认排序逻辑
4. **队列研究的 outcomeType 限定为 binary 是否合适?**
- 如果结局变量是连续型(如生存时间),是否需要新规则?
---
## 4. B 类:分析流程模板
**文件:** `backend/src/modules/ssa/config/flow_templates.json`
### 作用
决策表选出方法后,通过流程模板确定 **执行步骤的编排顺序**。每个模板定义了"先做什么、再做什么"。
### 当前已配置的 5 个模板
#### 模板 1`standard_analysis`(标准分析流程)
```
步骤 1: 描述性统计(固定)
步骤 2: 主分析(动态填入,如 T 检验)
步骤 3: 敏感性分析(动态填入降级方法,条件:有降级方法时才执行)
```
**适用:** 两组比较、多组比较、卡方检验、相关分析等
#### 模板 2`paired_analysis`(配对设计分析)
```
步骤 1: 描述性统计(固定)
步骤 2: 配对检验(动态填入,如配对 T 检验)
```
**适用:** 前后对比、配对设计
#### 模板 3`regression_analysis`(回归建模)
```
步骤 1: 描述性统计(固定)
步骤 2: 多因素回归(动态填入,如 Logistic 或线性回归)
```
**适用:** 多因素分析
#### 模板 4`descriptive_only`(纯描述统计)
```
步骤 1: 描述性统计(固定)
```
**适用:** 仅需数据概况
#### 模板 5`cohort_study_standard`(经典队列研究)
```
步骤 1: 表1 — 组间基线特征比较ST_BASELINE_TABLEgroup_var=分组变量)
步骤 2: 表2 — 结局指标单因素分析ST_BASELINE_TABLEgroup_var=结局变量)
步骤 3: 表3 — 多因素 Logistic 回归ST_LOGISTIC_BINARY含 EPV 截断)
```
**适用:** 队列研究 Table 1→2→3
### 🔍 专家需审核的问题
1. **标准分析是否都需要"敏感性分析"步骤?**
- 当主分析与敏感性分析结论不一致时,系统已有冲突处理准则
2. **队列研究模板是否完整?**
- 表1 基线比较 → 表2 单因素筛选 → 表3 多因素回归,这个流程是否标准?
- 是否需要增加表2 → 表3 之间的变量筛选逻辑(如 P<0.1 纳入多因素)?
- 表3 的 EPVEvents Per Variable截断规则当前 `epv_capped_predictors` 的计算方式是否合理?
3. **需要新增的流程模板:**
- 病例对照研究模板?
- 横断面调查模板?
- 生存分析模板KM + Log-rank + Cox
- 诊断试验模板敏感性、特异性、ROC
- 一致性分析模板Kappa、ICC
---
## 5. C 类R 统计工具
**目录:** `r-statistics-service/tools/`
### 作用
每个 R 工具实现一种统计方法的完整计算。系统通过 HTTP API 调用 R 工具传入数据和参数返回标准化的结果块Block-based 输出)。
### 当前已实现的 12 个 R 工具
| 工具代码 | 方法名称 | 文件 | 内置护栏 | 自动降级 |
|---------|---------|------|---------|---------|
| `ST_DESCRIPTIVE` | 描述性统计 | `descriptive.R` | NA 安全处理 | — |
| `ST_T_TEST_IND` | 独立样本 T 检验 | `t_test_ind.R` | 正态性(Shapiro-Wilk)、方差齐性(Levene) | → Mann-Whitney |
| `ST_T_TEST_PAIRED` | 配对 T 检验 | `t_test_paired.R` | 差值正态性(Shapiro-Wilk) | → Wilcoxon |
| `ST_MANN_WHITNEY` | Mann-Whitney U 检验 | `mann_whitney.R` | 样本量检查 | — |
| `ST_WILCOXON` | Wilcoxon 符号秩检验 | `wilcoxon.R` | 配对数据完整性 | — |
| `ST_CHI_SQUARE` | 卡方检验 | `chi_square.R` | 期望频数检查 | → Fisher |
| `ST_FISHER` | Fisher 精确检验 | `fisher.R` | 2×2 表检查 | — |
| `ST_ANOVA_ONE` | 单因素方差分析 | `anova_one.R` | 正态性、方差齐性(Bartlett) | → Kruskal-Wallis |
| `ST_CORRELATION` | 相关分析 | `correlation.R` | 正态性检测 | Pearson↔Spearman 自动 |
| `ST_LOGISTIC_BINARY` | 二元 Logistic 回归 | `logistic_binary.R` | 多重共线性(VIF)、EPV 检查 | — |
| `ST_LINEAR_REG` | 线性回归 | `linear_reg.R` | 残差正态性、多重共线性(VIF) | — |
| `ST_BASELINE_TABLE` | 基线特征表 | `baseline_table.R` | 变量类型自动判断 | gtsummary 自动选方法 |
### 每个 R 工具的标准输出结构
```
{
"success": true,
"tool_code": "ST_T_TEST_IND",
"blocks": [
{ "type": "key_value", "title": "检验结果", "items": {...} },
{ "type": "table", "title": "组间比较", "headers": [...], "rows": [...] },
{ "type": "chart", "title": "箱线图", "chartType": "boxplot", "base64": "..." },
{ "type": "text", "title": "结论", "content": "..." }
],
"guardrail_notes": ["正态性检验通过 (Shapiro-Wilk P=0.23)"],
"reproducible_code": "# 可复现 R 代码\nlibrary(...)..."
}
```
### 🔍 专家需审核的问题
1. **护栏阈值是否合理?**
- 正态性检验Shapiro-Wilk P<0.05 → 切换非参数,这个阈值是否标准?
- 方差齐性Levene/Bartlett P<0.05 → 使用 Welch 校正,是否合理?
- 期望频数:<5 超过 20% → Fisher标准是否准确
- EPVEvents Per Variable≥10 的门槛是否需要调整?
2. **统计方法实现是否正确?**
- T 检验Welch T 检验 vs Student T 检验的选择逻辑
- ANOVA 事后比较方法Tukey HSD vs Bonferroni
- Logistic 回归变量选择策略Enter 法 / Forward / Backward
- 相关分析:自动选择 Pearson vs Spearman 的依据
3. **缺失的 R 工具(需开发新工具时才需要配置):**
- Kaplan-Meier 生存分析
- Cox 比例风险回归
- 重复测量 ANOVA
- 混合效应模型
- ROC 曲线与 AUC
- Kappa/ICC 一致性分析
- 倾向性评分匹配
---
## 6. D 类:工具参数约束表
**文件:** `backend/src/modules/ssa/config/tool_param_constraints.json`
### 作用
定义每个统计工具对输入参数的**变量类型要求**,用于:
- 前端变量选择器的智能提示和⚠️警告标记
- 后端 API 的参数校验(防火墙)
- 帮助临床医生正确选择变量
### 当前已配置12 个工具,全覆盖)
| 工具 | 参数名 | 选择模式 | 类型要求 | 水平限制 | 提示语 |
|------|--------|---------|---------|---------|--------|
| **T 检验** | `group_var` | 单选 | categorical | maxLevels=2 | T检验要求二分类分组变量 |
| | `value_var` | 单选 | numeric | — | T检验要求连续型因变量 |
| **Mann-Whitney** | `group_var` | 单选 | categorical | maxLevels=2 | 要求二分类分组变量 |
| | `value_var` | 单选 | numeric | — | 要求连续型因变量 |
| **配对 T 检验** | `before_var` | 单选 | numeric | — | 前测变量应为连续型 |
| | `after_var` | 单选 | numeric | — | 后测变量应为连续型 |
| **Wilcoxon** | `before_var` | 单选 | numeric | — | 前测变量应为连续型 |
| | `after_var` | 单选 | numeric | — | 后测变量应为连续型 |
| **卡方检验** | `var1` | 单选 | categorical | — | 要求分类变量 |
| | `var2` | 单选 | categorical | — | 要求分类变量 |
| **Fisher** | `var1` | 单选 | categorical | — | 要求分类变量 |
| | `var2` | 单选 | categorical | — | 要求分类变量 |
| **相关分析** | `var_x` | 单选 | numeric | — | 要求连续型变量 |
| | `var_y` | 单选 | numeric | — | 要求连续型变量 |
| **Logistic 回归** | `outcome_var` | 单选 | categorical | maxLevels=2 | 要求二分类结局变量 |
| | `predictors` | 多选 | any | — | 预测变量 |
| | `confounders` | 多选 | any | — | 混杂因素(可选) |
| **线性回归** | `outcome_var` | 单选 | numeric | — | 要求连续型结局变量 |
| | `predictors` | 多选 | any | — | 预测变量 |
| | `confounders` | 多选 | any | — | 混杂因素(可选) |
| **ANOVA** | `group_var` | 单选 | categorical | minLevels=3 | 要求3组及以上分组变量 |
| | `value_var` | 单选 | numeric | — | 要求连续型因变量 |
| **基线表** | `group_var` | 单选 | categorical | minLevels=2, maxLevels=5 | 需要分类分组变量 |
| | `analyze_vars` | 多选 | any | — | 选择需要分析的变量 |
| **描述统计** | `variables` | 多选 | any | — | 选择需要描述的变量 |
| | `group_var` | 单选 | categorical | — | 分组变量(可选) |
### 🔍 专家需审核的问题
1. **水平限制是否准确?**
- 基线表 `maxLevels=5` 是否合理?分组变量超过 5 组的情况是否存在?
- ANOVA `minLevels=3` 是否排除了两组情况的正确性?(两组应走 T 检验)
2. **类型要求是否完整?**
- 相关分析Spearman 也可以接受有序分类变量,是否需要放宽为 `any`
- Logistic 回归的 `predictors`:是否应区分连续/分类?
3. **提示语是否专业且易懂?**
- 面向临床医生,提示语是否够简明?
---
## 7. E 类LLM Prompt 模板
### 作用
Prompt 模板控制 LLM 在不同场景下的行为。所有 Prompt 存储在数据库中,通过 seed 脚本初始化。
### 当前已配置的 12 个 Prompt
#### 7.1 核心角色定义
| Prompt Key | 用途 | 统计相关度 | 审核重点 |
|-----------|------|-----------|---------|
| `SSA_BASE_SYSTEM` | LLM 基础角色定义 | ⭐⭐⭐ | 确认"不做计算"的边界描述是否准确 |
**当前内容要点:**
- 定义 LLM 为"分析规划者"和"结果解读者"
- 严禁生成任何数值结果P值、均值、标准差等
- 所有计算由 R 引擎完成
#### 7.2 意图分类
| Prompt Key | 用途 | 统计相关度 | 审核重点 |
|-----------|------|-----------|---------|
| `SSA_INTENT_ROUTER` | 意图分类器 | ⭐⭐ | 6 种意图的定义和典型示例是否准确 |
| `SSA_QUERY_INTENT` | 分析意图解析 | ⭐⭐⭐⭐⭐ | Few-Shot 示例、goal 分类、confidence 评分 |
**`SSA_QUERY_INTENT` 审核重点:**
- **goal 分类是否完整?** 当前comparison / correlation / regression / descriptive / cohort_study
- 是否需要增加:`survival_analysis`, `diagnostic_test`, `agreement`, `meta_analysis`
- **Few-Shot 示例是否覆盖常见场景?** 当前 6 个示例
- 是否需要增加:生存分析、诊断试验、一致性分析的示例?
- **Confidence 评分标准是否合理?**
- 0.9-1.0 = 明确指定 Y 和 X
- 0.7-0.8 = 指定 Y 但 X 需推断
- 0.5-0.6 = 意图清楚但无变量名
- <0.5 = 模糊表达需追问
#### 7.3 对话场景
| Prompt Key | 用途 | 统计相关度 | 审核重点 |
|-----------|------|-----------|---------|
| `SSA_INTENT_CHAT` | 自由对话 | ⭐ | — |
| `SSA_INTENT_EXPLORE` | 数据探索 | ⭐⭐ | 数据质量问题的提醒清单是否完整 |
| `SSA_INTENT_CONSULT` | 方法咨询 | ⭐⭐⭐⭐ | 推荐逻辑、前提条件说明是否准确 |
| `SSA_INTENT_ANALYZE` | 分析协调 | ⭐⭐⭐ | 方案状态说明的措辞 |
| `SSA_INTENT_DISCUSS` | 结果讨论 | ⭐⭐⭐⭐ | P 值解读指导、临床意义讨论准则 |
| `SSA_INTENT_FEEDBACK` | 改进反馈 | ⭐⭐⭐ | 诊断问题的分类框架 |
#### 7.4 核心任务 Prompt
| Prompt Key | 用途 | 统计相关度 | 审核重点 |
|-----------|------|-----------|---------|
| `SSA_METHOD_CONSULT` | 方法推荐输出格式 | ⭐⭐⭐⭐ | 推荐理由、前提条件、降级方案的描述准则 |
| `SSA_ANALYZE_PLAN` | 分析方案解释 | ⭐⭐⭐ | 方案解释的非技术化表达准则 |
| `SSA_PICO_INFERENCE` | PICO 结构推断 | ⭐⭐⭐⭐⭐ | Few-Shot 示例、观察性研究处理、Confidence 准则 |
| `SSA_REFLECTION` | 论文级结论生成 | ⭐⭐⭐⭐⭐ | 冲突处理准则、方法学说明格式、局限性模板 |
### 🔍 专家需审核的关键 Prompt
**优先级 1最重要**
1. **`SSA_QUERY_INTENT`** — 决定了系统如何理解用户需求
- Few-Shot 示例是否覆盖临床常见场景?
- 队列研究 vs 横断面调查的区分规则
- "统计学意义"这类表达的意图分类是否正确
2. **`SSA_REFLECTION`** — 决定了最终报告的质量
- 冲突处理准则(主分析与敏感性分析不一致时)
- 方法学段落的撰写指导
- 局限性的标准表述
3. **`SSA_PICO_INFERENCE`** — 决定了数据理解的准确性
- 观察性研究 intervention=null 的判断准则
- 变量名引用规则
- Confidence 评分准则
**优先级 2**
4. **`SSA_INTENT_CONSULT`** — 方法咨询的准确性
5. **`SSA_INTENT_DISCUSS`** — P 值和效应量的解读指导
6. **`SSA_METHOD_CONSULT`** — 推荐方法的输出格式
---
## 8. F 类:意图识别规则
**文件:** `backend/src/modules/ssa/config/intent_rules.json`
### 作用
系统首先用 **关键词规则引擎**(零延迟)判断用户意图。规则无法确定时,才使用 LLM 兜底。
### 当前已配置的 5 类意图规则
| 意图 | 关键词 | 排除词 | 前置条件 | 优先级 |
|------|--------|--------|---------|--------|
| **analyze** | 分析、检验、t检验、卡方、回归、比较一下、跑一下、执行分析、做个分析、方差分析、ANOVA、相关分析、logistic、生存分析、Cox、基线表 | 什么方法、用什么、应该怎么、推荐 | 有数据 | 10 |
| **discuss** | 什么意思、说明什么、怎么解释、p值、置信区间、结果说明、为什么显著、为什么不显著、临床意义、效应量 | — | 有数据+有结果 | 9 |
| **feedback** | 结果不对、不太对、换个方法、重新分析、有问题、不满意、重做 | — | 有数据+有结果 | 9 |
| **explore** | 看看、分布、缺失、概况、有哪些变量、数据特征、异常值、样本量、描述一下数据、多少例、变量类型 | — | 有数据 | 8 |
| **consult** | 什么方法、用什么、应该怎么分析、推荐方法、分析方案、哪种检验、怎么选、前提条件 | — | 有数据 | 7 |
### 🔍 专家需审核的问题
1. **关键词是否完整?**
- analyze 缺少生存分析相关生存曲线、KM、hazard ratio、诊断试验相关ROC、AUC、敏感性
- consult 缺少:样本量估计、效能分析相关
- discuss 缺少多重比较校正相关Bonferroni、FDR
2. **排除词是否合理?**
- 当前 analyze 排除"什么方法、用什么"以避免误判为 consult但用户说"用 T 检验分析"是否会被误排除?
3. **默认意图 `chat` 是否是最佳兜底?**
---
## 9. G 类:统计工具注册表
**文件:** `backend/src/modules/ssa/config/tools_registry.json`
### 作用
注册所有可用的统计工具元信息,包括工具代码、参数列表、输出类型、前提条件和降级方法。
### 当前注册的 12 个工具
| 工具代码 | 工具名称 | 分类 | 前提条件 | 降级方法 |
|---------|---------|------|---------|---------|
| `ST_DESCRIPTIVE` | 描述性统计 | basic | — | — |
| `ST_T_TEST_IND` | 独立样本T检验 | parametric | 正态分布 | ST_MANN_WHITNEY |
| `ST_MANN_WHITNEY` | Mann-Whitney U检验 | nonparametric | — | — |
| `ST_T_TEST_PAIRED` | 配对T检验 | parametric | — | — |
| `ST_CHI_SQUARE` | 卡方检验 | categorical | — | ST_FISHER |
| `ST_CORRELATION` | 相关分析 | correlation | — | — |
| `ST_LOGISTIC_BINARY` | 二元Logistic回归 | regression | — | — |
| `ST_FISHER` | Fisher精确检验 | categorical | — | — |
| `ST_ANOVA_ONE` | 单因素方差分析 | parametric | 正态分布+方差齐性 | Kruskal-Wallis |
| `ST_WILCOXON` | Wilcoxon符号秩检验 | nonparametric | — | — |
| `ST_LINEAR_REG` | 线性回归 | regression | — | — |
| `ST_BASELINE_TABLE` | 基线特征表 | composite | — | — |
### 🔍 专家需审核的问题
1. **前提条件字段prerequisite需要补全**
- 多数工具未填写前提条件,但实际 R 代码中有检查
- 建议统一补全,用于向用户展示
2. **category 分类是否需要调整?**
- 当前basic / parametric / nonparametric / categorical / correlation / regression / composite
- 是否需要更精细的分类?
3. **配对 T 检验缺少 fallback 声明**
- `ST_T_TEST_PAIRED` 的 fallback 应为 `ST_WILCOXON`
---
## 10. 当前状态与待办事项
### ✅ 已完成(系统可运行)
| 项目 | 说明 |
|------|------|
| 12 个 R 工具全部实现 | 含内置护栏和自动降级 |
| 11 条决策表规则 | 覆盖常见分析场景 |
| 5 个流程模板 | 含队列研究全套模板 |
| 12 个 Prompt 入库 | 含角色定义、意图分类、结论生成 |
| 参数约束表全覆盖 | 12 工具 27 个参数 |
| 变量可编辑化 | 医生可修改系统默认选择 |
### 🟡 需要专家审核/完善
| 优先级 | 项目 | 预估工作量 |
|--------|------|-----------|
| P0 | 决策表降级条件审核 | 1-2 小时 |
| P0 | R 工具护栏阈值审核 | 2-3 小时 |
| P0 | `SSA_QUERY_INTENT` Prompt Few-Shot 审核 | 1 小时 |
| P0 | `SSA_REFLECTION` 冲突处理准则审核 | 1 小时 |
| P1 | 参数约束表水平限制审核 | 30 分钟 |
| P1 | 意图识别关键词补充 | 30 分钟 |
| P1 | 队列研究模板步骤审核 | 1 小时 |
| P2 | 工具注册表前提条件补全 | 30 分钟 |
| P2 | PICO 推断 Prompt 示例审核 | 30 分钟 |
### 🔴 未来扩展(新统计方法)
| 统计方法 | 涉及配置项 | 说明 |
|---------|-----------|------|
| **生存分析** | 新 R 工具 + 决策表 + 流程模板 + Prompt 示例 | Kaplan-Meier + Cox |
| **诊断试验** | 新 R 工具 + 决策表 + 流程模板 | ROC/AUC/敏感性/特异性 |
| **一致性分析** | 新 R 工具 + 决策表 | Kappa / ICC |
| **倾向性评分** | 新 R 工具 + 流程模板 | PSM + 匹配后分析 |
| **混合效应模型** | 新 R 工具 + 决策表 | 重复测量/多水平 |
| **样本量估计** | 新 R 工具 + 意图规则 | 效能分析 |
| **Meta 分析** | 新 R 工具 + 完整子系统 | 固定/随机效应 |
---
## 11. 专家审核工作流程建议
### 推荐审核顺序
```
第一轮理解架构30 分钟)
├── 阅读本文档第 1 节(系统架构概览)
└── 理解 QPER 四层流水线和配置关系
第二轮审核统计核心3-4 小时)
├── A. 决策表 → 确认方法选择规则和降级条件
├── C. R 工具 → 审核护栏阈值和统计实现
├── D. 参数约束 → 确认变量类型要求
└── B. 流程模板 → 审核步骤编排逻辑
第三轮:审核 LLM 指导2-3 小时)
├── E. SSA_QUERY_INTENT → 审核 Few-Shot 和 goal 分类
├── E. SSA_REFLECTION → 审核结论生成准则
├── E. SSA_PICO_INFERENCE → 审核研究设计推断
└── F. 意图规则 → 补充统计领域关键词
第四轮规划扩展1-2 小时)
├── 确定优先需要新增的统计方法
├── 为新方法准备决策表规则
└── 为新方法准备 Few-Shot 示例
```
### 配置文件位置速查
| 配置文件 | 路径 |
|---------|------|
| 决策表 | `backend/src/modules/ssa/config/decision_tables.json` |
| 流程模板 | `backend/src/modules/ssa/config/flow_templates.json` |
| 工具注册表 | `backend/src/modules/ssa/config/tools_registry.json` |
| 参数约束 | `backend/src/modules/ssa/config/tool_param_constraints.json` |
| 意图规则 | `backend/src/modules/ssa/config/intent_rules.json` |
| Prompt 种子 | `backend/scripts/seed-ssa-*.ts` |
| R 工具 | `r-statistics-service/tools/*.R` |
### 反馈格式建议
专家审核后,建议按以下格式反馈:
```markdown
## 审核反馈 — [配置项名称]
### 确认正确的部分
- [列出审核通过的规则/配置]
### 需要修改的部分
- [配置项]: [当前值] → [建议值]
- [原因说明]
### 需要新增的部分
- [新规则/新工具/新示例]
- [适用场景说明]
### 需要讨论的问题
- [有争议或需要权衡的决策]
```
---
**文档版本:** v1.0
**创建日期:** 2026-02-23
**维护者:** 开发团队
**下次更新触发条件:** 专家审核反馈后 / 新增统计工具时