# **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):** 提供对话式代码解释器,适合“逻辑性、批量化”的操作(如“把年龄?0岁分箱”、“删除所有空行”、“计算生存时间”)? ### **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:** **意图识别:** 支持模糊指令,如“洗一下数据”、“把男变?”? * **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}) | | "年龄?0分两? | 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'\], ...) |