Files
AIclinicalresearch/docs/03-业务模块/SSA-智能统计分析/04-开发计划/07-Phase2A-智能化核心开发计划.md
HaHafeng 428a22adf2 feat(ssa): Complete Phase 2A frontend integration - multi-step workflow end-to-end
Phase 2A: WorkflowPlannerService, WorkflowExecutorService, Python data quality, 6 bug fixes, DescriptiveResultView, multi-step R code/Word export, MVP UI reuse. V11 UI: Gemini-style, multi-task, single-page scroll, Word export. Architecture: Block-based rendering consensus (4 block types). New R tools: chi_square, correlation, descriptive, logistic_binary, mann_whitney, t_test_paired. Docs: dev summary, block-based plan, status updates, task list v2.0.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-20 23:09:27 +08:00

37 KiB
Raw Blame History

SSA-Pro Phase 2A智能化核心开发计划

文档版本: v1.1
创建日期: 2026-02-20
最后更新: 2026-02-20纳入架构审查反馈暗礁预警 + Python/R 分工 + 执行时机)
目标: 以终为始,完成智能统计分析的核心能力
里程碑: 5 大核心组件跑通 + 7 个统计工具上线


1. 战略定位:为什么 Phase 2A 是 MVP 的核心?

┌─────────────────────────────────────────────────────────────────┐
│                    SSA-Pro 开发阶段定位                          │
├─────────────────────────────────────────────────────────────────┤
│                                                                  │
│  Phase 1 ✅ 已完成                                               │
│  ━━━━━━━━━━━━━━━━━━━━━━━━━━━                                     │
│  骨架搭建:前后端架构 + T检验端到端 + V11 UI                    │
│  验证目标:证明"能跑通"                                         │
│                                                                  │
│  Phase 2A ⭐ 当前阶段(本计划)                                  │
│  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━                   │
│  智能化核心5大组件 + 7个工具 + 多工具流程规划                 │
│  验证目标:证明"真正智能"                                       │
│                                                                  │
│  Phase 2B+ 后续阶段                                              │
│  ━━━━━━━━━━━━━━━━━━━━━━━━━━━                                     │
│  扩展完善:更多工具 + 咨询模式 + 配置中台                       │
│  性质:复制粘贴 + 修修补补                                      │
│                                                                  │
└─────────────────────────────────────────────────────────────────┘

核心观点Phase 2A 完成后,智能化能力就完成了 85%+。后续工作主要是"量"的扩展,而非"质"的突破。


2. 以终为始5 大核心组件

┌─────────────────────────────────────────────────────────────────┐
│                    理想的智能统计分析系统                        │
├─────────────────────────────────────────────────────────────────┤
│                                                                  │
│  ┌──────────────────────────────────────────────────────────┐   │
│  │ 1. 意图理解器 (Intent Parser)           ✅ 已有          │   │
│  │    - Query Rewriter医学术语 → 统计术语                 │   │
│  │    - PlannerGoal/Y/X/Design 四维提取                   │   │
│  │    - 不确定时追问澄清                                    │   │
│  └──────────────────────────────────────────────────────────┘   │
│                              ↓                                   │
│  ┌──────────────────────────────────────────────────────────┐   │
│  │ 2. 数据诊断器 (Data Diagnostician)      🆕 Phase 2A     │   │
│  │                                                          │   │
│  │    ⏱️ 时机 A用户上传数据时 → Python (Tool C)          │   │
│  │    - 数据概况(行数、列数、类型推断)                    │   │
│  │    - 缺失值分析(每列缺失数、缺失率)                    │   │
│  │    - 异常值检测IQR 方法)                              │   │
│  │    - 基础描述统计(均值、中位数、标准差)                │   │
│  │    → 输出DataProfile JSON喂给 LLM 生成 SAP         │   │
│  │                                                          │   │
│  │    ⏱️ 时机 B执行核心计算前 → R Service (JIT 护栏)     │   │
│  │    - 正态性检验Shapiro-Wilk针对特定 Y 变量)         │   │
│  │    - 方差齐性检验Levene针对特定分组                │   │
│  │    → 输出StatisticalChecks JSON决定方法选择        │   │
│  │                                                          │   │
│  └──────────────────────────────────────────────────────────┘   │
│                              ↓                                   │
│  ┌──────────────────────────────────────────────────────────┐   │
│  │ 3. 路径规划器 (Pathway Planner)         🆕 Phase 2A     │   │
│  │    - LLM 理解用户意图 + 数据特征                         │   │
│  │    - 规划 2-7 步分析流程                                 │   │
│  │    - 选择合适的统计工具组合                              │   │
│  │    → 输出:多步骤执行计划 (workflow_steps[])             │   │
│  └──────────────────────────────────────────────────────────┘   │
│                              ↓                                   │
│  ┌──────────────────────────────────────────────────────────┐   │
│  │ 4. 流程执行器 (Workflow Executor)       🆕 Phase 2A     │   │
│  │    - 串联执行多个工具                                    │   │
│  │    - 结果在步骤间传递                                    │   │
│  │    - 护栏检查与自动降级                                  │   │
│  │    - 实时进度反馈SSE 推送)                            │   │
│  │    → 输出step_results[]                                │   │
│  └──────────────────────────────────────────────────────────┘   │
│                              ↓                                   │
│  ┌──────────────────────────────────────────────────────────┐   │
│  │ 5. 结论生成器 (Conclusion Generator)    ✅ 已有          │   │
│  │    - Critic Agent多步骤结果整合                        │   │
│  │    - 论文级结论模板                                      │   │
│  │    - 方法学说明 + 局限性声明                             │   │
│  │    → 输出:综合分析报告                                  │   │
│  └──────────────────────────────────────────────────────────┘   │
│                                                                  │
└─────────────────────────────────────────────────────────────────┘

2.1 组件状态汇总

组件 状态 Phase 2A 任务
1. 意图理解器 已有 优化 Prompt增强追问能力
2. 数据诊断器 🆕 待做 核心开发项
3. 路径规划器 🆕 待做 核心开发项
4. 流程执行器 🆕 待做 核心开发项
5. 结论生成器 已有 增强多步骤结果整合能力

3. 工具清单7 个统计方法

3.1 工具总览

序号 工具代码 名称 类别 状态 典型场景
1 ST_T_TEST_IND 独立样本 T 检验 参数检验 已完成 两组连续变量比较
2 ST_MANN_WHITNEY Mann-Whitney U 检验 非参数检验 🆕 待做 两组非正态/等级变量比较
3 ST_CHI_SQUARE 卡方检验 分类变量 🆕 待做 两个分类变量关联
4 ST_LOGISTIC_BINARY 二元 Logistic 回归 多因素分析 🆕 待做 二分类结局的危险因素
5 ST_T_TEST_PAIRED 配对 T 检验 参数检验 🆕 待做 前后对比/配对设计
6 ST_CORRELATION Pearson/Spearman 相关 相关分析 🆕 待做 两个连续变量相关性
7 ST_DESCRIPTIVE 描述性统计 基础统计 🆕 待做 数据概况/基线表

3.2 工具选择逻辑(供 LLM 规划参考)

┌─────────────────────────────────────────────────────────────────┐
│                    工具选择决策树                                │
├─────────────────────────────────────────────────────────────────┤
│                                                                  │
│  研究目的是什么?                                                │
│  ├─ 描述数据 → ST_DESCRIPTIVE                                   │
│  ├─ 比较两组                                                     │
│  │   ├─ Y 是连续变量                                            │
│  │   │   ├─ 独立样本                                            │
│  │   │   │   ├─ 正态分布 → ST_T_TEST_IND                       │
│  │   │   │   └─ 非正态   → ST_MANN_WHITNEY                     │
│  │   │   └─ 配对样本 → ST_T_TEST_PAIRED                        │
│  │   └─ Y 是分类变量 → ST_CHI_SQUARE                           │
│  ├─ 分析相关性                                                   │
│  │   ├─ 正态分布 → ST_CORRELATION (Pearson)                    │
│  │   └─ 非正态   → ST_CORRELATION (Spearman)                   │
│  └─ 多因素分析                                                   │
│      └─ Y 是二分类 → ST_LOGISTIC_BINARY                        │
│                                                                  │
└─────────────────────────────────────────────────────────────────┘

3.3 各工具详细定义

3.3.1 ST_MANN_WHITNEYMann-Whitney U 检验)

属性
适用场景 两组独立样本比较Y 为连续/等级变量,不满足正态性假设
输入参数 group_var(分组变量), value_var(数值变量)
输出 U 统计量、Z 值、P 值、效应量 r、中位数对比
护栏 每组样本量 ≥ 5分组变量必须是二分类
降级来源 T 检验正态性不满足时自动降级

3.3.2 ST_CHI_SQUARE卡方检验

属性
适用场景 两个分类变量的关联分析
输入参数 var1分类变量1, var2分类变量2
输出 χ² 统计量、自由度、P 值、Cramér's V
护栏 期望频数 < 5 的格子不超过 20%;否则提示使用 Fisher
自动降级 2×2 表且有格子 < 5 → Fisher 精确检验

3.3.3 ST_LOGISTIC_BINARY二元 Logistic 回归)

属性
适用场景 二分类结局变量的多因素分析
输入参数 outcome_var(结局变量), predictors(预测变量列表), confounders(混杂因素,可选)
输出 OR、95% CI、P 值每个变量、模型拟合度AIC、Hosmer-Lemeshow
护栏 事件数 / 自变量数 ≥ 10EPV 规则共线性检测VIF < 5
高级 支持单因素 → 多因素两步分析

3.3.4 ST_T_TEST_PAIRED配对 T 检验)

属性
适用场景 配对设计,同一对象前后对比
输入参数 before_var(前测变量), after_var(后测变量)
输出 差值均值、t 统计量、P 值、Cohen's d、95% CI
护栏 差值满足正态性;样本量 ≥ 10
降级 差值非正态 → Wilcoxon 符号秩检验

3.3.5 ST_CORRELATION相关分析

属性
适用场景 两个连续变量的相关性分析
输入参数 var_x, var_y, methodpearson/spearman/auto
输出 相关系数 r、P 值、散点图
护栏 样本量 ≥ 10检测异常值影响
自动选择 两变量均正态 → Pearson否则 → Spearman

3.3.6 ST_DESCRIPTIVE描述性统计

属性
适用场景 数据概况、基线特征表
输入参数 variables(变量列表), group_var(可选,分组)
输出 连续变量均值±SD、中位数(IQR)分类变量n(%)
特殊 自动识别变量类型;支持分组对比

4. 数据流架构(含执行时机)

4.1 完整数据流

┌─────────────────────────────────────────────────────────────────┐
│                    完整数据流(含执行时机)                      │
├─────────────────────────────────────────────────────────────────┤
│                                                                  │
│  用户上传数据                                                    │
│      │                                                           │
│      ▼                                                           │
│  ┌─────────────────────────────────────┐                        │
│  │ ⏱️ 时机 A: Python (Tool C)          │                        │
│  │ → DataProfile JSON                  │                        │
│  │   - 列类型、缺失率、异常值          │                        │
│  │   - 唯一值、基础描述统计            │                        │
│  └──────────────────┬──────────────────┘                        │
│                     │ 喂给 LLM                                   │
│                     ▼                                            │
│  ┌─────────────────────────────────────┐                        │
│  │ 意图理解器 + 路径规划器 (LLM)       │                        │
│  │ → SAP: Group=Gender, Value=GLU      │                        │
│  │ → Workflow: [描述统计, T检验]       │                        │
│  └──────────────────┬──────────────────┘                        │
│                     │ 用户确认执行                               │
│                     ▼                                            │
│  ┌─────────────────────────────────────┐                        │
│  │ ⏱️ 时机 B: R Service (JIT 护栏)     │                        │
│  │ → 针对 GLU 做正态性检验             │                        │
│  │ → 针对 Gender 分组做方差齐性检验    │                        │
│  │ → StatisticalChecks JSON            │                        │
│  └──────────────────┬──────────────────┘                        │
│                     │ 根据结果决策                               │
│                     ▼                                            │
│  ┌─────────────────────────────────────┐                        │
│  │ 正态 + 方差齐 → T 检验              │                        │
│  │ 非正态       → Mann-Whitney         │                        │
│  │ 方差不齐     → Welch T 检验         │                        │
│  └──────────────────┬──────────────────┘                        │
│                     ▼                                            │
│  执行核心统计 → 生成结果 → 结论生成器                           │
│                                                                  │
└─────────────────────────────────────────────────────────────────┘

4.2 执行时机说明

时机 触发条件 执行层 目的
时机 A 用户上传数据 Python (Tool C) 让 LLM 知道"数据长什么样"
时机 B 用户确认执行前 R Service JIT 护栏:检验统计假设是否满足

⚠️ 关键原则:上传时不知道 Y 是什么,不能对全表做正态性检验。只有 LLM 确定了 Group=X, Value=Y 后,才能在执行前做 JIT 护栏检验。

4.3 Python (Tool C) DataProfile 接口

// 新增接口POST /api/dc/profile
interface DataProfileRequest {
  sessionId: string;  // Tool C 会话 ID
}

interface DataProfileResponse {
  columns: Array<{
    name: string;
    type: 'numeric' | 'categorical' | 'datetime' | 'text';
    missingCount: number;
    missingRate: number;
    uniqueCount: number;
    // 数值列
    mean?: number;
    median?: number;
    std?: number;
    min?: number;
    max?: number;
    outlierCount?: number;
    // 分类列
    topValues?: Array<{ value: string; count: number }>;
  }>;
  summary: {
    totalRows: number;
    totalColumns: number;
    numericColumns: number;
    categoricalColumns: number;
    overallMissingRate: number;
  };
}

4.4 R Service JIT 护栏接口

// 在执行核心工具前调用
interface JITGuardrailRequest {
  sessionId: string;
  toolCode: string;       // e.g., "ST_T_TEST_IND"
  params: {
    groupVar: string;     // e.g., "Gender"
    valueVar: string;     // e.g., "GLU"
  };
}

interface JITGuardrailResponse {
  checks: Array<{
    checkName: string;    // e.g., "正态性检验"
    passed: boolean;
    pValue: number;
    recommendation: string;
  }>;
  suggestedTool: string;  // 如果检验不通过,建议的替代工具
  canProceed: boolean;
}

5. 开发任务清单

5.0 前置任务:数据库 Schema 更新

重要:遵循 docs/04-开发规范/09-数据库开发规范.md,使用 Prisma Migrate

新增表设计(方案 2清晰结构

/// SSA 多步骤流程
model SsaWorkflow {
  id              String   @id @default(uuid())
  sessionId       String   @map("session_id")
  messageId       String?  @map("message_id")     /// 关联的计划消息
  status          String   @default("pending")    /// pending | running | completed | partial | error
  totalSteps      Int      @map("total_steps")
  completedSteps  Int      @default(0) @map("completed_steps")
  workflowPlan    Json     @map("workflow_plan")  /// 原始计划 JSON
  createdAt       DateTime @default(now()) @map("created_at")
  completedAt     DateTime? @map("completed_at")
  
  session         SsaSession @relation(fields: [sessionId], references: [id], onDelete: Cascade)
  steps           SsaWorkflowStep[]
  
  @@index([sessionId], map: "idx_ssa_workflow_session")
  @@map("ssa_workflows")
  @@schema("ssa_schema")
}

/// SSA 流程步骤
model SsaWorkflowStep {
  id              String   @id @default(uuid())
  workflowId      String   @map("workflow_id")
  stepOrder       Int      @map("step_order")
  toolCode        String   @map("tool_code")
  toolName        String   @map("tool_name")
  status          String   @default("pending")    /// pending | running | success | warning | error | skipped
  inputParams     Json?    @map("input_params")
  guardrailChecks Json?    @map("guardrail_checks")  /// JIT 护栏检验结果
  outputResult    Json?    @map("output_result")
  errorInfo       Json?    @map("error_info")
  executionMs     Int?     @map("execution_ms")
  startedAt       DateTime? @map("started_at")
  completedAt     DateTime? @map("completed_at")
  
  workflow        SsaWorkflow @relation(fields: [workflowId], references: [id], onDelete: Cascade)
  
  @@index([workflowId], map: "idx_ssa_workflow_step_workflow")
  @@map("ssa_workflow_steps")
  @@schema("ssa_schema")
}

SsaSession 扩展字段

model SsaSession {
  // ... 现有字段 ...
  
  // 🆕 新增字段
  dataProfile     Json?    @map("data_profile")   /// Python 生成的 DataProfile
  
  // 🆕 新增关系
  workflows       SsaWorkflow[]
}

迁移任务

任务 预估 优先级 依赖
🆕 备份开发数据库 0.5h P0 -
🆕 修改 schema.prisma新增表 + 字段) 1h P0 备份
🆕 执行 prisma migrate dev --name add_ssa_workflow_tables 0.5h P0 Schema
🆕 检查生成的迁移 SQL 0.5h P0 迁移
🆕 本地测试 1h P0 SQL
🆕 更新 Prisma Client 类型 0.5h P0 测试

预估总工时4h约 0.5 天)


5.1 阶段一R 工具扩展6 个新工具)

任务 预估 优先级 依赖
实现 ST_MANN_WHITNEYMann-Whitney U 检验) 4h P0 -
实现 ST_CHI_SQUARE卡方检验 4h P0 -
实现 ST_LOGISTIC_BINARY二元 Logistic 回归) 6h P0 -
实现 ST_T_TEST_PAIRED配对 T 检验) 3h P1 -
实现 ST_CORRELATION相关分析 3h P1 -
实现 ST_DESCRIPTIVE描述性统计 4h P1 -
统一 run_analysis() 入口 + 护栏函数 4h P0 以上全部

预估总工时28h约 4 天)

5.2 阶段二数据诊断器Python + R 分工)

5.2.1 时机 APython DataProfile上传时

任务 预估 优先级 依赖
🆕 扩展 Tool C Python新增 /api/dc/profile 端点 4h P0 -
🆕 实现 DataProfileService 后端服务(调用 Tool C 3h P0 Python 端点
🆕 实现前端 DataProfile 展示卡片 3h P0 后端服务
🆕 集成到 SSA 上传数据流程 2h P0 前端卡片

5.2.2 时机 BR JIT 护栏(执行前)

任务 预估 优先级 依赖
🆕 实现 R 正态性检验函数Shapiro-Wilk 2h P0 -
🆕 实现 R 方差齐性检验函数Levene 2h P0 -
🆕 集成 JIT 护栏到 WorkflowExecutorService 2h P0 R 函数
🆕 实现自动方法降级逻辑 2h P0 JIT 护栏

预估总工时20h约 2.5 天)

5.3 阶段三:路径规划器(多工具流程规划)

任务 预估 优先级 依赖
设计 WorkflowPlan 数据结构 2h P0 -
实现 WorkflowPlannerServiceLLM 规划) 6h P0 数据结构
设计规划 Prompt工具选择逻辑 4h P0 7个工具定义
实现后端 /plan 接口返回多步骤计划 3h P0 Planner
实现前端多步骤计划展示卡片 4h P0 后端接口

预估总工时19h约 2.5 天)

5.4 阶段四:流程执行器(串联执行)

任务 预估 优先级 依赖
实现 WorkflowExecutorService 6h P0 所有 R 工具
实现步骤间结果传递逻辑 3h P0 Executor
实现 SSE 实时进度推送 3h P0 Executor
实现后端 /execute 接口支持多步骤 3h P0 SSE
实现前端多步骤进度展示 4h P0 后端接口
实现执行中断/重试机制 2h P1 基础执行

预估总工时21h约 3 天)

5.5 阶段五:结论生成器增强

任务 预估 优先级 依赖
增强 Critic Prompt多步骤结果整合 3h P0 -
实现多步骤结果汇总逻辑 2h P0 Executor
增强报告模板(方法学 + 局限性) 2h P1 -

预估总工时7h约 1 天)


6. 开发计划时间表

Week 1R 工具扩展
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Day 1-2: ST_MANN_WHITNEY + ST_CHI_SQUARE
Day 3-4: ST_LOGISTIC_BINARY复杂度最高
Day 5:   ST_T_TEST_PAIRED + ST_CORRELATION + ST_DESCRIPTIVE

Week 2核心组件开发
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Day 1-2: 数据诊断器ST_QUALITY_REPORT + DataQualityService
Day 3-4: 路径规划器WorkflowPlannerService + Prompt
Day 5:   流程执行器WorkflowExecutorService

Week 3联调与打磨
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Day 1-2: 前端多步骤 UI + SSE 实时进度
Day 3:   结论生成器增强
Day 4-5: 端到端联调测试 + Bug 修复

总预估3 周15 个工作日)


7. 验收标准

7.1 功能验收

验收项 标准
工具覆盖 7 个工具全部可用
数据诊断 上传数据后自动生成质量核查报告
流程规划 LLM 能根据用户问题规划 2-7 步流程
串联执行 多步骤顺序执行,实时显示进度
结果整合 生成包含所有步骤结果的综合报告

7.2 场景验收(必须通过)

场景 预期流程
"比较两组血压" 描述统计 → T检验 → 非正态时Mann-Whitney
"分析吸烟与肺癌的关系" 描述统计 → 卡方检验
"哪些因素影响糖尿病" 描述统计 → 单因素Logistic → 多因素Logistic
"治疗前后血压变化" 描述统计 → 配对T检验
"年龄与血压相关吗" 描述统计 → 相关分析

7.3 性能验收

指标 标准
数据诊断耗时 < 5 秒200行数据
流程规划耗时 < 3 秒LLM 响应)
单步骤执行耗时 < 10 秒
完整流程耗时 < 60 秒5 步骤)

8. 风险与应对

风险 影响 应对策略
LLM 规划不准确 工具选择错误 增加护栏校验 + 人工确认
R 工具开发延期 阻塞后续开发 可并行开发,先做简单工具
多步骤执行失败 流程中断 实现重试机制 + 部分结果保存
结果传递复杂 步骤间数据格式不匹配 定义统一的 StepResult 结构

9. 🚨 工程规范(架构审查暗礁预警)

来源: 架构审查报告,避免开发过程中踩坑

9.1 暗礁 1R 脚本输出裁剪(防止 LLM Token 超载)

问题R 脚本返回的 JSON 可能包含原始全量数据(如残差数组、原始数据点),导致 LLM Token 超载、响应极慢甚至报错。

强制规范

# ❌ 错误示例:返回原始数据
result <- list(
  p_value = 0.032,
  residuals = residuals(model),  # 可能有几百个值!
  raw_data = df                   # 原始数据!
)

# ✅ 正确示例:只返回精简结果
result <- list(
  p_value = 0.032,
  t_statistic = 2.15,
  df = 48,
  ci_lower = 0.5,
  ci_upper = 2.3,
  effect_size = 0.62,
  # 图表只返回精简坐标点(最多 100 个点)
  plot_data = head(plot_points, 100)
)

检查清单

  • 禁止返回 residualsfitted.values 等长数组
  • 禁止返回原始数据 dfraw_data
  • 图表坐标点限制在 100 个以内
  • JSON 输出大小不超过 50KB

9.2 暗礁 3容错管道支持部分成功

问题:多步骤执行时,一步失败导致整个流程崩溃,用户丢失已成功的结果。

强制规范

// WorkflowExecutorService 必须实现容错管道
interface StepResult {
  step: number;
  toolCode: string;
  status: 'success' | 'warning' | 'error';
  result?: any;
  error?: {
    code: string;
    message: string;
    userHint: string;
  };
  executionMs: number;
}

// ✅ 正确实现:每步结果独立保存
async executeWorkflow(workflow: WorkflowStep[]): Promise<StepResult[]> {
  const results: StepResult[] = [];
  
  for (const step of workflow) {
    try {
      const result = await this.executeStep(step);
      results.push({ ...step, status: 'success', result });
    } catch (error) {
      // ⚠️ 关键:失败不中断,记录错误继续
      results.push({ 
        ...step, 
        status: 'error', 
        error: this.formatError(error) 
      });
      
      // 只有关键错误才中断
      if (this.isCriticalError(error)) break;
    }
  }
  
  return results;  // 返回部分成功的结果
}

前端展示

✅ 描述性统计 (执行成功, 点击查看)
✅ 正态性检验 (执行成功, 点击查看)
❌ T检验 (执行失败: 方差为0, 点击查看原因)
⏸️ Mann-Whitney (已跳过)

9.3 SSE 消息格式规范

强制格式

interface SSEMessage {
  type: 'step_start' | 'step_progress' | 'step_complete' | 'step_error' | 'workflow_complete';
  step: number;
  toolCode: string;
  toolName: string;
  status: 'running' | 'success' | 'error' | 'skipped';
  message: string;
  progress?: number;      // 0-100可选
  result?: any;           // 步骤完成时的结果
  error?: {
    code: string;
    message: string;
    userHint: string;
  };
  timestamp: string;
}

示例消息序列

{"type":"step_start","step":1,"toolCode":"ST_DESCRIPTIVE","toolName":"描述性统计","status":"running","message":"正在生成描述性统计...","timestamp":"2026-02-20T10:00:00Z"}

{"type":"step_complete","step":1,"toolCode":"ST_DESCRIPTIVE","toolName":"描述性统计","status":"success","message":"描述性统计完成","result":{...},"timestamp":"2026-02-20T10:00:02Z"}

{"type":"step_start","step":2,"toolCode":"ST_T_TEST_IND","toolName":"独立样本T检验","status":"running","message":"正在执行正态性检验JIT护栏...","timestamp":"2026-02-20T10:00:02Z"}

{"type":"step_progress","step":2,"toolCode":"ST_T_TEST_IND","toolName":"独立样本T检验","status":"running","message":"正态性检验通过执行T检验...","progress":50,"timestamp":"2026-02-20T10:00:03Z"}

{"type":"step_complete","step":2,"toolCode":"ST_T_TEST_IND","toolName":"独立样本T检验","status":"success","message":"T检验完成","result":{...},"timestamp":"2026-02-20T10:00:05Z"}

{"type":"workflow_complete","status":"success","message":"分析流程执行完成共2个步骤","timestamp":"2026-02-20T10:00:05Z"}

前端渲染效果

┌─────────────────────────────────────────────────────────────────┐
│  执行日志                                                        │
├─────────────────────────────────────────────────────────────────┤
│  [10:00:00] ▶ 正在生成描述性统计...                             │
│  [10:00:02] ✅ 描述性统计完成                                    │
│  [10:00:02] ▶ 正在执行正态性检验JIT护栏...                  │
│  [10:00:03] ▶ 正态性检验通过执行T检验...                      │
│  [10:00:05] ✅ T检验完成                                         │
│  [10:00:05] 🎉 分析流程执行完成共2个步骤                       │
└─────────────────────────────────────────────────────────────────┘

10. Phase 2A 完成后的系统能力

┌─────────────────────────────────────────────────────────────────┐
│                Phase 2A 完成后的 SSA-Pro                        │
├─────────────────────────────────────────────────────────────────┤
│                                                                  │
│  ✅ 用户能做什么:                                               │
│  ────────────────────────────────────────────────────────────── │
│  • 上传数据,自动获得数据质量报告                               │
│  • 用自然语言描述分析需求                                       │
│  • 系统自动规划多步骤分析流程                                   │
│  • 一键执行,实时看到每步进度                                   │
│  • 获得包含完整方法学说明的论文级报告                           │
│                                                                  │
│  ✅ 系统具备的智能:                                             │
│  ────────────────────────────────────────────────────────────── │
│  • 理解医学术语,翻译为统计需求                                 │
│  • 根据数据特征自动调整方法(正态→非参数)                     │
│  • 规划完整分析路径,而非单一方法                               │
│  • 整合多步骤结果,生成综合结论                                 │
│                                                                  │
│  ✅ 后续扩展方向:                                               │
│  ────────────────────────────────────────────────────────────── │
│  • 增加更多统计方法(复制工具模板即可)                         │
│  • 增加咨询模式(无数据也能获得 SAP                           │
│  • 增加配置中台(量产工具管理)                                 │
│  • Phase 3 靶向代码修改(架构已预埋)                           │
│                                                                  │
└─────────────────────────────────────────────────────────────────┘

11. 总结

Phase 2A 是 SSA-Pro MVP 的真正内核。

完成 Phase 2A 后:

  • 5 大核心组件全部跑通
  • 7 个统计方法可用
  • 多工具流程规划能力上线
  • 数据质量核查报告上线
  • 智能化能力完成 85%+

后续工作Phase 2B+)主要是:

  • 扩展更多统计方法(复制粘贴)
  • 增加咨询模式(锦上添花)
  • 配置中台(量产效率)

这才是以终为始的 MVP 开发策略。