Files
AIclinicalresearch/docs/03-业务模块/SSA-智能统计分析/04-开发计划/08-Block-based动态结果渲染开发计划.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

5.5 KiB
Raw Blame History

Block-based 动态结果渲染开发计划

版本: v1.0
创建日期: 2026-02-20
状态: 📋 待开始
优先级: P0架构级改进影响所有后续工具开发
关联文档: 06-开发记录/SSA-Pro 动态结果渲染与通信协议规范.md


1. 背景与动机

当前痛点

目前每个 R 工具返回独特的数据结构,导致:

  • R 端:每个工具自定义 results 字段T检验有 group_statsLogistic有 coefficients,描述性统计有 variables
  • Node.js 后端:用 ...response.data.results 硬展开,手动拼装 plotsresult_table 等字段
  • 前端:为每种工具写 if (isDescriptive) / if (r?.coefficients) 等分支渲染逻辑
  • 导出报告Word 导出同样需要为每种工具写独立的构建逻辑

核心矛盾R 工具数量增长(当前 7 个,目标 100+),但前端/后端的维护成本线性增长。

目标

采用 Block-based 协议,实现:

  • R 端输出标准化的 report_blocks 数组
  • Node.js 零维护透传
  • 前端一个 DynamicReport 组件渲染所有工具的结果
  • Word 导出一个 exportBlocksToWord 函数处理所有工具

2. 技术方案

2.1 四种 Block 类型

Block 类型 用途 典型场景
markdown 文本解读、警告、结论 AI 统计解读、护栏警告、方法说明
table 三线表、矩阵 分组统计表、回归系数表、列联表、描述性统计表
image 可视化图表 箱线图、森林图、直方图、马赛克图
key_value 核心统计量高亮 P值、统计量、效应量、AIC

2.2 协议结构

{
  "status": "success",
  "trace_log": ["..."],
  "reproducible_code": "library(ggplot2)...",
  "report_blocks": [
    {
      "type": "key_value",
      "title": "核心指标",
      "items": [
        {"label": "统计方法", "value": "Independent T-Test"},
        {"label": "t 值", "value": "2.45"},
        {"label": "P 值", "value": "0.015", "status": "significant"}
      ]
    },
    {
      "type": "table",
      "title": "Table 1. 分组统计",
      "data": {
        "headers": ["Group", "N", "Mean ± SD"],
        "rows": [["Drug", "60", "14.5 ± 3.2"], ["Placebo", "60", "8.2 ± 2.8"]]
      }
    },
    {
      "type": "image",
      "title": "Figure 1. 分布对比",
      "format": "base64",
      "src": "iVBORw0KGgo...",
      "caption": "箱线图展示两组分布"
    },
    {
      "type": "markdown",
      "content": "**AI 解读:** 两组差异具有统计学意义 (P = 0.015)..."
    }
  ]
}

3. 实施计划

Phase 1基础设施1 天)

任务 层级 说明 预估
1.1 创建 DynamicReport.tsx 组件 前端 4 个 Block 渲染子组件 2h
1.2 创建 exportBlocksToWord.ts 前端 Block 数组 → Word 文档 2h
1.3 后端透传 report_blocks 后端 WorkflowExecutorService 透传 0.5h
1.4 R 端辅助函数库 block_helpers.R R make_table_block(), make_image_block() 1h
1.5 SSAWorkspacePane 集成 前端 优先读 report_blocksfallback 旧逻辑 1h

Phase 2R 工具改造2 天)

任务 R 工具 当前 Block 输出内容 预估
2.1 descriptive.R summary key_value + 数值变量 table + 分类变量 table + 直方图/柱状图 image 1.5h
2.2 t_test_ind.R 核心指标 key_value + 分组统计 table + AI 解读 markdown + 箱线图 image 1h
2.3 logistic_binary.R 模型拟合 key_value + 回归系数 table + 森林图 image + AI 解读 markdown 1.5h
2.4 chi_square.R 核心指标 key_value + 列联表 table + 马赛克图 image 1h
2.5 correlation.R 核心指标 key_value + 散点图 image + AI 解读 markdown 1h
2.6 t_test_paired.R 核心指标 key_value + 配对差值 table + image 1h
2.7 mann_whitney.R 核心指标 key_value + 分组统计 table + image 1h

Phase 3清理旧代码0.5 天)

任务 说明 预估
3.1 移除 SSAWorkspacePane 中的自定义渲染逻辑 删除 isDescriptiver?.coefficients 等分支 1h
3.2 移除 useAnalysis.ts 中的自定义导出逻辑 删除 isDescStepclassifyExportVar 1h
3.3 移除后端 result 字段展开逻辑 删除 ...response.data.results 拼装 0.5h
3.4 更新文档 更新开发指南、R 服务开发规范 0.5h

4. 向后兼容策略

采用 渐进式迁移,不一刀切:

  1. R 工具同时返回 results(旧)和 report_blocks(新)
  2. 前端优先读 report_blocks,如果不存在则 fallback 到旧的自定义渲染
  3. 全部 7 个工具迁移完成后,再删除旧渲染代码

5. 预期收益

指标 改造前 改造后
新增 1 个 R 工具的前端开发量 50-100 行自定义渲染 + 50 行导出逻辑 0 行
新增 1 个 R 工具的后端开发量 10-20 行字段映射 0 行
前端结果渲染组件数 N 个(每种工具一个分支) 1 个 DynamicReport
Word 导出维护成本 每种工具单独处理 1 个通用函数

6. 总工时估算

Phase 工时
Phase 1基础设施 6.5h
Phase 2R 工具改造 8h
Phase 3清理旧代码 3h
合计 ~17.5h(约 2.5 天)

下一步: 待用户确认后开始 Phase 1 实施。