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%)
245 lines
10 KiB
Markdown
245 lines
10 KiB
Markdown
# 撌亙<E6928C>C - NA憭<41><E686AD><EFBFBD>蠘<EFBFBD>撘<EFBFBD><E69298>烐<EFBFBD>餌<EFBFBD>
|
||
|
||
## <20><> 璁<>膩
|
||
|
||
**<EFBFBD>格<EFBFBD>**嚗𡁜銁4銝芣瓲敹<E793B2><E695B9><EFBFBD>賭葉瘛餃<E7989B>撖遑A嚗<41>征<EFBFBD>?蝻箏仃<E7AE8F>潘<EFBFBD><E6BD98><EFBFBD>遬撘誩<E69298><E8AAA9><EFBFBD><EFBFBD>霈拍鍂<E68B8D>瑁<EFBFBD>憭<EFBFBD><E686AD>蝖桃<E89D96><E6A183>啣僎憭<E5838E><E686AD>蝻箏仃<E7AE8F>潦<EFBFBD>?
|
||
**NA<4E>曄內<E69B84>滨妍**嚗䫤蝛箏<E89D9B>?NA`嚗<>葉<EFBFBD>望<EFBFBD>蝏枏<E89D8F>嚗?
|
||
---
|
||
|
||
## <20>?撌脣<E6928C><E884A3>琜<EFBFBD>Python<6F>𡒊垢嚗?00%嚗?
|
||
### 1. recode.py - <20>啣<EFBFBD>潭<EFBFBD>撠?<3F>?
|
||
**<2A>啣<EFBFBD><E595A3><EFBFBD>㺭**嚗?- `na_handling`: 'keep' | 'map' | 'drop'
|
||
- `keep`: 靽脲<E99DBD>銝摸A嚗<41><E59A97>霈歹<E99C88>
|
||
- `map`: <20>惩<EFBFBD>銝箸<E98A9D>摰𡁜<E691B0>? - `drop`: <20>𣳇膄<F0A3B387><E88684>鉄NA<4E><41><EFBFBD>
|
||
- `na_value`: NA<4E>惩<EFBFBD><E683A9>潘<EFBFBD>敶忛a_handling='map'<27>嗡蝙<E597A1>剁<EFBFBD>
|
||
|
||
**摰䂿緵<E482BF>餉<EFBFBD>**嚗?```python
|
||
if original_na_count > 0:
|
||
na_mask = result[column].isna()
|
||
|
||
if na_handling == 'keep':
|
||
# 靽脲<E99DBD>銝摸A嚗<41>歇蝏𤩺糓NA嚗峕<E59A97><E5B395><EFBFBD><EFBFBD>滢<EFBFBD>嚗? print(f'<27><> NA憭<41><E686AD>嚗帋<E59A97><E5B88B><EFBFBD>蛹NA嚗ùoriginal_na_count}銝迎<E98A9D>')
|
||
|
||
elif na_handling == 'map':
|
||
# <20>惩<EFBFBD>銝箸<E98A9D>摰𡁜<E691B0>? result.loc[na_mask, target_column] = na_value
|
||
print(f'<27><> NA憭<41><E686AD>嚗𡁏<E59A97>撠<EFBFBD>蛹 {na_value}嚗ùoriginal_na_count}銝迎<E98A9D>')
|
||
|
||
elif na_handling == 'drop':
|
||
# <20>𣳇膄<F0A3B387><E88684>鉄NA<4E><41><EFBFBD>
|
||
result = result[~na_mask].copy()
|
||
```
|
||
|
||
### 2. filter.py - 擃条漣蝑偦<E89D91>?<3F>?
|
||
**撌脫𣈲<E884AB>?*嚗䫤is_null` <20>?`not_null` 餈鞟<E9A488>蝚?
|
||
<EFBFBD>𣳇<EFBFBD>靽格㺿嚗<EFBFBD><EFBFBD><EFBFBD>劐誨<EFBFBD><EFBFBD>歇蝏𤩺𣈲<EFBFBD><EFBFBD><EFBFBD>
|
||
|
||
```python
|
||
elif operator == 'is_null':
|
||
mask = df[column].isna()
|
||
elif operator == 'not_null':
|
||
mask = df[column].notna()
|
||
```
|
||
|
||
### 3. binning.py - <20><><EFBFBD><EFBFBD><EFBFBD>掩<EFBFBD>㗛<EFBFBD> <20>?
|
||
**<2A>啣<EFBFBD><E595A3><EFBFBD>㺭**嚗?- `na_handling`: 'keep' | 'label' | 'assign'
|
||
- `keep`: 靽脲<E99DBD>銝摸A嚗<41><E59A97>霈歹<E99C88>
|
||
- `label`: <20><>扇銝箸<E98A9D>摰𡁏<E691B0>蝑橘<E89D91>憒?蝻箏仃"嚗? - `assign`: <20><><EFBFBD><EFBFBD>唳<EFBFBD>摰𡁶<E691B0>
|
||
- `na_label`: NA<4E><41>倌嚗<E5808C><E59A97>na_handling='label'<27>嗡蝙<E597A1>剁<EFBFBD>
|
||
- `na_assign_to`: NA<4E><41><EFBFBD><EFBFBD>啁<EFBFBD>蝏<EFBFBD>揣撘𤏪<E69298>敶忛a_handling='assign'<27>嗡蝙<E597A1>剁<EFBFBD>
|
||
|
||
**摰䂿緵<E482BF>餉<EFBFBD>**嚗?```python
|
||
if original_na_count > 0:
|
||
na_mask = result[column].isna()
|
||
|
||
if na_handling == 'keep':
|
||
# 靽脲<E99DBD>銝摸A
|
||
print(f'<27><> NA憭<41><E686AD>嚗帋<E59A97><E5B88B><EFBFBD>蛹NA嚗ùoriginal_na_count}銝迎<E98A9D>')
|
||
|
||
elif na_handling == 'label':
|
||
# <20><>扇銝箸<E98A9D>摰𡁏<E691B0>蝑? label_to_use = na_label if na_label else '蝛箏<E89D9B>?NA'
|
||
result.loc[na_mask, new_column_name] = label_to_use
|
||
print(f'<27><> NA憭<41><E686AD>嚗𡁏<E59A97>霈唬蛹 "{label_to_use}"嚗ùoriginal_na_count}銝迎<E98A9D>')
|
||
|
||
elif na_handling == 'assign':
|
||
# <20><><EFBFBD><EFBFBD>唳<EFBFBD>摰𡁶<E691B0>
|
||
if labels and na_assign_to is not None:
|
||
result.loc[na_mask, new_column_name] = labels[na_assign_to]
|
||
```
|
||
|
||
### 4. conditional.py - <20>∩辣<E288A9><E8BEA3><EFBFBD><EFBFBD>?<3F>?
|
||
**<2A>啣<EFBFBD><E595A3>舀<EFBFBD>**嚗䫤is_null` <20>?`not_null` 餈鞟<E9A488>蝚?
|
||
```python
|
||
elif operator == 'is_null': # <20>?<3F>啣<EFBFBD>嚗帋蛹蝛? mask = result[column].isna()
|
||
elif operator == 'not_null': # <20>?<3F>啣<EFBFBD>嚗帋<E59A97>銝箇征
|
||
mask = result[column].notna()
|
||
```
|
||
|
||
### 5. main.py - API霂瑟<E99C82>璅∪<E79285> <20>?
|
||
**RecodeRequest**嚗?```python
|
||
na_handling: str = 'keep'
|
||
na_value: Any = None
|
||
```
|
||
|
||
**BinningRequest**嚗?```python
|
||
na_handling: str = 'keep'
|
||
na_label: str = None
|
||
na_assign_to: int = None
|
||
```
|
||
|
||
**FilterRequest <20>?ConditionalRequest**嚗?<3F>𣳇<EFBFBD>靽格㺿嚗<E3BABF>歇<EFBFBD>舀<EFBFBD>
|
||
|
||
---
|
||
|
||
## <20><> 敺<><E695BA><EFBFBD>琜<EFBFBD>Node.js<6A>𡒊垢
|
||
|
||
### QuickActionService.ts
|
||
|
||
**<2A><>閬<EFBFBD>凒<EFBFBD>啁<EFBFBD><E59581>亙藁**嚗?
|
||
1. **RecodeParams**嚗?```typescript
|
||
interface RecodeParams {
|
||
column: string;
|
||
mapping: Record<string, any>;
|
||
createNewColumn?: boolean;
|
||
newColumnName?: string;
|
||
naHandling?: 'keep' | 'map' | 'drop'; // <20>?<3F>啣<EFBFBD>
|
||
naValue?: any; // <20>?<3F>啣<EFBFBD>
|
||
}
|
||
```
|
||
|
||
2. **BinningParams**嚗?```typescript
|
||
interface BinningParams {
|
||
column: string;
|
||
method: 'custom' | 'equal_width' | 'equal_freq';
|
||
newColumnName: string;
|
||
bins?: number[];
|
||
labels?: string[];
|
||
numBins?: number;
|
||
naHandling?: 'keep' | 'label' | 'assign'; // <20>?<3F>啣<EFBFBD>
|
||
naLabel?: string; // <20>?<3F>啣<EFBFBD>
|
||
naAssignTo?: number; // <20>?<3F>啣<EFBFBD>
|
||
}
|
||
```
|
||
|
||
**API靚<49>鍂**嚗<>䌊<EFBFBD>其<EFBFBD><E585B6>埝<EFBFBD><E59F9D>匧<EFBFBD><E58CA7>堆<EFBFBD><E5A086>𣳇<EFBFBD><F0A3B387>寞<EFBFBD>憭<EFBFBD><E686AD>嚗?
|
||
---
|
||
|
||
## <20>綫 敺<><E695BA><EFBFBD>琜<EFBFBD><E7909C>滨垢UI
|
||
|
||
### 1. RecodeDialog.tsx - <20>啣<EFBFBD>潭<EFBFBD>撠?
|
||
**UI霈曇恣**嚗?```
|
||
<EFBFBD>𢞖<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?<3F>?<3F>啣<EFBFBD>潭<EFBFBD>撠? [X] <20>?<3F>鎿<EFBFBD><E98EBF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?<3F>?<3F>㗇𥋘<E39787>梹<EFBFBD>[憍𡁜宏<F0A1819C>嗅<EFBFBD><E59785>奭 <20>?<3F>? <20>?<3F>?<3F>臭<EFBFBD><E887AD>潭<EFBFBD>撠<EFBFBD><E692A0> <20>?<3F>?<3F>𢞖<EFBFBD><F0A29E96><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>? <20>?<3F>?<3F>?<3F>笔<EFBFBD><E7AC94>? <20>?<3F>啣<EFBFBD>? <20>? <20>?<3F>?<3F>?撌脣<E6928C> <20>?[1 ] <20>? <20>?<3F>?<3F>?<3F>芸<EFBFBD> <20>?[0 ] <20>? <20>?<3F>?<3F>?蝛箏<E89D9B>?NA <20>?[<5B>奭 <20>?潃鐥<E6BD83>
|
||
<EFBFBD>?<3F>? <20>鎿<EFBFBD> 靽脲<E99DBD>銝摸A嚗<41><E59A97>霈歹<E99C88> <20>? <20>?<3F>?<3F>? <20>鎿<EFBFBD> <20>惩<EFBFBD>銝綽<E98A9D>[____] <20>? <20>?<3F>?<3F>? <20>婙<EFBFBD> <20>𣳇膄霂亥<E99C82> <20>? <20>?<3F>?<3F>婙<EFBFBD><E5A999><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>? <20>?<3F>? <20>?<3F>?<3F>對<EFBFBD> 敶枏<E695B6><E69E8F>?25銝芰征<E88AB0>潘<EFBFBD>15.6%嚗? <20>?<3F>婙<EFBFBD><E5A999><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?```
|
||
|
||
**摰䂿緵閬<E7B7B5><E996AC>**嚗?1. 靚<>鍂`/api/v1/dc/tool-c/sessions/:id/unique-values`<60>塚<EFBFBD>璉<EFBFBD>瘚𧢲糓<F0A7A2B2>行<EFBFBD>NA
|
||
2. 憒<><E68692><EFBFBD>会A嚗峕遬蝷?蝛箏<E89D9B>?NA"<22>寞<EFBFBD>銵?3. <20>𣂷<EFBFBD>3蝘漤<E89D98>㗇𥋘嚗帋<E59A97><E5B88B><EFBFBD>A / <20>惩<EFBFBD>銝箸<E98A9D>摰𡁜<E691B0>?/ <20>𣳇膄銵?
|
||
### 2. FilterDialog.tsx - 擃条漣蝑偦<E89D91>?
|
||
**UI霈曇恣**嚗?```
|
||
<EFBFBD>∩辣嚗?[憍𡁜宏<F0A1819C>嗅<EFBFBD><E59785>奭 [餈鞟<E9A488>蝚色䲰]
|
||
<20>?蝑劐<E89D91>
|
||
<20>?銝滨<E98A9D>鈭? <20>?銝箇征 <20>?<3F>?<3F>啣<EFBFBD>
|
||
<20>?銝滢蛹蝛? <20>?<3F>?<3F>啣<EFBFBD>
|
||
<20>?...
|
||
```
|
||
|
||
**摰䂿緵閬<E7B7B5><E996AC>**嚗?1. <20>刻<EFBFBD>蝞㛖泵銝𧢲<E98A9D><F0A7A2B2>𨅯<EFBFBD>銝剜溶<E5899C>?銝箇征"<22>?銝滢蛹蝛?<3F>厰★
|
||
2. 敶㯄<E695B6>㗇𥋘餈嗘舅銝芾<E98A9D>蝞㛖泵<E39B96>塚<EFBFBD><E5A19A>鞱<EFBFBD>"<22>?颲枏<E9A2B2>獢<EFBFBD><E78DA2>銝漤<E98A9D>閬<EFBFBD><E996AC><EFBFBD>亙<EFBFBD>潘<EFBFBD>
|
||
|
||
### 3. BinningDialog.tsx - <20><><EFBFBD><EFBFBD><EFBFBD>掩<EFBFBD>㗛<EFBFBD>
|
||
|
||
**UI霈曇恣**嚗?```
|
||
<EFBFBD>𢞖<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?<3F>?<3F><><EFBFBD><EFBFBD><EFBFBD>掩<EFBFBD>㗛<EFBFBD> [X] <20>?<3F>鎿<EFBFBD><E98EBF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?<3F>?<3F>笔<EFBFBD><E7AC94>梹<EFBFBD>[撟湧<E6929F><E6B9A7>奭 <20>?<3F>?...<2E><><EFBFBD>閫<EFBFBD><E996AB>... <20>?<3F>? <20>?<3F>?<3F>𩤃<EFBFBD> 蝛箏<E89D9B>澆<EFBFBD><E6BE86><EFBFBD><EFBFBD> <20>?潃?<3F>?<3F>?靽脲<E99DBD>銝箇征嚗<E5BE81><E59A97>霈歹<E99C88> <20>?<3F>?<3F>?<3F><>扇銝綽<E98A9D>[蝻箏仃___] <20>?<3F>?<3F>?<3F><><EFBFBD><EFBFBD>啁<EFBFBD>嚗靀蝚?蝏<>䲰] <20>?<3F>? <20>?<3F>?<3F>對<EFBFBD> 敶枏<E695B6><E69E8F>?5銝芰征<E88AB0>潘<EFBFBD>3.1%嚗? <20>?<3F>婙<EFBFBD><E5A999><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?```
|
||
|
||
**摰䂿緵閬<E7B7B5><E996AC>**嚗?1. 瘛餃<E7989B>Radio Group for NA憭<41><E686AD><EFBFBD>孵<EFBFBD>
|
||
2. <20>寞旿<E5AF9E>㗇𥋘<E39787>曄內<E69B84>詨<EFBFBD><E8A9A8><EFBFBD><EFBFBD><EFBFBD>交<EFBFBD>
|
||
3. 隡𣳇<E99AA1>嚒naHandling`<EFBFBD><EFBFBD>naLabel`<60><>naAssignTo`<EFBFBD><EFBFBD>㺭
|
||
|
||
### 4. ConditionalDialog.tsx - <20>∩辣<E288A9><E8BEA3><EFBFBD><EFBFBD>?
|
||
**UI霈曇恣**嚗?```
|
||
閫<EFBFBD><EFBFBD>1嚗?憒<><E68692> [憍𡁜宏<F0A1819C>嗅<EFBFBD><E59785>奭 [餈鞟<E9A488>蝚色䲰]
|
||
<20>?蝑劐<E89D91>
|
||
<20>?銝滨<E98A9D>鈭? <20>?銝箇征 <20>?<3F>?<3F>啣<EFBFBD>
|
||
<20>?銝滢蛹蝛? <20>?<3F>?<3F>啣<EFBFBD>
|
||
<20>?...
|
||
<EFBFBD>坔‵<EFBFBD><EFBFBD><EFBFBD>[雿𡡞<E99BBF><F0A1A19E>? ]
|
||
```
|
||
|
||
**摰䂿緵閬<E7B7B5><E996AC>**嚗?1. 銝榢ilterDialog蝐颱撮嚗<E692AE>銁餈鞟<E9A488>蝚虫<E89D9A><E899AB>㕑<EFBFBD><E39591>蓥葉瘛餃<E7989B>"銝箇征"<22>?銝滢蛹蝛?
|
||
2. 餈嗘舅銝芾<E98A9D>蝞㛖泵銝漤<E98A9D>閬<EFBFBD><E996AC><EFBFBD>亙<EFBFBD>?
|
||
---
|
||
|
||
## <20>妒 瘚贝<E7989A><E8B49D>其<EFBFBD>
|
||
|
||
### 瘚贝<E7989A><E8B49D>唳旿<E594B3><E697BF><EFBFBD>
|
||
|
||
```csv
|
||
ID,憍𡁜宏<F0A1819C>嗅<EFBFBD>,撟湧<E6929F>,<2C>嗥憬<E597A5>?1,撌脣<E6928C>,45,120
|
||
2,<2C>芸<EFBFBD>,35,130
|
||
3,,50, # <20>?NA
|
||
4,蝳餃<E89DB3>,60,
|
||
5,,NA,140
|
||
```
|
||
|
||
### 瘚贝<E7989A><E8B49D>箸艶
|
||
|
||
| 蝻硋噡 | <20>蠘<EFBFBD> | 瘚贝<E7989A><E8B49D>箸艶 | 憸<><E686B8>蝏𤘪<E89D8F> |
|
||
|------|------|----------|----------|
|
||
| TC-1 | <20>啣<EFBFBD>潭<EFBFBD>撠?- 靽脲<E99DBD>NA | 憍𡁜宏<F0A1819C>嗅<EFBFBD>嚗𡁜歇憍?1嚗峕𧊋憍?0嚗𨨲A=靽脲<E99DBD> | NA銵𣬚<E98AB5><F0A3AC9A>啣<EFBFBD>銝摸A <20>?|
|
||
| TC-2 | <20>啣<EFBFBD>潭<EFBFBD>撠?- <20>惩<EFBFBD>NA | 憍𡁜宏<F0A1819C>嗅<EFBFBD>嚗𡁜歇憍?1嚗峕𧊋憍?0嚗𨨲A=<3D>惩<EFBFBD>銝? | NA銵𣬚<E98AB5><F0A3AC9A>啣<EFBFBD>銝? <20>?|
|
||
| TC-3 | <20>啣<EFBFBD>潭<EFBFBD>撠?- <20>𣳇膄NA | 憍𡁜宏<F0A1819C>嗅<EFBFBD>嚗𡁜歇憍?1嚗峕𧊋憍?0嚗𨨲A=<3D>𣳇膄 | NA銵諹◤<E8ABB9>𣳇膄嚗峕<E59A97>餉<EFBFBD><E9A489>啣<EFBFBD>撠?<3F>?|
|
||
| TC-4 | 擃条漣蝑偦<E89D91>?- 銝箇征 | 蝑偦<E89D91>?憍𡁜宏<F0A1819C>嗅<EFBFBD>"銝箇征 | <20>芯<EFBFBD><E88AAF>䇏A銵?<3F>?|
|
||
| TC-5 | 擃条漣蝑偦<E89D91>?- 銝滢蛹蝛?| 蝑偦<E89D91>?憍𡁜宏<F0A1819C>嗅<EFBFBD>"銝滢蛹蝛?| <20>芯<EFBFBD><E88AAF>䠷<EFBFBD>NA銵?<3F>?|
|
||
| TC-6 | <20><><EFBFBD><EFBFBD><EFBFBD>掩<EFBFBD>㗛<EFBFBD> - 靽脲<E99DBD>NA | 撟湧<E6929F><E6B9A7><EFBFBD><EFBFBD>嚗𨨲A靽脲<E99DBD> | NA銵𣬚<E98AB5><F0A3AC9A>啣<EFBFBD>銝摸A <20>?|
|
||
| TC-7 | <20><><EFBFBD><EFBFBD><EFBFBD>掩<EFBFBD>㗛<EFBFBD> - <20><>扇NA | 撟湧<E6929F><E6B9A7><EFBFBD><EFBFBD>嚗𨨲A<F0A8A8B2><41>扇銝?蝻箏仃" | NA銵𣬚<E98AB5><F0A3AC9A>啣<EFBFBD>銝?蝻箏仃" <20>?|
|
||
| TC-8 | <20><><EFBFBD><EFBFBD><EFBFBD>掩<EFBFBD>㗛<EFBFBD> - <20><><EFBFBD>NA | 撟湧<E6929F><E6B9A7><EFBFBD><EFBFBD>嚗𨨲A<F0A8A8B2><41><EFBFBD><EFBFBD>啁洵1蝏?| NA銵𣬚<E98AB5><F0A3AC9A>啣<EFBFBD>銝箇洵1蝏<31><E89D8F>蝑?<3F>?|
|
||
| TC-9 | <20>∩辣<E288A9><E8BEA3><EFBFBD><EFBFBD>?- 銝箇征 | 憒<><E68692>憍𡁜宏<F0A1819C>嗅<EFBFBD>銝箇征嚗<E5BE81><E59A97>"<22>芰䰻" | NA銵𣬚<E98AB5><F0A3AC9A>啣<EFBFBD>銝?<3F>芰䰻" <20>?|
|
||
| TC-10 | <20>∩辣<E288A9><E8BEA3><EFBFBD><EFBFBD>?- 銝滢蛹蝛?| 憒<><E68692>憍𡁜宏<F0A1819C>嗅<EFBFBD>銝滢蛹蝛綽<E89D9B><E7B6BD>?撌脩䰻" | <20>啩A銵𣬚<E98AB5><F0A3AC9A>啣<EFBFBD>銝?撌脩䰻" <20>?|
|
||
|
||
---
|
||
|
||
## <20><> 撘<><E69298>𤏸<EFBFBD>摨?
|
||
| <20>嗆挾 | <20>嗆<EFBFBD>?| 憭<>釣 |
|
||
|------|------|------|
|
||
| Python<6F>𡒊垢 - recode.py | <20>?100% | 撌脣<E6928C><E884A3>?|
|
||
| Python<6F>𡒊垢 - filter.py | <20>?100% | 撌脫𣈲<E884AB><F0A388B2><EFBFBD><EFBFBD>𣳇<EFBFBD>靽格㺿嚗?|
|
||
| Python<6F>𡒊垢 - binning.py | <20>?100% | 撌脣<E6928C><E884A3>?|
|
||
| Python<6F>𡒊垢 - conditional.py | <20>?100% | 撌脣<E6928C><E884A3>?|
|
||
| Python<6F>𡒊垢 - main.py | <20>?100% | 撌脣<E6928C><E884A3>?|
|
||
| Node.js<6A>𡒊垢 | <20>?100% | 撌脣<E6928C><E884A3>琜<EFBFBD><E7909C><EFBFBD>㺭隡𣳇<E99AA1>𡜐<EFBFBD> |
|
||
| <20>滨垢 - RecodeDialog | <20>?100% | 撌脣<E6928C><E884A3>琜<EFBFBD>NA憭<41><E686AD>銝𧢲<E98A9D><F0A7A2B2>𨅯<EFBFBD>嚗?|
|
||
| <20>滨垢 - FilterDialog | <20>?100% | 撌脣<E6928C><E884A3>琜<EFBFBD>撌脫𣈲<E884AB><F0A388B2>s_null/not_null嚗?|
|
||
| <20>滨垢 - BinningDialog | <20>?100% | 撌脣<E6928C><E884A3>琜<EFBFBD>NA憭<41><E686AD>Radio Group嚗?|
|
||
| <20>滨垢 - ConditionalDialog | <20>?100% | 撌脣<E6928C><E884A3>琜<EFBFBD>瘛餃<E7989B>is_null/not_null嚗?|
|
||
| 瘚贝<E7989A> | <20>?敺<><E695BA>霂?| 蝑匧<E89D91><E58CA7>冽<EFBFBD>瘚贝<E7989A>撉諹<E69289> |
|
||
|
||
---
|
||
|
||
## <20>㴓 銝衤<E98A9D>甇亥<E79487><E4BAA5>?
|
||
1. **Node.js<6A>𡒊垢**嚗<><E59A97>霈?5<><35><EFBFBD>嚗? - <20>湔鰵RecodeParams<6D>亙藁
|
||
- <20>湔鰵BinningParams<6D>亙藁
|
||
- 嚗㇅ilterParams<6D>龦onditionalParams<6D>𣳇<EFBFBD>靽格㺿嚗?
|
||
2. **<2A>滨垢UI**嚗<><E59A97>霈?撠𤩺𧒄嚗? - RecodeDialog嚗𡁏溶<F0A1818F>賫A憭<41><E686AD>銝𧢲<E98A9D><F0A7A2B2>𨅯<EFBFBD>嚗?5<><35><EFBFBD>嚗? - FilterDialog嚗𡁏溶<F0A1818F>?銝箇征"/"銝滢蛹蝛?餈鞟<E9A488>蝚佗<E89D9A>15<31><35><EFBFBD>嚗? - BinningDialog嚗𡁏溶<F0A1818F>賫A憭<41><E686AD>Radio Group嚗?0<><30><EFBFBD>嚗? - ConditionalDialog嚗𡁏溶<F0A1818F>?銝箇征"/"銝滢蛹蝛?餈鞟<E9A488>蝚佗<E89D9A>30<33><30><EFBFBD>嚗?
|
||
3. **瘚贝<E7989A>**嚗<><E59A97>霈?0<><30><EFBFBD>嚗? - <20>扯<EFBFBD>10銝芣<E98A9D>霂閧鍂靘? - 靽桀<E99DBD><E6A180>𤑳緵<F0A491B3><E7B7B5>䔮憸?
|
||
**<2A>餉恣<E9A489>拐<EFBFBD><E68B90>園𡢿嚗𡁶漲3撠𤩺𧒄**
|
||
|
||
---
|
||
|
||
## <20><> <20><><EFBFBD>航<EFBFBD><E888AA>?
|
||
### Python蝡?- 雿輻鍂`df[column].isna()`璉<>瘚𨶙A
|
||
- 雿輻鍂`df.loc[mask, col] = value`憛怠<E6869B>NA
|
||
- 雿輻鍂`df[~mask]`<60>𣳇膄NA銵?- 蝏蠘恣撟嗆<E6929F><E59786>衹A憭<41><E686AD>靽⊥<E99DBD>
|
||
|
||
### <20>滨垢蝡?- <20>刻繮<E588BB>䮐nique values<65>嗆<EFBFBD>瘚𨶙A
|
||
- 雿輻鍂`<蝛箏<E89D9B>?NA>`雿靝蛹<E99D9D>曄內<E69B84>滨妍
|
||
- <20>寞旿<E5AF9E>冽<EFBFBD><E586BD>㗇𥋘<E39787><F0A58B98><EFBFBD>㰘窈瘙<E7AA88><E79899><EFBFBD>?- <20>曄內NA蝏蠘恣靽⊥<E99DBD>嚗<EFBFBD><E59A97>"敶枏<E695B6><E69E8F>?25銝芰征<E88AB0>?嚗?
|
||
### 撉峕𤣰<E5B395><F0A4A3B0><EFBFBD>
|
||
- <20>?<3F>冽<EFBFBD><E586BD>賣<EFBFBD>蝖桃<E89D96><E6A183>衹A<E8A1B9><41><EFBFBD><EFBFBD>?- <20>?<3F>冽<EFBFBD><E586BD>賡<EFBFBD>㗇𥋘憒<F0A58B98><E68692>憭<EFBFBD><E686AD>NA
|
||
- <20>?憭<><E686AD><EFBFBD>𡒊<EFBFBD>蝏𤘪<E89D8F>蝚血<E89D9A><E8A180>冽<EFBFBD><E586BD>㗇𥋘
|
||
- <20>?<3F><><EFBFBD>匧<EFBFBD><E58CA7>賜<EFBFBD>NA憭<41><E686AD><EFBFBD>孵<EFBFBD>皜<EFBFBD>苊蝏煺<E89D8F>
|
||
|
||
---
|
||
|
||
**<EFBFBD><EFBFBD>﹝<EFBFBD>𥕦遣<EFBFBD>園𡢿**嚗?025-12-09
|
||
**Python<6F>𡒊垢撘<E59EA2><E69298>𤑳𠶖<F0A491B3>?*嚗尠<E59A97> 撌脣<E6928C><E884A3>?
|
||
**<EFBFBD>拐<EFBFBD>撌乩<EFBFBD>**嚗鐭ode.js<6A>𡒊垢 + <20>滨垢UI + 瘚贝<E7989A>
|
||
|