Summary: - Complete IIT Manager Agent MVP Day 1 (12.5% progress) - Database: Create iit_schema with 5 tables (IitProject, IitPendingAction, IitTaskRun, IitUserMapping, IitAuditLog) - Backend: Add module structure (577 lines) and types (223 lines) - WeChat: Configure Enterprise WeChat app (CorpID, AgentID, Secret) - WeChat: Obtain web authorization and JS-SDK authorization - WeChat: Configure trusted domain (iit.xunzhengyixue.com) - Frontend: Deploy v1.2 with WeChat domain verification file - Frontend: Fix CRLF issue in docker-entrypoint.sh (CRLF -> LF) - Testing: 11/11 database CRUD tests passed - Testing: Access Token retrieval test passed - Docs: Create module status and development guide - Docs: Update MVP task list with Day 1 completion - Docs: Rename deployment doc to SAE real-time status record - Deployment: Update frontend internal IP to 172.17.173.80 Technical Details: - Prisma: Multi-schema support (iit_schema) - pg-boss: Job queue integration prepared - Taro 4.x: Framework selected for WeChat Mini Program - Shadow State: Architecture foundation laid - Docker: Fix entrypoint script line endings for Linux container Status: Day 1/14 complete, ready for Day 2 REDCap integration
6.4 KiB
6.4 KiB
工具C - 缺失值处理功能开发计划 - 更新说明
📝 更新日期:2025-12-10
✅ 已完成的更新
1. Phase 1功能清单
新增第5、6项:
-
- 前向填充(Forward Fill)
- 适用于:时间序列数据、有顺序的观察数据
- 实现:
df[column].fillna(method='ffill'),用前一个非缺失值填充 - 示例:[10, NaN, NaN, 20] → [10, 10, 10, 20]
-
- 后向填充(Backward Fill)
- 适用于:时间序列数据、有顺序的观察数据
- 实现:
df[column].fillna(method='bfill'),用后一个非缺失值填充 - 示例:[10, NaN, NaN, 20] → [10, 20, 20, 20]
2. Phase 2功能清单
移除:前向/后向填充(已移到Phase 1)
保留:分组填补、线性插值、KNN填补、组合填补
3. UI设计更新
Tab 2填补方法新增:
- ⚪ 前向填充(用前一个值填充,适合时间序列)
- ⚪ 后向填充(用后一个值填充,适合时间序列)
4. Python函数签名更新
def fillna_simple(
...
method: Literal['mean', 'median', 'mode', 'constant', 'ffill', 'bfill'], # 新增ffill和bfill
...
)
5. TypeScript类型更新
method: 'mean' | 'median' | 'mode' | 'constant' | 'ffill' | 'bfill'
6. 测试用例更新
从14个增加到18个:
- 新增TC-6:前向填充
- 新增TC-7:后向填充
- 新增TC-11:前向填充边界(首行NA)
- 新增TC-12:后向填充边界(末行NA)
- 原TC-6
TC-14 重新编号为 TC-8TC-18
7. 测试数据准备更新
新增:时间序列列:随访血压(有顺序,缺失18%)- 用于测试前/后向填充
8. 时间估算更新
| 项目 | 原计划 | 新计划 | 增加时间 |
|---|---|---|---|
| Python后端 - 简单填补 | 40分钟 | 50分钟 | +10分钟 |
| 前端UI - Tab 2 | 40分钟 | 50分钟 | +10分钟 |
| 测试 | 40分钟(14个用例) | 50分钟(18个用例) | +10分钟 |
| 总计 | 约5-6小时 | 约6-7小时 | +30分钟 |
🎯 功能完整清单(Phase 1)
| 编号 | 功能 | 适用场景 | 实现方法 |
|---|---|---|---|
| 1 | 均值填补 | 数值型变量,正态分布 | fillna(mean()) |
| 2 | 中位数填补 | 数值型变量,偏态分布 | fillna(median()) |
| 3 | 众数填补 | 分类变量、离散数值 | fillna(mode()[0]) |
| 4 | 固定值填补 | 任何类型,用户指定 | fillna(value) |
| 5 | 前向填充 ⭐ | 时间序列、随访数据 | fillna(method='ffill') |
| 6 | 后向填充 ⭐ | 时间序列、预测数据 | fillna(method='bfill') |
| 7 | MICE多重插补 | 缺失率5%-30%,需考虑变量关系 | IterativeImputer |
📋 完整测试用例清单(18个)
| 编号 | 功能 | 测试场景 | 预期结果 |
|---|---|---|---|
| TC-1 | 均值填补 | 对"年龄"列使用均值填补 | 创建新列,缺失值被均值填充 ✅ |
| TC-2 | 中位数填补 | 对"体重"列使用中位数填补 | 创建新列,缺失值被中位数填充 ✅ |
| TC-3 | 众数填补 | 对"婚姻状况"列使用众数填补 | 创建新列,缺失值被众数填充 ✅ |
| TC-4 | 固定值填补(数值) | 对"年龄"列填充固定值"0" | 创建新列,所有缺失值变为0 ✅ |
| TC-5 | 固定值填补(文本) | 对"婚姻状况"列填充"未知" | 创建新列,所有缺失值变为"未知" ✅ |
| TC-6 | 前向填充 ⭐ | 对随访血压列使用前向填充 | 缺失值被前一个非缺失值填充 ✅ |
| TC-7 | 后向填充 ⭐ | 对随访血压列使用后向填充 | 缺失值被后一个非缺失值填充 ✅ |
| TC-8 | MICE填补 | 选择"收缩压"+"舒张压",执行MICE | 创建2个新列(_MICE后缀)✅ |
| TC-9 | 新列位置验证 ⭐ | 对"列A"填补,查看新列位置 | 新列紧邻原列右侧 ✅ |
| TC-10 | MICE新列位置 ⭐ | 对"列A"+"列C"执行MICE | 各新列紧邻其原列 ✅ |
| TC-11 | 前向填充边界 ⭐ | 对首行为NA的列前向填充 | 首行NA保持NA(无前值)✅ |
| TC-12 | 后向填充边界 ⭐ | 对末行为NA的列后向填充 | 末行NA保持NA(无后值)✅ |
| TC-13 | 统计信息准确性 | 选择任意列,查看统计 | 显示正确的缺失数、均值等 |
| TC-14 | 删除功能保留 | Tab 1删除缺失行 | 功能正常,与原功能一致 |
| TC-15 | 空列处理 | 对无缺失列执行填补 | 提示或复制原列 |
| TC-16 | 全缺失列处理 | 对全缺失列执行填补 | 提示警告,创建新列 |
| TC-17 | 重复新列名处理 | 新列名已存在 | 自动添加后缀或提示 |
| TC-18 | 原始数据保留 ⭐ | 填补后,检查原列 | 原列数据完全不变 ✅ |
💡 适用场景说明
前向填充(Forward Fill)- 新增
最适合场景:
- 多次随访数据:患者在不同时间点的测量,如果某次随访缺失,用上次的值
- 示例:血压随访(120 → NaN → NaN → 130)→ (120 → 120 → 120 → 130)
- 观察性研究:假设变量在短期内相对稳定
- 传感器数据:设备临时故障,用最后一次正常值
不适合场景:
- 变化快的指标(如血糖波动大)
- 首次观察即缺失(无前值可用)
后向填充(Backward Fill)- 新增
最适合场景:
- 预测性数据:已知未来的值,向前填充
- 计划性事件:如手术日期,向前填充到准备期
- 数据补录:后期补充的数据向前填充
不适合场景:
- 末次观察缺失(无后值可用)
- 因果关系要求严格的研究
✅ 更新确认清单
请确认以下更新是否符合您的需求:
- 前向/后向填充功能加入Phase 1(本次开发)
- Tab 2增加2个填补选项(共6种方法)
- Python函数支持
'ffill'和'bfill'方法 - 测试用例从14个增加到18个
- 开发时间从5-6小时增加到6-7小时
- 适用场景说明清晰(医学研究背景)
🚀 如确认无误,即可开始开发!
开发顺序:
- Python后端 - 简单填补(含前/后向填充)
- Python后端 - MICE填补
- Node.js后端API转发
- 前端UI(3个Tab,Tab 2含6种方法)
- API集成
- 18个测试用例验证
预计总时间:6-7小时
请确认后告诉我,我将立即开始开发! 🎯