Major Changes: - Add StreamingService with OpenAI Compatible format - Upgrade Chat component V2 with Ant Design X integration - Implement AIA module with 12 intelligent agents - Update API routes to unified /api/v1 prefix - Update system documentation Backend (~1300 lines): - common/streaming: OpenAI Compatible adapter - modules/aia: 12 agents, conversation service, streaming integration - Update route versions (RVW, PKB to v1) Frontend (~3500 lines): - modules/aia: AgentHub + ChatWorkspace (100% prototype restoration) - shared/Chat: AIStreamChat, ThinkingBlock, useAIStream Hook - Update API endpoints to v1 Documentation: - AIA module status guide - Universal capabilities catalog - System overview updates - All module documentation sync Tested: Stream response verified, authentication working Status: AIA V2.0 core completed (85%)
204 lines
6.3 KiB
Markdown
204 lines
6.3 KiB
Markdown
# 工具C - 缺失值处ç<E2809E>†åŠŸèƒ½å¼€å<E282AC>‘计åˆ?- 更新说明
|
||
|
||
## ðŸ“<C5B8> 更新日期ï¼?025-12-10
|
||
|
||
## âœ?已完æˆ<C3A6>的更新
|
||
|
||
### 1. Phase 1功能清å<E280A6>•
|
||
**新增���*�
|
||
- 5. **å‰<C3A5>å<EFBFBD>‘å¡«å……**(Forward Fillï¼?
|
||
- 适用于:时间åº<C3A5>列数æ<C2B0>®ã€<C3A3>有顺åº<C3A5>的观察数æ<C2B0>?
|
||
- 实现:`df[column].fillna(method='ffill')`,用å‰<EFBFBD>一个é<EFBFBD>žç¼ºå¤±å€¼å¡«å…?
|
||
- 示例:[10, NaN, NaN, 20] �[10, 10, 10, 20]
|
||
|
||
- 6. **å<>Žå<C5BD>‘å¡«å……**(Backward Fillï¼?
|
||
- 适用于:时间åº<C3A5>列数æ<C2B0>®ã€<C3A3>有顺åº<C3A5>的观察数æ<C2B0>?
|
||
- 实现:`df[column].fillna(method='bfill')`,用å<EFBFBD>Žä¸€ä¸ªé<EFBFBD>žç¼ºå¤±å€¼å¡«å…?
|
||
- 示例:[10, NaN, NaN, 20] �[10, 20, 20, 20]
|
||
|
||
### 2. Phase 2功能清å<E280A6>•
|
||
**移除**:å‰<C3A5>å<EFBFBD>?å<>Žå<C5BD>‘填充(已移到Phase 1ï¼?
|
||
**ä¿<C3A4>ç•™**:分组填补ã€<C3A3>线性æ<C2A7>’值ã€<C3A3>KNNå¡«è¡¥ã€<C3A3>组å<E2809E>ˆå¡«è¡?
|
||
|
||
### 3. UI设计更新
|
||
Tab 2填补方法新增�
|
||
- âš?å‰<C3A5>å<EFBFBD>‘填充(用å‰<C3A5>一个值填充,适å<E2809A>ˆæ—¶é—´åº<C3A5>列ï¼?
|
||
- âš?å<>Žå<C5BD>‘填充(用å<C2A8>Žä¸€ä¸ªå€¼å¡«å……,适å<E2809A>ˆæ—¶é—´åº<C3A5>列ï¼?
|
||
|
||
### 4. Python函数ç¾å<C2BE><C3A5>æ›´æ–°
|
||
```python
|
||
def fillna_simple(
|
||
...
|
||
method: Literal['mean', 'median', 'mode', 'constant', 'ffill', 'bfill'], # 新增ffill和bfill
|
||
...
|
||
)
|
||
```
|
||
|
||
### 5. TypeScript类型更新
|
||
```typescript
|
||
method: 'mean' | 'median' | 'mode' | 'constant' | 'ffill' | 'bfill'
|
||
```
|
||
|
||
### 6. 测试用例更新
|
||
ä»?4ä¸ªå¢žåŠ åˆ°18个:
|
||
- **新增TC-6**:å‰<C3A5>å<EFBFBD>‘å¡«å…?
|
||
- **新增TC-7**:å<C5A1>Žå<C5BD>‘å¡«å…?
|
||
- **新增TC-11**:å‰<C3A5>å<EFBFBD>‘填充边界(首行NAï¼?
|
||
- **新增TC-12**:å<C5A1>Žå<C5BD>‘填充边界(末行NAï¼?
|
||
- 原TC-6~TC-14 é‡<C3A9>æ–°ç¼–å<E28093>·ä¸?TC-8~TC-18
|
||
|
||
### 7. 测试数æ<C2B0>®å‡†å¤‡æ›´æ–°
|
||
**新增**:时间åº<C3A5>列列:éš<C3A9>访血压(有顺åº<C3A5>,缺失18%ï¼? 用于测试å‰?å<>Žå<C5BD>‘å¡«å……
|
||
|
||
### 8. æ—¶é—´ä¼°ç®—æ›´æ–°
|
||
| 项目 | 原计åˆ?| 新计åˆ?| å¢žåŠ æ—¶é—´ |
|
||
|------|--------|--------|---------|
|
||
| Pythonå<6E>Žç«¯ - 简å<E282AC>•å¡«è¡?| 40分钟 | 50分钟 | +10分钟 |
|
||
| å‰<C3A5>端UI - Tab 2 | 40分钟 | 50分钟 | +10分钟 |
|
||
| 测试 | 40分钟�4个用例)| 50分钟�8个用例)| +10分钟 |
|
||
| **总计** | **çº?-6å°<C3A5>æ—¶** | **çº?-7å°<C3A5>æ—¶** | **+30分钟** |
|
||
|
||
---
|
||
|
||
## 🎯 功能完整清å<E280A6>•(Phase 1ï¼?
|
||
|
||
| ç¼–å<E28093>· | 功能 | 适用场景 | 实现方法 |
|
||
|------|------|----------|----------|
|
||
| 1 | å<>‡å€¼å¡«è¡?| 数值型å<E280B9>˜é‡<C3A9>ï¼Œæ£æ€<C3A6>分å¸?| `fillna(mean())` |
|
||
| 2 | ä¸ä½<C3A4>æ•°å¡«è¡?| 数值型å<E280B9>˜é‡<C3A9>,å<C592><C3A5>æ€<C3A6>分å¸?| `fillna(median())` |
|
||
| 3 | ä¼—æ•°å¡«è¡¥ | 分类å<C2BB>˜é‡<C3A9>ã€<C3A3>离散数å€?| `fillna(mode()[0])` |
|
||
| 4 | 固定值填�| 任何类型,用户指�| `fillna(value)` |
|
||
| 5 | **å‰<C3A5>å<EFBFBD>‘å¡«å……** â?| **æ—¶é—´åº<C3A5>列ã€<C3A3>éš<C3A9>访数æ<C2B0>?* | **`fillna(method='ffill')`** |
|
||
| 6 | **å<>Žå<C5BD>‘å¡«å……** â?| **æ—¶é—´åº<C3A5>列ã€<C3A3>预测数æ<C2B0>?* | **`fillna(method='bfill')`** |
|
||
| 7 | MICE多é‡<C3A9>æ<EFBFBD>’è¡¥ | 缺失çŽ?%-30%,需考虑å<E28098>˜é‡<C3A9>关系 | `IterativeImputer` |
|
||
|
||
---
|
||
|
||
## 📋 完整测试用例清å<E280A6>•ï¼?8个)
|
||
|
||
| ç¼–å<E28093>· | 功能 | 测试场景 | 预期结果 |
|
||
|------|------|----------|----------|
|
||
| TC-1 | å<>‡å€¼å¡«è¡?| å¯?年龄"列使用å<C2A8>‡å€¼å¡«è¡?| 创建新列,缺失值被å<C2AB>‡å€¼å¡«å…?âœ?|
|
||
| TC-2 | ä¸ä½<C3A4>æ•°å¡«è¡?| å¯?体é‡<C3A9>"列使用ä¸ä½<C3A4>æ•°å¡«è¡¥ | 创建新列,缺失值被ä¸ä½<C3A4>æ•°å¡«å…?âœ?|
|
||
| TC-3 | 众数填补 | �婚姻状况"列使用众数填�| 创建新列,缺失值被众数填充 �|
|
||
| TC-4 | 固定值填补(数值) | å¯?年龄"列填充固定å€?0" | 创建新列,所有缺失值å<C2BC>˜ä¸? âœ?|
|
||
| TC-5 | 固定值填补(文本ï¼?| å¯?婚姻状况"列填å…?未知" | 创建新列,所有缺失值å<C2BC>˜ä¸?未知" âœ?|
|
||
| **TC-6** | **å‰<C3A5>å<EFBFBD>‘å¡«å……** â?| **对éš<C3A9>访血压列使用å‰<C3A5>å<EFBFBD>‘å¡«å……** | **缺失值被å‰<C3A5>一个é<C2AA>žç¼ºå¤±å€¼å¡«å…?âœ?* |
|
||
| **TC-7** | **å<>Žå<C5BD>‘å¡«å……** â?| **对éš<C3A9>访血压列使用å<C2A8>Žå<C5BD>‘å¡«å……** | **缺失值被å<C2AB>Žä¸€ä¸ªé<C2AA>žç¼ºå¤±å€¼å¡«å…?âœ?* |
|
||
| TC-8 | MICEå¡«è¡¥ | 选择"收缩åŽ?+"èˆ’å¼ åŽ?,执行MICE | 创建2个新列(_MICEå<45>Žç¼€ï¼‰âœ… |
|
||
| TC-9 | 新列ä½<C3A4>置验è¯<C3A8> â?| å¯?列A"填补,查看新列ä½<C3A4>ç½?| 新列紧邻原列å<E28094>³ä¾§ âœ?|
|
||
| TC-10 | MICE新列ä½<C3A4>ç½® â?| å¯?列A"+"列C"执行MICE | å<>„新列紧邻其原列 âœ?|
|
||
| **TC-11** | **å‰<C3A5>å<EFBFBD>‘填充边界** â?| **对首行为NA的列å‰<C3A5>å<EFBFBD>‘å¡«å……** | **首行NAä¿<C3A4>æŒ<C3A6>NAï¼ˆæ— å‰<C3A5>值)âœ?* |
|
||
| **TC-12** | **å<>Žå<C5BD>‘填充边界** â?| **对末行为NA的列å<E28094>Žå<C5BD>‘å¡«å……** | **末行NAä¿<C3A4>æŒ<C3A6>NAï¼ˆæ— å<C2A0>Žå€¼ï¼‰âœ?* |
|
||
| TC-13 | 统计信æ<C2A1>¯å‡†ç¡®æ€?| 选择任æ„<C3A6>列,查看统计 | 显示æ£ç¡®çš„缺失数ã€<C3A3>å<EFBFBD>‡å€¼ç‰ |
|
||
| TC-14 | åˆ é™¤åŠŸèƒ½ä¿<C3A4>ç•™ | Tab 1åˆ é™¤ç¼ºå¤±è¡?| 功能æ£å¸¸ï¼Œä¸ŽåŽŸåŠŸèƒ½ä¸€è‡?|
|
||
| TC-15 | 空列处ç<E2809E>† | å¯¹æ— ç¼ºå¤±åˆ—æ‰§è¡Œå¡«è¡?| æ<><C3A6>示或å¤<C3A5>制原åˆ?|
|
||
| TC-16 | 全缺失列处ç<E2809E>† | 对全缺失列执行填è¡?| æ<><C3A6>示è¦å‘Šï¼Œåˆ›å»ºæ–°åˆ?|
|
||
| TC-17 | é‡<C3A9>å¤<C3A5>新列å<E28094><C3A5>处ç<E2809E>?| 新列å<E28094><C3A5>å·²å˜åœ¨ | è‡ªåŠ¨æ·»åŠ å<C2A0>Žç¼€æˆ–æ<E28093><C3A6>ç¤?|
|
||
| TC-18 | 原始数æ<C2B0>®ä¿<C3A4>ç•™ â?| å¡«è¡¥å<C2A5>Žï¼Œæ£€æŸ¥åŽŸåˆ?| 原列数æ<C2B0>®å®Œå…¨ä¸<C3A4>å<EFBFBD>˜ âœ?|
|
||
|
||
---
|
||
|
||
## 💡 适用场景说明
|
||
|
||
### å‰<C3A5>å<EFBFBD>‘填充(Forward Fillï¼? 新增
|
||
**最适å<E2809A>ˆåœºæ™¯**ï¼?
|
||
1. **多次éš<C3A9>访数æ<C2B0>®**:患者在ä¸<C3A4>å<EFBFBD>Œæ—¶é—´ç‚¹çš„æµ‹é‡<C3A9>,如果æŸ<C3A6>次éš<C3A9>访缺失,用上次的å€?
|
||
- 示例:血压éš<C3A9>访(120 â†?NaN â†?NaN â†?130)→ ï¼?20 â†?120 â†?120 â†?130ï¼?
|
||
2. **è§‚å¯Ÿæ€§ç ”ç©?*:å<C5A1>‡è®¾å<C2BE>˜é‡<C3A9>åœ¨çŸæœŸå†…相对稳å®?
|
||
3. **ä¼ æ„Ÿå™¨æ•°æ<C2B0>?*:设备临时故障,用最å<E282AC>Žä¸€æ¬¡æ£å¸¸å€?
|
||
|
||
**ä¸<C3A4>适å<E2809A>ˆåœºæ™¯**ï¼?
|
||
- å<>˜åŒ–å¿«çš„æŒ‡æ ‡ï¼ˆå¦‚è¡€ç³–æ³¢åŠ¨å¤§ï¼?
|
||
- 首次观察å<C5B8>³ç¼ºå¤±ï¼ˆæ— å‰<C3A5>值å<C2BC>¯ç”¨ï¼‰
|
||
|
||
### å<>Žå<C5BD>‘填充(Backward Fillï¼? 新增
|
||
**最适å<E2809A>ˆåœºæ™¯**ï¼?
|
||
1. **预测性数æ<C2B0>?*:已知未æ<C2AA>¥çš„值,å<C592>‘å‰<C3A5>å¡«å……
|
||
2. **计划性事ä»?*:如手术日期,å<C592>‘å‰<C3A5>填充到准备æœ?
|
||
3. **æ•°æ<C2B0>®è¡¥å½•**:å<C5A1>ŽæœŸè¡¥å……的数æ<C2B0>®å<C2AE>‘å‰<C3A5>å¡«å……
|
||
|
||
**ä¸<C3A4>适å<E2809A>ˆåœºæ™¯**ï¼?
|
||
- æœ«æ¬¡è§‚å¯Ÿç¼ºå¤±ï¼ˆæ— å<C2A0>Žå€¼å<C2BC>¯ç”¨ï¼‰
|
||
- å› æžœå…³ç³»è¦<C3A8>æ±‚ä¸¥æ ¼çš„ç ”ç©?
|
||
|
||
---
|
||
|
||
## âœ?更新确认清å<E280A6>•
|
||
|
||
请确认以下更新是å<EFBFBD>¦ç¬¦å<EFBFBD>ˆæ‚¨çš„需求:
|
||
|
||
- [x] å‰<C3A5>å<EFBFBD>‘/å<>Žå<C5BD>‘å¡«å……åŠŸèƒ½åŠ å…¥Phase 1(本次开å<E282AC>‘)
|
||
- [x] Tab 2å¢žåŠ 2个填补选项(共6ç§<C3A7>方法)
|
||
- [x] Python函数支æŒ<C3A6> `'ffill'` å’?`'bfill'` 方法
|
||
- [x] 测试用例ä»?4ä¸ªå¢žåŠ åˆ°18ä¸?
|
||
- [x] å¼€å<E282AC>‘时间从5-6å°<C3A5>æ—¶å¢žåŠ åˆ?-7å°<C3A5>æ—¶
|
||
- [x] 适用场景说明清晰(医å¦ç ”究背景)
|
||
|
||
---
|
||
|
||
## 🚀 å¦‚ç¡®è®¤æ— è¯¯ï¼Œå<C592>³å<C2B3>¯å¼€å§‹å¼€å<E282AC>‘ï¼<C3AF>
|
||
|
||
**å¼€å<E282AC>‘顺åº?*ï¼?
|
||
1. Pythonå<6E>Žç«¯ - 简å<E282AC>•填补(å<CB86>«å‰<C3A5>/å<>Žå<C5BD>‘å¡«å……ï¼?
|
||
2. Pythonå<6E>Žç«¯ - MICEå¡«è¡¥
|
||
3. Node.jså<73>Žç«¯API转å<C2AC>‘
|
||
4. å‰<C3A5>端UIï¼?个Tab,Tab 2å<32>?ç§<C3A7>方法)
|
||
5. API集æˆ<C3A6>
|
||
6. 18个测试用例验�
|
||
|
||
**预计总时间:6-7å°<C3A5>æ—¶**
|
||
|
||
---
|
||
|
||
**请确认å<C2A4>Žå‘Šè¯‰æˆ‘,我将立å<E280B9>³å¼€å§‹å¼€å<E282AC>‘ï¼<C3AF>** 🎯
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|