186 lines
7.1 KiB
Markdown
186 lines
7.1 KiB
Markdown
# Phase 0: 컴포넌트 사용 현황 분석
|
|
|
|
## 분석 일시
|
|
|
|
2024-12-19
|
|
|
|
## 분석 대상
|
|
|
|
- 활성화된 화면 정의 (screen_definitions.is_active = 'Y')
|
|
- 화면 레이아웃 (screen_layouts)
|
|
|
|
---
|
|
|
|
## 1. 컴포넌트별 사용량 순위
|
|
|
|
### 상위 15개 컴포넌트
|
|
|
|
| 순위 | 컴포넌트 | 사용 횟수 | 사용 화면 수 | Unified 매핑 |
|
|
| :--: | :-------------------------- | :-------: | :----------: | :------------------------------ |
|
|
| 1 | button-primary | 571 | 364 | UnifiedInput (type: button) |
|
|
| 2 | text-input | 805 | 166 | **UnifiedInput (type: text)** |
|
|
| 3 | table-list | 130 | 130 | UnifiedList (viewMode: table) |
|
|
| 4 | table-search-widget | 127 | 127 | UnifiedList (searchable: true) |
|
|
| 5 | select-basic | 121 | 76 | **UnifiedSelect** |
|
|
| 6 | number-input | 86 | 34 | **UnifiedInput (type: number)** |
|
|
| 7 | date-input | 83 | 51 | **UnifiedDate** |
|
|
| 8 | file-upload | 41 | 18 | UnifiedMedia (type: file) |
|
|
| 9 | tabs-widget | 39 | 39 | UnifiedGroup (type: tabs) |
|
|
| 10 | split-panel-layout | 39 | 39 | UnifiedLayout (type: split) |
|
|
| 11 | category-manager | 38 | 38 | UnifiedBiz (type: category) |
|
|
| 12 | numbering-rule | 31 | 31 | UnifiedBiz (type: numbering) |
|
|
| 13 | selected-items-detail-input | 29 | 29 | 복합 컴포넌트 |
|
|
| 14 | modal-repeater-table | 25 | 25 | UnifiedList (modal: true) |
|
|
| 15 | image-widget | 29 | 29 | UnifiedMedia (type: image) |
|
|
|
|
---
|
|
|
|
## 2. Unified 컴포넌트별 통합 대상 분석
|
|
|
|
### UnifiedInput (예상 통합 대상: 891개)
|
|
|
|
| 기존 컴포넌트 | 사용 횟수 | 비율 |
|
|
| :------------ | :-------: | :---: |
|
|
| text-input | 805 | 90.3% |
|
|
| number-input | 86 | 9.7% |
|
|
|
|
**우선순위: 1위** - 가장 많이 사용되는 컴포넌트
|
|
|
|
### UnifiedSelect (예상 통합 대상: 140개)
|
|
|
|
| 기존 컴포넌트 | 사용 횟수 | widgetType |
|
|
| :------------------------ | :-------: | :--------- |
|
|
| select-basic (category) | 65 | category |
|
|
| select-basic (null) | 50 | - |
|
|
| autocomplete-search-input | 19 | entity |
|
|
| entity-search-input | 20 | entity |
|
|
| checkbox-basic | 7 | checkbox |
|
|
| radio-basic | 5 | radio |
|
|
|
|
**우선순위: 2위** - 다양한 모드 지원 필요
|
|
|
|
### UnifiedDate (예상 통합 대상: 83개)
|
|
|
|
| 기존 컴포넌트 | 사용 횟수 |
|
|
| :---------------- | :-------: |
|
|
| date-input (null) | 58 |
|
|
| date-input (date) | 23 |
|
|
| date-input (text) | 2 |
|
|
|
|
**우선순위: 3위**
|
|
|
|
### UnifiedList (예상 통합 대상: 283개)
|
|
|
|
| 기존 컴포넌트 | 사용 횟수 | 비고 |
|
|
| :-------------------- | :-------: | :---------- |
|
|
| table-list | 130 | 기본 테이블 |
|
|
| table-search-widget | 127 | 검색 테이블 |
|
|
| modal-repeater-table | 25 | 모달 반복 |
|
|
| repeater-field-group | 15 | 반복 필드 |
|
|
| card-display | 11 | 카드 표시 |
|
|
| simple-repeater-table | 1 | 단순 반복 |
|
|
|
|
**우선순위: 4위** - 핵심 데이터 표시 컴포넌트
|
|
|
|
### UnifiedMedia (예상 통합 대상: 70개)
|
|
|
|
| 기존 컴포넌트 | 사용 횟수 |
|
|
| :------------ | :-------: |
|
|
| file-upload | 41 |
|
|
| image-widget | 29 |
|
|
|
|
### UnifiedLayout (예상 통합 대상: 62개)
|
|
|
|
| 기존 컴포넌트 | 사용 횟수 |
|
|
| :------------------ | :-------: |
|
|
| split-panel-layout | 39 |
|
|
| screen-split-panel | 21 |
|
|
| split-panel-layout2 | 2 |
|
|
|
|
### UnifiedGroup (예상 통합 대상: 99개)
|
|
|
|
| 기존 컴포넌트 | 사용 횟수 |
|
|
| :-------------------- | :-------: |
|
|
| tabs-widget | 39 |
|
|
| conditional-container | 23 |
|
|
| section-paper | 11 |
|
|
| section-card | 10 |
|
|
| text-display | 13 |
|
|
| universal-form-modal | 7 |
|
|
| repeat-screen-modal | 5 |
|
|
|
|
### UnifiedBiz (예상 통합 대상: 79개)
|
|
|
|
| 기존 컴포넌트 | 사용 횟수 |
|
|
| :--------------------- | :-------: |
|
|
| category-manager | 38 |
|
|
| numbering-rule | 31 |
|
|
| flow-widget | 8 |
|
|
| rack-structure | 2 |
|
|
| related-data-buttons | 2 |
|
|
| location-swap-selector | 2 |
|
|
| tax-invoice-list | 1 |
|
|
|
|
---
|
|
|
|
## 3. 구현 우선순위 결정
|
|
|
|
### Phase 1 우선순위 (즉시 효과가 큰 컴포넌트)
|
|
|
|
| 순위 | Unified 컴포넌트 | 통합 대상 수 | 영향 화면 수 | 이유 |
|
|
| :---: | :---------------- | :----------: | :----------: | :--------------- |
|
|
| **1** | **UnifiedInput** | 891개 | 200+ | 가장 많이 사용 |
|
|
| **2** | **UnifiedSelect** | 140개 | 100+ | 다양한 모드 필요 |
|
|
| **3** | **UnifiedDate** | 83개 | 51 | 비교적 단순 |
|
|
|
|
### Phase 2 우선순위 (데이터 표시 컴포넌트)
|
|
|
|
| 순위 | Unified 컴포넌트 | 통합 대상 수 | 이유 |
|
|
| :---: | :---------------- | :----------: | :--------------- |
|
|
| **4** | **UnifiedList** | 283개 | 핵심 데이터 표시 |
|
|
| **5** | **UnifiedLayout** | 62개 | 레이아웃 구조 |
|
|
| **6** | **UnifiedGroup** | 99개 | 콘텐츠 그룹화 |
|
|
|
|
### Phase 3 우선순위 (특수 컴포넌트)
|
|
|
|
| 순위 | Unified 컴포넌트 | 통합 대상 수 | 이유 |
|
|
| :---: | :------------------- | :----------: | :------------ |
|
|
| **7** | **UnifiedMedia** | 70개 | 파일/이미지 |
|
|
| **8** | **UnifiedBiz** | 79개 | 비즈니스 특화 |
|
|
| **9** | **UnifiedHierarchy** | 0개 | 신규 기능 |
|
|
|
|
---
|
|
|
|
## 4. 주요 발견 사항
|
|
|
|
### 4.1 button-primary 분리 검토
|
|
|
|
- 사용량: 571개 (1위)
|
|
- 현재 계획: UnifiedInput에 포함
|
|
- **제안**: 별도 `UnifiedButton` 컴포넌트로 분리 검토
|
|
- 버튼은 입력과 성격이 다름
|
|
- 액션 타입, 스타일, 권한 등 복잡한 설정 필요
|
|
|
|
### 4.2 conditional-container 처리
|
|
|
|
- 사용량: 23개
|
|
- 현재 계획: 공통 conditional 속성으로 통합
|
|
- **확인 필요**: 기존 화면에서 어떻게 마이그레이션할지
|
|
|
|
### 4.3 category 관련 컴포넌트
|
|
|
|
- select-basic (category): 65개
|
|
- category-manager: 38개
|
|
- **총 103개**의 카테고리 관련 컴포넌트
|
|
- 카테고리 시스템 통합 중요
|
|
|
|
---
|
|
|
|
## 5. 다음 단계
|
|
|
|
1. [ ] 데이터 마이그레이션 전략 설계 (Phase 0-2)
|
|
2. [ ] sys_input_type JSON Schema 설계 (Phase 0-3)
|
|
3. [ ] DynamicConfigPanel 프로토타입 (Phase 0-4)
|
|
4. [ ] UnifiedInput 구현 시작 (Phase 1-1)
|
|
|