feat(dc): Complete Tool C quick action buttons Phase 1-2 - 7 functions
Summary: - Implement 7 quick action functions (filter, recode, binning, conditional, dropna, compute, pivot) - Refactor to pre-written Python functions architecture (stable and secure) - Add 7 Python operations modules with full type hints - Add 7 frontend Dialog components with user-friendly UI - Fix NaN serialization issues and auto type conversion - Update all related documentation Technical Details: - Python: operations/ module (filter.py, recode.py, binning.py, conditional.py, dropna.py, compute.py, pivot.py) - Backend: QuickActionService.ts with 7 execute methods - Frontend: 7 Dialog components with complete validation - Toolbar: Enable 7 quick action buttons Status: Phase 1-2 completed, basic testing passed, ready for further testing
This commit is contained in:
@@ -351,7 +351,374 @@ if (error.includes('日期') || error.includes('datetime')) {
|
||||
|
||||
## 🟢 P3: 长期规划(3个月+)
|
||||
|
||||
### TD-C-007: 自定义函数库
|
||||
### TD-C-007: 医学专业功能增强
|
||||
|
||||
> **创建日期**: 2025-12-08
|
||||
> **来源**: 医学统计分析专家审查反馈
|
||||
> **优先级**: P3(功能按钮MVP完成后优先实施)
|
||||
|
||||
**背景**:
|
||||
当前工具C功能按钮开发计划(V1.0)主要面向通用数据清洗场景。医学专业审查发现,针对临床研究数据的特殊需求,需要增加以下专业功能。
|
||||
|
||||
---
|
||||
|
||||
#### 7.1 异常值检测器(优先级:高)
|
||||
|
||||
**医学背景**:
|
||||
- 临床数据常存在录入错误(如:年龄999岁、体重500kg)
|
||||
- 仪器故障导致的异常读数
|
||||
- 需符合临床范围的数据验证
|
||||
|
||||
**功能设计**:
|
||||
```
|
||||
┌─────────────────────────────────────┐
|
||||
│ 异常值检测 │
|
||||
├─────────────────────────────────────┤
|
||||
│ 选择列:[血糖 ▼] │
|
||||
│ │
|
||||
│ 检测方法: │
|
||||
│ ● 临床范围(推荐) │
|
||||
│ 正常范围:[3.9___] - [6.1___] │
|
||||
│ 来源:[ADA指南 ▼] │
|
||||
│ │
|
||||
│ ○ 统计学方法 │
|
||||
│ IQR法(1.5倍四分位距) │
|
||||
│ Z-score法(±3标准差) │
|
||||
│ │
|
||||
│ 处理方式: │
|
||||
│ ○ 仅标记 ● 删除 ○ 替换为缺失 │
|
||||
│ │
|
||||
│ 检测到:23个异常值 │
|
||||
│ [查看详情] │
|
||||
│ │
|
||||
│ [取消] [执行] │
|
||||
└─────────────────────────────────────┘
|
||||
```
|
||||
|
||||
**实现要点**:
|
||||
- 内置常用临床范围(年龄0-120、BMI 10-80、血糖2-30等)
|
||||
- 支持自定义范围
|
||||
- 可视化异常值分布(箱线图)
|
||||
|
||||
---
|
||||
|
||||
#### 7.2 单位转换器(优先级:高)
|
||||
|
||||
**医学背景**:
|
||||
- 不同国家/医院使用不同单位
|
||||
- 文献meta分析需要统一单位
|
||||
- 常见转换错误导致数据不可用
|
||||
|
||||
**功能设计**:
|
||||
```
|
||||
┌─────────────────────────────────────┐
|
||||
│ 医学单位转换 │
|
||||
├─────────────────────────────────────┤
|
||||
│ 选择列:[血糖 ▼] │
|
||||
│ │
|
||||
│ 当前单位:[mg/dL ▼] │
|
||||
│ 目标单位:[mmol/L ▼] │
|
||||
│ │
|
||||
│ 常用转换: │
|
||||
│ • 血糖: mg/dL ↔ mmol/L (÷18.018) │
|
||||
│ • 血脂: mg/dL ↔ mmol/L │
|
||||
│ • 体重: kg ↔ lb (×2.20462) │
|
||||
│ • 身高: cm ↔ inch │
|
||||
│ • 肌酐: mg/dL ↔ μmol/L │
|
||||
│ │
|
||||
│ ☑️ 创建新列 │
|
||||
│ 新列名:[血糖_mmol_L_________] │
|
||||
│ │
|
||||
│ 预览:5.5 mg/dL → 0.31 mmol/L │
|
||||
│ │
|
||||
│ [取消] [执行] │
|
||||
└─────────────────────────────────────┘
|
||||
```
|
||||
|
||||
**实现要点**:
|
||||
- 内置医学常用转换公式
|
||||
- 支持批量转换
|
||||
- 自动验证转换后的合理性
|
||||
|
||||
---
|
||||
|
||||
#### 7.3 日期计算器(优先级:高)
|
||||
|
||||
**医学背景**:
|
||||
- 计算年龄、随访时间、生存时间是高频需求
|
||||
- 日期格式不统一(2025-01-01 vs 2025/1/1)
|
||||
- 需要处理闰年、时间窗等复杂场景
|
||||
|
||||
**功能设计**:
|
||||
```
|
||||
┌─────────────────────────────────────┐
|
||||
│ 日期/时间计算 │
|
||||
├─────────────────────────────────────┤
|
||||
│ 计算类型: │
|
||||
│ ● 计算年龄(从出生日期) │
|
||||
│ 出生日期列:[birth_date ▼] │
|
||||
│ 参考日期:● 今天 ○ 指定列 │
|
||||
│ 新列名:[年龄_________] │
|
||||
│ │
|
||||
│ ○ 计算时间间隔 │
|
||||
│ 开始日期:[入院日期 ▼] │
|
||||
│ 结束日期:[出院日期 ▼] │
|
||||
│ 单位:[天 ▼](天/周/月/年) │
|
||||
│ 新列名:[住院天数_____] │
|
||||
│ │
|
||||
│ ○ 判断时间窗(是否在X天内) │
|
||||
│ 事件日期:[随访日期 ▼] │
|
||||
│ 基线日期:[入组日期 ▼] │
|
||||
│ 时间窗:[30____] 天内 │
|
||||
│ 新列名:[30天内随访____] │
|
||||
│ │
|
||||
│ [取消] [预览] [执行] │
|
||||
└─────────────────────────────────────┘
|
||||
```
|
||||
|
||||
**实现要点**:
|
||||
- 自动检测日期格式
|
||||
- 处理缺失日期
|
||||
- 支持多种时间单位
|
||||
|
||||
---
|
||||
|
||||
#### 7.4 临床截断值分箱(优先级:中)
|
||||
|
||||
**医学背景**:
|
||||
- 医学分类应基于循证医学证据(如:WHO、ADA指南)
|
||||
- 任意分箱会损失信息且无临床意义
|
||||
- 需要可追溯的分类标准
|
||||
|
||||
**功能改进**:
|
||||
```
|
||||
在现有"生成分类变量"功能中增加:
|
||||
|
||||
┌─────────────────────────────────────┐
|
||||
│ 连续变量分箱 │
|
||||
├─────────────────────────────────────┤
|
||||
│ 选择数值列:[BMI ▼] │
|
||||
│ │
|
||||
│ 分箱方式: │
|
||||
│ ● 临床截断值(推荐)⭐ │
|
||||
│ 标准:[WHO标准 ▼] │
|
||||
│ <18.5: 低体重 │
|
||||
│ 18.5-24.9: 正常 │
|
||||
│ 25-29.9: 超重 │
|
||||
│ ≥30: 肥胖 │
|
||||
│ 参考:WHO 2000 │
|
||||
│ │
|
||||
│ [切换为中国标准 ▼] │
|
||||
│ │
|
||||
│ ○ 自定义切点(需注明依据) │
|
||||
│ ○ 等宽/等频分箱(⚠️会损失信息) │
|
||||
│ │
|
||||
│ [取消] [预览分布] [执行] │
|
||||
└─────────────────────────────────────┘
|
||||
|
||||
支持的临床标准:
|
||||
- BMI分类:WHO、中国成人、儿童标准
|
||||
- 血压分级:ESH/ESC高血压指南
|
||||
- 肾功能分期:KDIGO CKD分期
|
||||
- 年龄分组:WHO标准、临床试验常用
|
||||
- 血糖分类:ADA糖尿病诊断标准
|
||||
```
|
||||
|
||||
**实现要点**:
|
||||
- 内置10+常用临床标准
|
||||
- 可导出分类依据(供论文写作)
|
||||
- 提示等宽分箱的局限性
|
||||
|
||||
---
|
||||
|
||||
#### 7.5 高级缺失值填补(优先级:中)
|
||||
|
||||
**医学背景**:
|
||||
- MICE假设数据MAR(随机缺失),但临床数据常为MNAR(非随机缺失)
|
||||
- 病情严重患者更易失访(缺失非随机)
|
||||
- 需要敏感性分析
|
||||
|
||||
**功能改进**:
|
||||
```
|
||||
在现有"缺失值填补"功能中增加:
|
||||
|
||||
┌─────────────────────────────────────┐
|
||||
│ 缺失值填补(医学专用) │
|
||||
├─────────────────────────────────────┤
|
||||
│ 选择列:[FMA评分 ▼] [+] │
|
||||
│ │
|
||||
│ 填补方法: │
|
||||
│ ● 末次观测值结转(LOCF)⭐ │
|
||||
│ 适用:纵向数据,假设无变化 │
|
||||
│ │
|
||||
│ ○ 基线观测值结转(BOCF) │
|
||||
│ 适用:保守估计,假设无改善 │
|
||||
│ │
|
||||
│ ○ 最坏情况插补(Worst Case) │
|
||||
│ 适用:敏感性分析 │
|
||||
│ 最坏值:[0____] │
|
||||
│ │
|
||||
│ ○ 中位数/均值填补 │
|
||||
│ ☑️ 按分组填补 │
|
||||
│ 分组列:[性别▼][年龄组▼] │
|
||||
│ │
|
||||
│ ○ 多重插补(MICE) │
|
||||
│ ⚠️ 假设数据MAR,需检验适用性 │
|
||||
│ │
|
||||
│ 预览:将填补 32 个缺失值 │
|
||||
│ │
|
||||
│ [取消] [敏感性分析] [执行] │
|
||||
└─────────────────────────────────────┘
|
||||
```
|
||||
|
||||
**实现要点**:
|
||||
- 明确各方法的适用前提
|
||||
- 提供敏感性分析(对比不同方法结果)
|
||||
- 生成填补报告(供论文方法学描述)
|
||||
|
||||
---
|
||||
|
||||
#### 7.6 Codebook(数据字典)生成(优先级:中)
|
||||
|
||||
**医学背景**:
|
||||
- GCP(药物临床试验质量管理规范)要求可追溯性
|
||||
- 期刊要求提供数据字典
|
||||
- 伦理审查需要变量说明
|
||||
|
||||
**功能设计**:
|
||||
```
|
||||
自动生成数据字典:
|
||||
|
||||
┌──────────────────────────────────────┐
|
||||
│ 变量名 │ 原变量 │ 编码规则 │ 创建时间│
|
||||
├────────┼────────┼──────────┼─────────┤
|
||||
│研究中心│研究中心│1=黑龙江 │12-08 │
|
||||
│_编码 │ │2=山东 │10:30 │
|
||||
│ │ │3=广州 │ │
|
||||
├────────┼────────┼──────────┼─────────┤
|
||||
│BMI分类 │BMI │1=正常 │12-08 │
|
||||
│ │ │2=超重 │10:35 │
|
||||
│ │ │3=肥胖 │ │
|
||||
│ │ │参考:WHO │ │
|
||||
└────────┴────────┴──────────┴─────────┘
|
||||
|
||||
导出选项:
|
||||
- Excel格式(常用)
|
||||
- Word格式(伦理报告)
|
||||
- CSV格式(SPSS导入)
|
||||
```
|
||||
|
||||
**实现要点**:
|
||||
- 每次重编码/分箱自动更新
|
||||
- 记录操作人和时间
|
||||
- 支持手动添加注释
|
||||
|
||||
---
|
||||
|
||||
#### 7.7 样本筛选流程图(优先级:低)
|
||||
|
||||
**医学背景**:
|
||||
- CONSORT声明要求报告筛选流程
|
||||
- 期刊审稿要求提供流程图
|
||||
- 有助于发现筛选逻辑错误
|
||||
|
||||
**功能设计**:
|
||||
```
|
||||
在"高级筛选"功能中增加:
|
||||
|
||||
自动生成筛选流程:
|
||||
|
||||
┌──────────────────────┐
|
||||
│ 原始数据: 1000例 │
|
||||
└──────┬───────────────┘
|
||||
│
|
||||
↓ 排除年龄<18岁
|
||||
┌──────────────────────┐
|
||||
│ 剩余: 950例 (-50) │
|
||||
└──────┬───────────────┘
|
||||
│
|
||||
↓ 排除主要结局缺失
|
||||
┌──────────────────────┐
|
||||
│ 剩余: 920例 (-30) │
|
||||
└──────┬───────────────┘
|
||||
│
|
||||
↓ 排除重复记录
|
||||
┌──────────────────────┐
|
||||
│ 最终纳入: 910例 │
|
||||
└──────────────────────┘
|
||||
|
||||
[导出为图片] [导出为Word]
|
||||
```
|
||||
|
||||
**实现要点**:
|
||||
- 记录每步筛选的条件和结果
|
||||
- 生成可发表的流程图
|
||||
- 支持导出为高分辨率图片
|
||||
|
||||
---
|
||||
|
||||
#### 7.8 数据质量报告(优先级:低)
|
||||
|
||||
**医学背景**:
|
||||
- 数据质量直接影响研究结论
|
||||
- 需要在分析前进行质量评估
|
||||
- 期刊要求描述数据质量
|
||||
|
||||
**功能设计**:
|
||||
```
|
||||
点击"生成数据质量报告":
|
||||
|
||||
生成PDF报告,包含:
|
||||
1. 数据概况
|
||||
- 样本量、变量数
|
||||
- 数据收集时间跨度
|
||||
|
||||
2. 完整性分析
|
||||
- 各变量缺失率
|
||||
- 缺失模式(MCAR/MAR/MNAR检验)
|
||||
|
||||
3. 一致性检查
|
||||
- 逻辑错误(如:出生日期>死亡日期)
|
||||
- 重复记录
|
||||
|
||||
4. 分布分析
|
||||
- 连续变量分布(直方图+Q-Q图)
|
||||
- 分类变量频数表
|
||||
|
||||
5. 异常值检测
|
||||
- 箱线图
|
||||
- 异常值列表
|
||||
|
||||
6. 建议操作
|
||||
- 需要处理的问题清单
|
||||
- 优先级排序
|
||||
```
|
||||
|
||||
**实现要点**:
|
||||
- 自动生成可发表的表格/图
|
||||
- 支持导出为Word/PDF
|
||||
- 符合临床研究报告规范
|
||||
|
||||
---
|
||||
|
||||
### 实施计划
|
||||
|
||||
| 功能 | 优先级 | 预计工时 | 计划时间 |
|
||||
|------|--------|---------|---------|
|
||||
| 7.1 异常值检测器 | 高 | 2天 | Phase 4 |
|
||||
| 7.2 单位转换器 | 高 | 1.5天 | Phase 4 |
|
||||
| 7.3 日期计算器 | 高 | 2天 | Phase 4 |
|
||||
| 7.4 临床截断值分箱 | 中 | 1天 | Phase 3增强 |
|
||||
| 7.5 高级缺失值填补 | 中 | 1.5天 | Phase 3增强 |
|
||||
| 7.6 Codebook生成 | 中 | 1天 | Phase 5 |
|
||||
| 7.7 筛选流程图 | 低 | 1.5天 | Phase 5 |
|
||||
| 7.8 数据质量报告 | 低 | 2天 | Phase 5 |
|
||||
|
||||
**总计**:12.5天工时
|
||||
|
||||
---
|
||||
|
||||
### TD-C-008: 自定义函数库
|
||||
|
||||
**愿景**: 用户可保存常用代码为函数,一键复用
|
||||
|
||||
@@ -368,7 +735,7 @@ apply_function("血压分类")
|
||||
|
||||
---
|
||||
|
||||
### TD-C-007: 协作功能
|
||||
### TD-C-009: 协作功能
|
||||
|
||||
**愿景**: 多人协作数据清洗
|
||||
|
||||
@@ -378,16 +745,15 @@ apply_function("血压分类")
|
||||
|
||||
---
|
||||
|
||||
### TD-C-008: 数据质量报告
|
||||
### TD-C-010: AI智能推荐
|
||||
|
||||
**愿景**: 自动生成数据质量报告
|
||||
**愿景**: AI主动检测数据问题并推荐操作
|
||||
|
||||
```python
|
||||
quality_report = {
|
||||
"缺失值分析": {...},
|
||||
"离群值检测": {...},
|
||||
"数据分布": {...},
|
||||
"建议操作": [...]
|
||||
quality_check = {
|
||||
"发现23个异常值": "建议使用异常值检测器",
|
||||
"年龄列缺失32%": "建议使用LOCF填补",
|
||||
"BMI未分类": "建议使用WHO标准分箱",
|
||||
}
|
||||
```
|
||||
|
||||
@@ -399,7 +765,7 @@ quality_report = {
|
||||
- P0: 1项(前端UI,阻塞发布)
|
||||
- P1: 2项(Session持久化、Prompt优化)
|
||||
- P2: 3项(版本管理、大文件、复杂场景优化)
|
||||
- P3: 3项(长期规划)
|
||||
- P3: 4项(长期规划 + 医学专业功能增强)
|
||||
|
||||
### 按工时
|
||||
- 0.5天: 1项(复杂场景优化)
|
||||
@@ -407,11 +773,14 @@ quality_report = {
|
||||
- 1-2天: 2项(版本管理、大文件)
|
||||
- 3天以上: 1项(前端UI)
|
||||
- 持续优化: 1项(Prompt优化)
|
||||
- **医学专业功能**: 12.5天(8个子功能)
|
||||
|
||||
### 总计
|
||||
- **技术债务总数**: 9项
|
||||
- **技术债务总数**: 13项(含医学专业功能8个子项)
|
||||
- **近期必做**: 4项(P0-P1 + 复杂场景)
|
||||
- **预计总工时**: ~10.5-12.5天
|
||||
- **预计总工时**: ~23-25天
|
||||
- MVP相关:~10.5-12.5天
|
||||
- 医学专业增强:~12.5天
|
||||
|
||||
---
|
||||
|
||||
@@ -419,11 +788,12 @@ quality_report = {
|
||||
|
||||
| 日期 | 版本 | 更新内容 | 更新人 |
|
||||
|------|------|---------|--------|
|
||||
| 2025-12-08 | V1.2 | 新增TD-C-007(医学专业功能增强8项) | AI Assistant |
|
||||
| 2025-12-07 | V1.1 | 新增TD-C-006(复杂场景Prompt优化) | AI Assistant |
|
||||
| 2025-12-06 | V1.0 | 初始创建,Day 3 MVP完成后梳理 | AI Assistant |
|
||||
|
||||
---
|
||||
|
||||
**文档状态**: ✅ 已创建
|
||||
**下次更新**: Day 5或Week 3
|
||||
**文档状态**: ✅ 已更新
|
||||
**下次更新**: Phase 4开发完成后
|
||||
|
||||
|
||||
Reference in New Issue
Block a user