Files
AIclinicalresearch/docs/03-业务模块/SSA-智能统计分析/04-开发计划/09-智能化差距分析与演进路线图.md
HaHafeng 371e1c069c feat(ssa): Complete QPER architecture - Query, Planner, Execute, Reflection layers
Implement the full QPER intelligent analysis pipeline:

- Phase E+: Block-based standardization for all 7 R tools, DynamicReport renderer, Word export enhancement

- Phase Q: LLM intent parsing with dynamic Zod validation against real column names, ClarificationCard component, DataProfile is_id_like tagging

- Phase P: ConfigLoader with Zod schema validation and hot-reload API, DecisionTableService (4-dimension matching), FlowTemplateService with EPV protection, PlannedTrace audit output

- Phase R: ReflectionService with statistical slot injection, sensitivity analysis conflict rules, ConclusionReport with section reveal animation, conclusion caching API, graceful R error classification

End-to-end test: 40/40 passed across two complete analysis scenarios.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-21 18:15:53 +08:00

401 lines
17 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-Pro 智能化差距分析与演进路线图
> **文档版本:** v1.0
> **创建日期:** 2026-02-20
> **基准文档:** `00-系统设计/SSA-Pro 理想状态与智能化愿景设计.md`
> **当前状态:** Phase 2A 前端集成完成,多步骤工作流端到端通过
> **文档目的:** 明确当前系统与理想智能化之间的差距,规划演进路径
---
## 1. 执行摘要
### 核心结论
**当前系统已搭好"四肢"R 执行 + SSE 实时进度 + 前端展示 + Word/R 导出),但缺少"大脑"LLM 意图理解 + 决策表规划 + 论文级结论生成)。**
| 维度 | 当前状态 | 理想状态 | 差距 |
|------|---------|---------|------|
| 用户输入 | 用户需了解变量名和分析意图 | 用自然语言描述临床问题即可 | 🔴 大 |
| 方法选择 | 硬编码 if/else 规则 | 决策表四维匹配 + LLM 兜底 | 🔴 大 |
| 流程规划 | 从零拼装步骤列表 | 预定义流程模板 + 数据驱动调整 | 🔴 大 |
| 执行引擎 | 顺序执行,各步独立 | 结果串联 + 护栏降级 + 可中断 | 🟡 中 |
| 结果输出 | 数值表格 + 基础图表 | 论文级综合结论 + 方法学说明 | 🔴 大 |
### 智能化等级评估
```
L1 单方法执行 ████████████████████ 100% ✅ 已完成2026-02-19
L2 智能选方法 ███████░░░░░░░░░░░░░ 35% 🟡 有规则匹配,缺决策表和 LLM
L3 数据自适应 ████░░░░░░░░░░░░░░░░ 20% 🔴 护栏在 R 内部,未与规划联动
L4 流程编排 ████████░░░░░░░░░░░░ 40% 🟡 多步骤能跑,缺模板和串联
L5 论文级输出 ███░░░░░░░░░░░░░░░░░ 15% 🔴 缺 LLM 结论生成
```
---
## 2. 五大核心组件差距详析
### 2.1 意图理解器 (Intent Parser) — 完成度 20%
**理想状态:**
- LLM 从用户自然语言中提取四维信息Goal / Y_Type / X_Type / Design
- 不确定时主动追问澄清(展示选择卡片)
- 支持模糊输入:"有没有效"、"帮我分析一下"
**当前实现:**
- `WorkflowPlannerService.parseUserIntent()` — 正则匹配关键词
- "相关" → correlation"影响" → regression"比较" → comparison
- 变量名通过正则从用户文本中提取,与 DataProfile 变量列表交叉匹配
- 变量类型通过 DataProfile 判断categorical / numeric
**差距明细:**
| 能力 | 理想 | 当前 | 状态 |
|------|------|------|------|
| Goal 分类 | Difference / Association / Prediction / Description | 关键词硬编码 | 🔴 |
| Y/X 类型提取 | LLM 自动识别结局变量和自变量 | 正则提取变量名 | 🟡 |
| Design 识别 | 独立 / 配对 / 重复测量 | 不支持 | 🔴 |
| 模糊理解 | "有没有效" → 差异比较 | 需要用户说"比较" | 🔴 |
| 追问澄清 | 展示选择卡片让用户确认 | 不追问,直接猜测 | 🔴 |
| 多目标识别 | 识别多个分析目标并分拆 | 不支持 | 🔴 |
**关键缺失文件/服务:**
- `IntentParserService`LLM 驱动的意图解析,替代当前的 `parseUserIntent` 方法)
- 前端追问卡片组件(当 AI 不确定时展示选项)
---
### 2.2 数据诊断器 (Data Diagnostician) — 完成度 30%
**理想状态:**
- 独立的"数据体检报告"模块
- 检测项:正态性、方差齐性、缺失比例、异常值、样本量、分组平衡性
- 诊断结果直接传递给路径规划器,影响方法选择
**当前实现:**
- Python `DataProfileService`:变量类型推断、缺失率、基本统计量、唯一值
- R `guardrails.R`在方法执行时检查正态性Shapiro-Wilk和方差齐性Levene
- 前端 `DataProfileCard` + `DataProfileModal`:展示数据概况
**差距明细:**
| 检测项 | 理想 | 当前 | 状态 |
|--------|------|------|------|
| 变量类型推断 | 自动识别 | Python DataProfile ✅ | ✅ |
| 缺失值统计 | 占比 + 建议处理策略 | 有占比,无处理建议 | 🟡 |
| 正态性检验 | 独立模块,结果传递给 Planner | R 内部执行,不回传 | 🔴 |
| 方差齐性 | 独立模块,结果传递给 Planner | R 内部执行,不回传 | 🔴 |
| 异常值检测 | IQR 方法 + 可视化标注 | 不检测 | 🔴 |
| 样本量评估 | 功效分析建议 | 不评估 | 🔴 |
| 分组平衡性 | 各组比例 + 提示不平衡 | 不检测 | 🔴 |
| 诊断→规划联动 | 自动影响方法选择 | 完全割裂 | 🔴 |
**关键问题:**
- 数据诊断Python DataProfile和统计前提检查R guardrails是两个独立系统
- R 护栏在执行时发现正态性不满足时自动降级(如 T→Wilcoxon但不通知 Planner
- Planner 做规划时不知道数据特征,全凭变量类型硬编码选方法
---
### 2.3 路径规划器 (Pathway Planner) — 完成度 15%
**理想状态:**
- 决策表匹配:(Goal, Y_Type, X_Type, Design) → 精准选工具
- 流程模板:预定义标准分析流程(如"两组差异比较 = 清洗 → 描述 → 正态检验 → [T/U] → 效应量 → 可视化"
- 数据驱动调整:根据诊断结果动态修改流程
- 生成完整的 SAP统计分析计划供用户确认
**当前实现:**
- `WorkflowPlannerService.generateSteps()` — 硬编码 if/else 链
- 如果 `analysisType === 'comparison'` 且 Y 是连续 → 加 T 检验步骤
- 总是先加描述性统计步骤
- 输出 `WorkflowPlan { title, steps[] }` 结构
**差距明细:**
| 能力 | 理想 | 当前 | 状态 |
|------|------|------|------|
| 决策表匹配 | 四维精准匹配 | 硬编码 if/else | 🔴 |
| 流程模板 | 5-8 个预定义模板 | 无模板概念 | 🔴 |
| 数据驱动调整 | 诊断结果影响规划 | 不参考诊断结果 | 🔴 |
| SAP 生成 | 结构化计划文档 | 简单步骤列表 | 🔴 |
| 敏感性分析 | 自动添加补充分析 | 不支持 | 🔴 |
| 效应量步骤 | 自动包含 | 不支持 | 🔴 |
| 可视化步骤 | 自动规划图表 | 不支持R 内部生成) | 🟡 |
**关键缺失文件/服务:**
- `DecisionTableService` — 决策表加载和四维匹配
- `FlowTemplateService` — 流程模板管理
- 决策表 Excel 配置文件
- 流程模板配置文件
---
### 2.4 流程执行器 (Workflow Executor) — 完成度 40%
**理想状态:**
- 按 SAP 定义的顺序执行多个方法
- 上一步输出作为下一步输入(结果串联)
- 护栏检查失败时自动降级方法
- 每步实时反馈中间结果
- 用户可暂停/跳过/取消
**当前实现:**
- `WorkflowExecutorService.executeWorkflow()` — 顺序遍历 steps 数组
- 每步独立调用 R 服务(通过 `RClientService`
- SSE 实时推送 `step_start` / `step_complete` / `workflow_complete`
- 前端实时展示执行日志和结果terminal-box + 结果卡片)
**差距明细:**
| 能力 | 理想 | 当前 | 状态 |
|------|------|------|------|
| 顺序执行 | ✅ | ✅ | ✅ |
| SSE 实时反馈 | ✅ | ✅ | ✅ |
| 步骤级结果展示 | ✅ | ✅ | ✅ |
| 结果串联 | 上步输出 → 下步输入 | 各步独立执行 | 🔴 |
| 护栏降级 | 失败时自动切换方法 | 不支持 | 🔴 |
| 暂停/跳过/取消 | 用户可控 | 一旦开始无法中断 | 🔴 |
| 错误恢复 | 某步失败提供重试选项 | 失败则标记 failed | 🟡 |
| 步骤间数据共享 | 共享清洗后数据集 | 每步重新加载原始数据 | 🔴 |
**这是完成度最高的组件**,架构基础已就位,需要补充的是上层能力。
---
### 2.5 结论生成器 (Conclusion Generator) — 完成度 15%
**理想状态:**
- 论文级综合结论,包含 6 个要素:
1. 样本描述(纳入/排除)
2. 主要结果(核心统计量 + P 值)
3. 效应解读(效应量含义)
4. 敏感性分析(结果稳健性)
5. 方法学说明(为什么选这个方法)
6. 局限性声明(数据处理说明)
- LLM 生成自然语言结论
**当前实现:**
- `ConclusionGeneratorService` 存在但功能有限
- 前端展示统计量数值、P 值、效应量(数字形式)
- Word 导出executive_summary + 各步骤统计量表格
**差距明细:**
| 结论要素 | 理想 | 当前 | 状态 |
|----------|------|------|------|
| 样本描述 | "共纳入 186 例,剔除 14 例..." | 无 | 🔴 |
| 主要结果 | LLM 自然语言描述 | 数字展示P=0.015 | 🔴 |
| 效应解读 | "中等程度效应" | 数字展示r=0.52 | 🔴 |
| 敏感性分析 | "T 检验得到一致结论" | 不支持 | 🔴 |
| 方法学说明 | "因不满足正态性..." | 无 | 🔴 |
| 局限性声明 | 自动生成 | 无 | 🔴 |
| 多步骤整合 | 综合所有步骤生成报告 | 各步骤独立展示 | 🟡 |
| 可发表质量 | 直接用于论文 | 需大量人工整理 | 🔴 |
**关键缺失:**
- LLM 结论生成 Prompt调用 GPT/DeepSeek 生成论文级文字)
- 结果解读模板("填空题"式结论模板)
- 多步骤结果整合逻辑
---
## 3. 已完成的基础设施(不需要重做)
在规划演进路径之前,确认以下基础已就位,无需重复建设:
| 基础设施 | 状态 | 说明 |
|----------|------|------|
| R 统计引擎 | ✅ | Docker 部署7 个工具plumber API |
| Node.js 后端框架 | ✅ | 路由、Service 架构、SSE |
| 前端 V11 UI | ✅ | 三栏布局、对话式交互、结果展示 |
| SSE 实时通信 | ✅ | 前后端消息格式已对齐 |
| 数据上传 + OSS | ✅ | 文件上传、预签名 URL |
| Python 数据质量 | ✅ | 变量类型推断、基础统计 |
| R 代码导出 | ✅ | 多步骤聚合导出 |
| Word 报告导出 | ✅ | docx 库,多步骤报告 |
| R 护栏系统 | ✅ | 正态性、方差齐性检查R 内部) |
| Block-based 协议 | 📋 | 规范已制定待实施2.5 天) |
---
## 4. 演进路线图
### 4.1 推荐路径(按投入产出比排序)
```
当前状态Phase 2A 完成L1-L2 之间)
│ ① LLM 意图理解 + 决策表匹配 (~5天)
│ - IntentParserService: LLM 提取 Goal/Y/X/Design
│ - DecisionTableService: 四维 → 工具精准匹配
│ - 前端追问卡片组件
L2 完成: 智能选方法
│ 「用户不再需要知道 T 检验、卡方检验是什么」
│ ② 流程模板 + 结果串联 (~3天)
│ - FlowTemplateService: 5-8 个预定义流程
│ - 步骤间数据共享机制
│ - 敏感性分析自动添加
L4 完成: 流程编排
│ 「从单方法跃迁到完整统计分析流程」
│ ③ LLM 结论生成 (~3天)
│ - ConclusionService: LLM 综合解读
│ - 结论模板体系
│ - 方法学说明自动生成
L5 完成: 论文级输出
│ 「结果可直接复制到论文中」
│ ④ 数据诊断→规划联动 + 追问机制 (~5天)
│ - DataDiagnosticService: 异常值/样本量/平衡性
│ - 诊断结果传递给 Planner
│ - 护栏结果回传机制
L3 完成: 数据自适应
│ 「系统自动根据数据特征调整方法」
│ ⑤ 高级交互 (~3天)
│ - 执行暂停/跳过/取消
│ - 步骤失败自动降级
│ - 用户修改 SAP 后重新执行
理想状态: 完全智能化统计分析系统
```
### 4.2 各阶段详细任务
#### 阶段 ①LLM 意图理解 + 决策表匹配(~5 天)
| 任务 | 层级 | 预估 | 说明 |
|------|------|------|------|
| 设计 Intent Prompt | 后端 | 4h | 提取 Goal/Y/X/Design + 置信度 |
| 实现 IntentParserService | 后端 | 6h | LLM 调用 + 结构化输出 + Zod 校验 |
| 设计决策表 Excel 模板 | 配置 | 3h | 四维匹配规则 + 10 个工具映射 |
| 实现 DecisionTableService | 后端 | 6h | Excel 加载 + 四维匹配逻辑 |
| 重构 WorkflowPlannerService | 后端 | 4h | 集成 Intent + DecisionTable |
| 前端追问卡片组件 | 前端 | 4h | 当置信度低时展示选项 |
| 联调测试 | 全栈 | 4h | 多场景测试 |
#### 阶段 ②:流程模板 + 结果串联(~3 天)
| 任务 | 层级 | 预估 | 说明 |
|------|------|------|------|
| 定义 5 个流程模板 | 配置 | 3h | 差异/关联/描述/回归/基线表 |
| 实现 FlowTemplateService | 后端 | 4h | 模板加载 + 参数填充 |
| 步骤间数据共享 | 后端+R | 6h | 清洗后数据缓存 + 传递 |
| 自动添加敏感性分析 | 后端 | 3h | 主要分析 + 替代方法 |
| 自动添加效应量步骤 | 后端 | 2h | Cohen's d / r |
| 联调测试 | 全栈 | 4h | 完整流程测试 |
#### 阶段 ③LLM 结论生成(~3 天)
| 任务 | 层级 | 预估 | 说明 |
|------|------|------|------|
| 设计结论生成 Prompt | 后端 | 4h | 6 要素结论模板 |
| 实现 ConclusionService | 后端 | 6h | LLM 调用 + 流式输出 |
| 设计解读模板配置 | 配置 | 3h | 每种工具的"填空题"模板 |
| 前端论文结论展示 | 前端 | 4h | Markdown 渲染 + 复制 |
| Word 报告增强 | 前端 | 3h | 纳入论文级结论 |
| 联调测试 | 全栈 | 3h | |
#### 阶段 ④:数据诊断→规划联动(~5 天)
| 任务 | 层级 | 预估 | 说明 |
|------|------|------|------|
| 实现异常值检测 | Python/R | 4h | IQR 方法 + 可视化标注 |
| 实现样本量评估 | Python/R | 3h | 功效分析建议 |
| 实现分组平衡性检测 | Python | 2h | 各组比例 + 提示 |
| 诊断结果传递给 Planner | 后端 | 4h | DataDiagnosis → PlannerInput |
| R 护栏结果回传机制 | 后端+R | 6h | 护栏结果影响后续步骤 |
| 前端诊断报告增强 | 前端 | 4h | 问题列表 + 建议 + 评分 |
| 前端追问机制 | 前端 | 4h | 不确定时展示选择卡片 |
| 联调测试 | 全栈 | 4h | |
#### 阶段 ⑤:高级交互(~3 天)
| 任务 | 层级 | 预估 | 说明 |
|------|------|------|------|
| 执行暂停/跳过/取消 | 后端+前端 | 6h | SSE 控制消息 |
| 步骤失败自动降级 | 后端 | 4h | T 检验失败 → Wilcoxon |
| SAP 修改后重新执行 | 前端+后端 | 6h | 用户编辑步骤 → 重新规划 |
| 联调测试 | 全栈 | 4h | |
---
## 5. 工时与里程碑
| 阶段 | 核心目标 | 工时 | 智能等级 |
|------|---------|------|---------|
| Block-based 重构 | 结果渲染标准化 | 2.5天 | 基础设施 |
| ① LLM 意图 + 决策表 | 用户不需要知道方法名 | 5天 | → L2 |
| ② 流程模板 + 串联 | 从单方法到完整流程 | 3天 | → L4 |
| ③ LLM 结论生成 | 论文级输出 | 3天 | → L5 |
| ④ 数据诊断联动 | 全自动方法调整 | 5天 | → L3 |
| ⑤ 高级交互 | 可中断 + 降级 | 3天 | 完善 |
| **合计** | **理想状态** | **~21.5天** | **L5** |
### 里程碑时间线(预估)
```
2026-02-21 ─── Block-based 重构开始
2026-02-24 ─── Block-based 完成 ✓ 基础设施就绪
2026-02-25 ─── 阶段① 开始LLM 意图 + 决策表
2026-03-01 ─── 阶段① 完成 ✓ L2 智能选方法
2026-03-02 ─── 阶段② 开始:流程模板 + 串联
2026-03-05 ─── 阶段② 完成 ✓ L4 流程编排
2026-03-06 ─── 阶段③ 开始LLM 结论生成
2026-03-10 ─── 阶段③ 完成 ✓ L5 论文级输出
2026-03-11 ─── 阶段④ 开始:数据诊断联动
2026-03-17 ─── 阶段④ 完成 ✓ L3 数据自适应
2026-03-18 ─── 阶段⑤ 开始:高级交互
2026-03-21 ─── 阶段⑤ 完成 ✓ 理想状态
```
---
## 6. 成功标准
### 用户体验验证
| 测试场景 | 当前表现 | 目标表现 |
|----------|---------|---------|
| 用户说"有没有效" | ❌ 无法理解 | ✅ AI 识别为差异比较 |
| 用户不知道该用什么方法 | ❌ 必须指定 | ✅ AI 自动选择 |
| 数据不满足正态性 | 🟡 R 内部降级,用户不知 | ✅ 规划时就选非参数方法 |
| 分析结果 | 🟡 P 值 + 数字 | ✅ "两组差异显著(P<0.001),中等效应" |
| 导出报告 | 🟡 需大量整理 | ✅ 可直接用于论文 |
### 智能化评分卡
| 能力 | 权重 | 当前评分 | 目标评分 |
|------|------|---------|---------|
| 意图理解 | 25% | 2/10 | 8/10 |
| 方法选择 | 20% | 3/10 | 9/10 |
| 流程规划 | 20% | 2/10 | 8/10 |
| 执行引擎 | 15% | 6/10 | 9/10 |
| 结论生成 | 20% | 1/10 | 8/10 |
| **加权总分** | **100%** | **2.7/10** | **8.4/10** |
---
## 7. 风险与依赖
| 风险 | 概率 | 影响 | 应对策略 |
|------|------|------|---------|
| LLM 意图提取准确率不足 | 中 | 高 | 低置信度时追问用户,而非猜测 |
| 决策表覆盖率不足 | 中 | 中 | RAG 工具检索作为兜底方案 |
| LLM 结论生成"幻觉" | 中 | 高 | 基于模板+真实数据填充,而非自由生成 |
| 步骤间数据串联复杂度 | 中 | 中 | 先实现缓存共享,不做复杂依赖图 |
| 流程模板无法覆盖长尾场景 | 低 | 中 | 预留"自定义流程"入口 |
---
**文档维护者:** SSA 架构团队
**最后更新:** 2026-02-20
**下一步行动:** 确认优先级后,从 Block-based 重构 → 阶段 ① 开始执行