ASL Tool 3 Development Plan: - Architecture blueprint v1.5 (6 rounds of architecture review, 13 red lines) - M1/M2/M3 sprint checklists (Skeleton Pipeline / HITL Workbench / Dynamic Template Engine) - Code patterns cookbook (9 chapters: Fan-out, Prompt engineering, ACL, SSE dual-track, etc.) - Key patterns: Fan-out with Last Child Wins, Optimistic Locking, teamConcurrency throttling - PKB ACL integration (anti-corruption layer), MinerU Cache-Aside, NOTIFY/LISTEN cross-pod SSE - Data consistency snapshot for long-running extraction tasks Platform capability: - Add distributed Fan-out task pattern development guide (7 patterns + 10 anti-patterns) - Add system-level async architecture risk analysis blueprint - Add PDF table extraction engine design and usage guide (MinerU integration) - Add table extraction source code (TableExtractionManager + MinerU engine) Documentation updates: - Update ASL module status with Tool 3 V2.0 plan readiness - Update system status document (v6.2) with latest milestones - Add V2.0 product requirements, prototypes, and data dictionary specs - Add architecture review documents (4 rounds of review feedback) - Add test PDF files for extraction validation Co-authored-by: Cursor <cursoragent@cursor.com>
152 lines
12 KiB
Markdown
152 lines
12 KiB
Markdown
# **产品需求文档 (PRD):ASL \- 智能文献全景工具箱与证据合成 MVP**
|
||
|
||
**文档版本:** v5.0 (全景工具箱与提取模板引擎增强版)
|
||
|
||
**产品归属:** AI Clinical \- ASL (智能文献系统)
|
||
|
||
**目标受众:** 研发团队(前端/后端/算法/数据)、测试团队、UI/UX 设计师
|
||
|
||
**核心战略:** 构建“松耦合、可插拔的 ASL 循证医学工具箱(Toolkit)”。支持工具的独立使用与无缝串联。引入**动态提取模板引擎**,适应不同专科的个性化数据榨取需求。
|
||
|
||
## **一、 产品开发背景与目标 (Background & Goals)**
|
||
|
||
### **1\. 业务背景**
|
||
|
||
在过往的系统设计中,我们习惯于规划一条从“文献检索 \-\> 初筛 \-\> 复筛 \-\> 提取 \-\> 统计分析”的超长单向流水线。
|
||
|
||
然而真实的科研场景中,用户的需求往往是碎片化的。如果系统强迫用户走完漫长的前置流程,或者下游模块(如 Meta 分析)只能硬性依赖上游模块的数据传入,会极大地限制产品的受众群体。此外,不同医学专科(如肿瘤 vs 心血管)对提取变量的要求千差万别,写死提取表单将导致系统缺乏生命力。
|
||
|
||
### **2\. 产品目标 (Goals)**
|
||
|
||
打破长链路的僵化限制,将 ASL 升级为一个真正的\*\*“模块化循证工具箱 (Modular Evidence Synthesis Toolkit)”\*\*。
|
||
|
||
* **业务目标 1(解耦):** 提供检索、初筛、提取、SR图表、Meta分析等独立工具。每一个下游工具必须提供独立的“标准数据模板下载”和“文件上传”入口,确保 100% 可单点使用。
|
||
* **业务目标 2(灵活):** 在核心的【工具 3:提取工作台】引入“系统通用模板 \+ 用户自定义插槽”机制,满足个性化医学信息提取。
|
||
* **研发目标(MVP):** 明确各模块的 API 契约(JSON Schema),前后端解耦开发,实现“分块开发、分块测试、分块上线”。
|
||
|
||
## **二、 ASL 工具箱全景版图 (The Toolkit Landscape)**
|
||
|
||
整个 ASL 模块被正式划分为以下独立且可串联的通用工具组件:
|
||
|
||
1. ✅ **工具 1:智能文献检索 (Deep Research)** \- *\[已开发完成\]*
|
||
2. ✅ **工具 2:标题摘要初筛 (Title/Abstract Screening)** \- *\[已开发完成\]*
|
||
3. 🚧 **工具 3:全文复筛与智能提取工作台** \- *\[引入动态模板引擎,前端采用 MVP 轻量级 UI 待开发\]*
|
||
4. ⏳ **工具 4:系统综述 (SR) 图表生成器** \- *\[待开发,新增独立文件上传\]*
|
||
5. ⏳ **工具 5:Meta 分析量化引擎** \- *\[待开发,新增独立文件上传\]*
|
||
|
||
## **三、 核心用户旅程 (User Journey \- 灵活场景)**
|
||
|
||
系统不再强制单一路径,而是提供多种灵活的切入场景:
|
||
|
||
### **场景 A:全生命周期串联(The Pipeline)**
|
||
|
||
医生从【工具 1】生成指令并获取 100 篇文献 \-\> 流入【工具 2】初筛 \-\> 流入【工具 3】配置提取模板并进行复筛提取 \-\> 数据一键内部流转至【工具 4】和【工具 5】,最终同屏输出完整的 PRISMA 流程图、基线表和 Meta 森林图。
|
||
|
||
### **场景 B:作为纯粹的图表生成器 (Standalone SR Charting)**
|
||
|
||
1. 医生直接打开【工具 4:SR图表生成器】。
|
||
2. 医生点击\*\*“下载 PRISMA 与基线表标准模板 (Excel)”\*\*。
|
||
3. 医生在本地把自己的数字填入 Excel 后,点击\*\*“上传本地数据源”\*\*。
|
||
4. 系统瞬间渲染出漂亮、符合国际标准的矢量图供其下载。
|
||
|
||
### **场景 C:作为纯粹的 Meta 分析计算器 (Standalone Meta-Analysis)**
|
||
|
||
1. 医生手里已经有一份自己几年前整理好的 Excel 结局数据。
|
||
2. 医生直接打开【工具 5:Meta分析量化引擎】。
|
||
3. 医生点击\*\*“下载 Meta 数据标准模板 (Excel/CSV)”\*\*,将自己的数据整理贴入。
|
||
4. 点击\*\*“上传文件”\*\*,左侧网格自动解析填满,点击运行,R 引擎返回森林图。
|
||
|
||
## **四、 待开发模块详细功能说明 (Pending Features & Design)**
|
||
|
||
以下重点阐述处于\*\*🚧开发中**或**⏳未开发**状态的核心工具模块,特别是**真·解耦的数据源输入设计**与**动态模板引擎\*\*。
|
||
|
||
### **🚧 工具 3:全文复筛与智能提取工作台 (Extraction Workbench)**
|
||
|
||
此工具是连接原始文献与结构化数据的“转换器”。其核心不再是一个写死的表单,而是一个灵活的**模板化提取引擎**。
|
||
|
||
* **FR 3.1 轻量级列表与抽屉表单 UI (List \+ Drawer MVP):**
|
||
* 页面主体是数据表格,点击某篇文献在右侧滑出 Drawer(抽屉)。
|
||
* 抽屉内根据用户选择的【提取模板】动态渲染表单结构。
|
||
* 顶部提供“在新标签页打开 PDF”的降级查阅按钮。
|
||
* **FR 3.2 动态提取模板引擎 (Template Engine) \- \[V5.0 新增核心\]**
|
||
* **设计意图:** 通过“系统通用基座 \+ 用户自定义插槽”解决各专科提取需求不同的问题。
|
||
* **系统内置通用模板库:** 平台方法学专家预置,用户不可篡改但可克隆使用。
|
||
1. 模板 A: 标准 RCT 提取与质量评价 (含基础基线、RoB 2.0 风险评估、标准结局)。
|
||
2. 模板 B: 观察性研究提取 (含随访人年、NOS 偏倚量表)。
|
||
3. 模板 C: 纯方法学质控快速模式 (仅提 RoB/NOS,不提具体数据)。
|
||
* **用户自定义与“魔改” (Clone & Edit):**
|
||
* 交互逻辑:用户新建提取任务时,选择系统模板并将其“克隆”到本项目下。
|
||
* 自定义插槽:用户可点击“添加自定义提取项”,配置字段名(如“糖尿病史比例”)及提示 Prompt。
|
||
* 引擎融合:后端自动将“通用 Schema”与“自定义 Schema”合并,交给大模型执行定向提取。
|
||
* **FR 3.3 结构化提取数据规范 (Data Extraction Dictionary) \- \[V5.0 新增核心\]** 提取目标严格服务于下游的【工具4】与【工具5】。AI 提取必须包含以下四大模块:
|
||
* **模块一:基础元数据:** Study\_ID (第一作者+年份)、NCT\_Number、Study\_Design。
|
||
* **模块二:基线特征 (供工具4拼表):** 干预/对照组名称、各组总人数 (N)、年龄 (Mean±SD)、性别比例,及用户自定义的疾病特征。
|
||
* **模块三:偏倚风险评估 (供工具4画图):** 针对随机序列、分配隐藏、盲法等进行定性评估 (Low/High/Unclear Risk)。
|
||
* **模块四:动态结局指标 (供工具5计算):**
|
||
* *生存分析 (HR)*:提取 HR\_Value, Lower\_CI, Upper\_CI。
|
||
* *二分类数据 (Events)*:提取实验组及对照组各自的 Events 和 Total N。
|
||
* *连续型数据 (Continuous)*:提取实验组及对照组各自的 Mean、SD 和 Total N。
|
||
* **FR 3.4 强约束 Quote 溯源交互 (Anti-Hallucination):**
|
||
* 每一个提取出的核心数值,JSON 中必须强制附带成对的 \_quote 字段。
|
||
* **规范约束:** Quote 必须是一字不差的原文摘录(不超过 30 个词);若来源是表格,需指明表名和行列坐标。
|
||
* **交互呈现:** 在抽屉表单数值输入框下方,用灰色斜体清晰展示其对应的 \_quote 原文。
|
||
* **FR 3.5 状态流转与独立交付:**
|
||
* 底部提供“核准保存 (Approve)”按钮。只有 Approved 的行才有资格进入下游图表和引擎。
|
||
* 列表页提供“导出当前矩阵为标准 Excel 宽表”功能,结束闭环。
|
||
|
||
### **⏳ 工具 4:系统综述 (SR) 图表生成器 (SR Charting Tool)**
|
||
|
||
**设计意图:** 将繁琐的文献筛选账本和基线数据,全自动画成符合国际期刊发表规范的 PRISMA 图和横向比对表。
|
||
|
||
* **FR 4.1 核心:双通道数据输入层 (Dual Input Layer)**
|
||
* **通道 A(项目继承):** 勾选“自动关联本项目流水线数据”,后端查表动态聚合。
|
||
* **通道 B(独立文件上传):**
|
||
* 提供 **“下载标准 SR 模板 (Excel)”** 按钮(内含 Sheet1: PRISMA流转数字, Sheet2: 基线数据表)。
|
||
* 提供 **“拖拽/上传本地 Excel”** 区域。上传后前端将其解析为标准的 JSON 格式送入渲染器。
|
||
* **FR 4.2 PRISMA 2020 流程图渲染:** 接收 JSON 数据,利用 Echarts 或 Mermaid.js 实时渲染标准的级联漏斗图,支持导出 SVG/PNG。
|
||
* **FR 4.3 基线特征自动拼表 (Table 1):** 将独立上传的或继承的患者特征数据,渲染为标准的学术论文 Table 1(横轴干预/对照,纵轴各指标),支持导出 Word。
|
||
* **FR 4.4 偏倚风险 (RoB) 汇总图:** 接收工具 3 提取的或用户上传的风险打分,渲染标准的红绿灯评价图(Traffic Light Plot)。
|
||
|
||
### **⏳ 工具 5:Meta 分析量化引擎 (Meta-Analysis Engine)**
|
||
|
||
**设计意图:** 一个内置了 R 语言统计学专家的超级计算器。合并多个独立研究的数据,得出合并疗效结论。
|
||
|
||
* **FR 5.1 核心:三通道数据输入矩阵 (Tri-Channel Input Matrix)**
|
||
* **通道 A(项目继承):** 一键继承【工具 3】中打上了 Approved 标签的结局指标。
|
||
* **通道 B(独立文件上传):**
|
||
* 提供 **“下载各种数据类型模板”** (如 HR生存分析模板、二分类事件模板、连续型均值模板)。
|
||
* 允许用户上传 Excel,系统自动解析并填满左侧的可视化数据网格(Data Grid)。
|
||
* **通道 C(手动快捷录入):** 左侧数据网格支持类似 Excel 的直接双击输入、修改、新增行。
|
||
* **FR 5.2 R Docker 统计引擎通信:** 后端将页面左侧网格内的数据打包为严格的 JSON,发送给内网部署的 ssa-r-statistics:1.0.1 容器的 Plumber API,指定相应的模型(随机/固定效应)。
|
||
* **FR 5.3 结果展示大屏:**
|
||
* 接收并清晰渲染合并效应量 (Pooled Effect)、95% CI、P 值。
|
||
* 醒目展示 I² 异质性统计量。
|
||
* 渲染 R 语言返回的高清**森林图 (Forest Plot)** 和 **漏斗图 (Funnel Plot)** Base64 图像,提供一键下载原图功能。
|
||
* **FR 5.4 容错降级机制:** 若数据存在问题导致 R 引擎计算失败(如异质性无穷大、输入格式非法),拦截错误并在页面提示,允许用户在左侧网格立刻修改数据并重新运行。
|
||
|
||
## **五、 数据源模板契约 (Data Template Contracts) \- \[开发重点\]**
|
||
|
||
为了实现工具 4 和工具 5 的独立使用,必须在系统中内置以下标准 Excel 模板供用户下载:
|
||
|
||
### **1\. 工具 4 模板:SR\_Charting\_Template.xlsx**
|
||
|
||
* **Sheet 1 (PRISMA\_Data)**:只需填写几个核心数字。
|
||
* 字段:Total\_Identified (检索总数), Duplicates\_Removed (去重数), Title\_Excluded (初筛排除), FullText\_Excluded (全文排除), Final\_Included (最终纳入)。
|
||
* **Sheet 2 (Baseline\_Data)**:
|
||
* 字段:Study\_ID, Intervention\_Name, Control\_Name, Intervention\_N, Control\_N, Age\_Mean\_SD, Male\_Percent 等。
|
||
|
||
### **2\. 工具 5 模板:Meta\_Analysis\_Template.xlsx**
|
||
|
||
提供多个 Sheet 应对不同数据类型:
|
||
|
||
* **Sheet 1 (Hazard\_Ratio)**:字段 Study\_ID, HR\_Value, Lower\_CI, Upper\_CI。
|
||
* **Sheet 2 (Dichotomous)**:字段 Study\_ID, Events\_Intervention, Total\_Intervention, Events\_Control, Total\_Control。
|
||
|
||
## **六、 MVP 验收标准 (Acceptance Criteria)**
|
||
|
||
1. **模板引擎验证 (工具3):**
|
||
* 用户能够在标准 RCT 模板的基础上,成功添加一个自定义字段“糖尿病史比例”,系统能通过大模型成功将其从目标文献中抽取出来并附带 Quote 溯源。
|
||
2. **真·解耦测试通过 (工具4/5):**
|
||
* 用户**不创建项目、不检索文献**,直接打开【工具 5】,下载模板后填入自己伪造的 5 篇文献数据,上传文件,点击运行,系统成功画出森林图。
|
||
3. **全链路串联贯通 (The End-to-End Test):**
|
||
* 使用准备好的 10 篇“PD-1 免疫治疗”高度同质化 RCT 文献,跑通一条完整主线:上传 PDF \-\> 提取 \-\> 列表抽屉复核全点通过 \-\> 一键无缝推送数据至下游 \-\> 成功渲染出森林图与 PRISMA 流程图闭环报告。 |