# **PRD:Tool C \- 科研数据编辑器 (The Research Editor)** | 文档版本 | V6.0 (AI Code Interpreter 增强版) | | :---- | :---- | | **产品形态** | Web 端双核编辑器 (GUI 可视化操作 \+ LUI 自然语言交互) | | **核心价值** | 将“Excel 的易用性”与“Python 的强大能力”结合。医生既可以通过鼠标点击完成微操,也可以通过自然语言指挥 AI 编写代码完成复杂的清洗任务(如长宽转换、多重插补)。 | | **技术底座** | Node.js BFF \+ Python Server-side Sandbox \+ DeepSeek-V3 | ## **一、 产品核心理念 (Core Philosophy)** ### **1.1 双核驱动 (Dual-Core Interaction)** * **左脑 (GUI):** 提供类似 Excel 的网格和工具栏,适合“直觉式、原子化”的操作(如手动修改一个值、排序、筛选)。 * **右脑 (AI Copilot):** 提供对话式代码解释器,适合“逻辑性、批量化”的操作(如“把年龄按60岁分箱”、“删除所有空行”、“计算生存时间”)。 ### **1.2 可控黑盒 (Controllable Blackbox)** AI 不直接修改数据,而是**生成 Python 代码**。系统在执行前展示\*\*“预操作卡片”\*\*,由用户确认执行,确保科研数据的严谨性。 ## **二、 核心业务流程 (User Flow)** 数据导入 \-\> 双模式清洗 (点击工具栏 OR 对话 AI) \-\> 代码/操作执行 \-\> 实时预览更新 \-\> 版本快照 \-\> 导出结果 ## **三、 功能模块详解 (Functional Requirements)** ### **1\. 界面布局 (The Workspace)** * **P0:** **分栏布局 (Split View):** * **左侧 (70%):** 超级网格 (The Grid),展示数据预览。 * **右侧 (30%):** 智能侧边栏 (Smart Sidebar),包含 **\[统计概览\]** 和 **\[AI 助手\]** 两个 Tab。 * **P0:** **全局状态指示:** * 当 AI 正在思考或后端正在计算时,左侧网格显示 **“AI 处理中...”** 遮罩,并锁定编辑,防止双写冲突。 ### **2\. 顶部扁平工具栏 (Flat Toolbar) —— GUI 核心** *保留高频、标准化的操作入口,作为 AI 的补充。* * **P0: 变量加工:** * **生成新变量:** 弹窗公式构建器。 * **计算时间差:** 内置医学常数 (年=365.25天)。 * **生成哑变量:** 回归分析专用。 * **横纵表转换 (Pivot):** \* *交互升级:* 点击后不再只是纯前端计算,而是调用后端 Python 逻辑,支持处理更复杂的转换。 * **P0: 质量治理:** * **查找重复值:** 按 ID 或全字段查重。 * **多重插补 (MICE):** 全局入口,调用后端 sklearn 或 fancyimpute 库。 * **P0: 样本筛选:** 构建入排标准。 ### **3\. AI Copilot 智能助手 (The Brain) —— V6 核心升级** *位于右侧侧边栏的 \[AI 助手\] Tab。* #### **3.1 自然语言指令解析** * **P0:** **意图识别:** 支持模糊指令,如“洗一下数据”、“把男变成1”。 * **P0:** **上下文感知:** AI 能够读取当前的列名 (Metadata) 和前 5 行数据示例,理解数据含义。 #### **3.2 代码解释器模式 (Code Interpreter)** * **P0:** **代码生成:** AI 针对用户需求,生成可执行的 **Python (Pandas)** 代码块。 * **P0:** **预操作卡片 (Action Card):** * AI 不直接执行代码。 * 界面展示一个卡片:操作类型: 数据分箱 | 目标列: 年龄 | 代码预览。 * 按钮:**\[运行代码\]** | **\[取消\]**。 * **P0:** **执行反馈:** * 执行成功:显示 ✅,左侧表格自动刷新。 * 执行失败:AI 自动分析 Error Log,尝试自我修正代码并建议重试。 #### **3.3 典型 AI 场景支持** * **高级清洗:** “把所有列的异常值(\>3倍标准差)替换为缺失值”。 * **复杂提取:** “从‘诊断’列中提取出由‘/’分隔的第二部分,生成新列”。 * **批量处理:** “删除所有缺失率超过 50% 的列”。 ### **4\. 智能统计面板 (Insight Panel)** *位于右侧侧边栏的 \[统计概览\] Tab。* * **P0:** **列联动:** 点击左侧网格某一列,右侧自动显示该列的分布图(直方图/频次图)。 * **P0:** **快捷操作:** 图表下方直接提供“填补”、“分箱”、“映射”等快捷按钮。 ### **5\. 导出与流转 (Export)** * **P0:** **结果导出:** 支持 Excel (.xlsx) 和 SPSS (.sav) 格式。 * **P0:** **操作审计:** 导出的文件中,附带一份 **"清洗日志 (Cleaning Log)"**,记录了所有的 AI 代码和手动操作步骤(用于科研溯源)。 ## **四、 数据与性能策略 (Data Strategy)** ### **4.1 性能准入 (Guardrails)** * **文件大小限制:** 单个文件 **\< 20MB**。 * **行数限制:** 建议 **\< 50,000 行** 以保证前端渲染流畅度。 * *策略:* 后端 Python 可以处理百万行,但前端 AG Grid 仅加载前 100-1000 行作为预览(Preview Mode),导出时才生成全量文件。 ### **4.2 安全与隐私** * **P0:** **沙箱隔离:** AI 生成的 Python 代码必须在服务端的安全沙箱(Docker/SAE)中运行,禁止访问外网和系统文件。 * **P0:** **数据脱敏:** 确保输入编辑器的数据已在前置环节(工具 B)完成了 PII 脱敏。 ## **五、 埋点与统计** * **AI 采纳率:** 展示 Action Card 后,用户点击“运行”的比例。 * **代码报错率:** AI 生成的代码在后端执行失败的比例。 * **常用指令 Top 10:** 统计医生最常对 AI 说的话。 ## **六、 附录:AI 指令集示例 (Few-Shot Examples)** | 用户指令 | AI 动作 (Action) | 生成代码逻辑 (Python Pandas) | | :---- | :---- | :---- | | "把性别转为数字" | Recode | df\['sex'\] \= df\['sex'\].map({'男':1, '女':0}) | | "年龄按60分两组" | Binning | df\['age\_group'\] \= pd.cut(df\['age'\], bins=\[0,60,150\], labels=\['0','1'\]) | | "删除没有ID的行" | Filter | df \= df.dropna(subset=\['patient\_id'\]) | | "计算BMI" | Formula | df\['bmi'\] \= df\['weight'\] / (df\['height'\]/100)\*\*2 | | "把每个人的一行变成多行" | Pivot/Melt | df \= df.melt(id\_vars=\['id'\], ...) |