9.6 KiB
V2 컴포넌트 마이그레이션 분석 보고서
작성일: 2026-01-27
목적: 미구현 V1 컴포넌트들의 V2 마이그레이션 가능성 분석
1. 현황 요약
| 구분 | 개수 | 비율 |
|---|---|---|
| V1 총 컴포넌트 | 7,170개 | 100% |
| V2 마이그레이션 완료 | 5,212개 | 72.7% |
| 미구현 (분석 대상) | ~520개 | 7.3% |
2. 미구현 컴포넌트 상세 분석
2.1 ✅ 통합 가능 (기존 V2 컴포넌트로 대체)
2.1.1 unified-list (97개) → v2-table-list
분석 결과: ✅ 통합 가능
| 항목 | unified-list | v2-table-list |
|---|---|---|
| 테이블 뷰 | ✅ | ✅ |
| 카드 뷰 | ✅ | ❌ (추가 필요) |
| 검색 | ✅ | ✅ |
| 페이지네이션 | ✅ | ✅ |
| 편집 가능 | ✅ | ✅ |
결론: v2-table-list에 cardView 모드만 추가하면 통합 가능. 또는 DB 마이그레이션으로 v2-table-list로 변환.
작업량: 중간 (v2-table-list 확장 또는 DB 마이그레이션)
2.1.2 autocomplete-search-input (50개) → v2-select
분석 결과: ✅ 통합 가능
| 항목 | autocomplete-search-input | v2-select |
|---|---|---|
| 자동완성 드롭다운 | ✅ | ✅ (mode: autocomplete) |
| 테이블 데이터 검색 | ✅ | ✅ (dataSource 설정) |
| 표시/값 필드 분리 | ✅ | ✅ |
결론: v2-select의 mode: "autocomplete" 또는 mode: "combobox"로 대체 가능.
작업량: 낮음 (DB 마이그레이션만)
2.1.3 repeater-field-group (24개) → v2-repeater
분석 결과: ✅ 통합 가능
v2-repeater가 이미 다음을 지원:
- 인라인 테이블 모드
- 모달 선택 모드
- 버튼 모드
결론: v2-repeater의 renderMode: "inline"으로 대체.
작업량: 낮음 (DB 마이그레이션만)
2.1.4 simple-repeater-table (1개) → v2-repeater
분석 결과: ✅ 통합 가능
결론: v2-repeater로 대체.
작업량: 매우 낮음
2.2 ⚠️ Renderer 추가만 필요 (코드 구조 있음)
2.2.1 split-panel-layout2 (8개)
분석 결과: ⚠️ Renderer 추가 필요
- V1 Renderer:
SplitPanelLayout2Renderer.tsx✅ 존재 - V2 Renderer: ❌ 없음
- Component:
SplitPanelLayout2Component.tsx✅ 존재
결론: V2 형식으로 DB 마이그레이션만 하면 됨 (기존 Renderer가 split-panel-layout2 ID로 등록됨).
작업량: 매우 낮음 (DB 마이그레이션만)
2.2.2 repeat-screen-modal (7개)
분석 결과: ⚠️ Renderer 추가 필요
- V1 Renderer:
RepeatScreenModalRenderer.tsx✅ 존재 - 정의:
hidden: true(v2-repeat-screen-modal 사용으로 패널에서 숨김)
결론: 기존 Renderer 사용 가능, DB 마이그레이션만.
작업량: 매우 낮음
2.2.3 related-data-buttons (5개)
분석 결과: ⚠️ Renderer 추가 필요
- V1 Renderer:
RelatedDataButtonsRenderer.tsx✅ 존재 - Component:
RelatedDataButtonsComponent.tsx✅ 존재
결론: 기존 Renderer 사용 가능, DB 마이그레이션만.
작업량: 매우 낮음
2.3 ❌ 별도 V2 개발 필요 (복잡한 구조)
2.3.1 entity-search-input (99개)
분석 결과: ❌ 별도 개발 필요
특징:
// 모달 기반 엔티티 검색
- 테이블 선택 (tableName)
- 검색 필드 설정 (searchFields)
- 모달 팝업 (modalTitle, modalColumns)
- 값/표시 필드 분리 (valueField, displayField)
- 추가 정보 표시 (additionalFields)
복잡도 요인:
- 모달 검색 UI가 필요
- 다양한 테이블 연동
- 추가 필드 연계 로직
권장 방안:
v2-entity-search새로 개발- 또는
v2-select에mode: "entity"추가
작업량: 높음 (1-2일)
2.3.2 modal-repeater-table (68개)
분석 결과: ❌ 별도 개발 필요
특징:
// 모달에서 항목 검색 + 동적 테이블
- 소스 테이블 (sourceTable, sourceColumns)
- 모달 검색 (modalTitle, modalButtonText, multiSelect)
- 동적 컬럼 추가 (columns)
- 계산 규칙 (calculationRules)
- 고유 필드 (uniqueField)
복잡도 요인:
- 모달 검색 + 선택
- 동적 테이블 행 추가/삭제
- 계산 규칙 (단가 × 수량 = 금액)
- 중복 방지 로직
권장 방안:
v2-repeater의modal모드 확장ItemSelectionModal+RepeaterTable재사용
작업량: 중간 (v2-repeater가 이미 기반 제공)
2.3.3 selected-items-detail-input (83개)
분석 결과: ❌ 별도 개발 필요
특징:
// 선택된 항목들의 상세 입력
- 데이터 소스 (dataSourceId)
- 표시 컬럼 (displayColumns)
- 추가 입력 필드 (additionalFields)
- 타겟 테이블 (targetTable)
- 레이아웃 (grid/table)
복잡도 요인:
- 부모 컴포넌트에서 데이터 수신
- 동적 필드 생성
- 다중 테이블 저장
권장 방안:
v2-selected-items-detail새로 개발- 또는
v2-repeater에mode: "detail-input"추가
작업량: 중간~높음
2.3.4 conditional-container (53개)
분석 결과: ❌ 별도 개발 필요
특징:
// 조건부 UI 분기
- 제어 필드 (controlField, controlLabel)
- 조건별 섹션 (sections: [{condition, label, screenId}])
- 기본값 (defaultValue)
복잡도 요인:
- 셀렉트박스 값에 따른 동적 UI 변경
- 화면 임베딩 (screenId)
- 상태 관리 복잡
권장 방안:
v2-conditional-container새로 개발- 조건부 렌더링 + 화면 임베딩 로직
작업량: 높음
2.3.5 universal-form-modal (26개)
분석 결과: ❌ 별도 개발 필요
특징:
// 범용 폼 모달
- 섹션 기반 레이아웃
- 반복 섹션
- 채번규칙 연동
- 다중 테이블 저장
복잡도 요인:
- 동적 섹션 구성
- 채번규칙 연동
- 다중 테이블 저장
- 반복 필드 그룹
권장 방안:
v2-universal-form새로 개발- 또는 기존 컴포넌트 유지 (특수 목적)
작업량: 매우 높음 (3일 이상)
2.4 🟢 V1 유지 권장 (특수 목적)
| 컴포넌트 | 개수 | 이유 |
|---|---|---|
tax-invoice-list |
1 | 세금계산서 전용, 재사용 낮음 |
mail-recipient-selector |
1 | 메일 전용, 재사용 낮음 |
unified-select |
5 | → v2-select로 이미 마이그레이션 |
unified-date |
2 | → v2-date로 이미 마이그레이션 |
unified-repeater |
2 | → v2-repeater로 이미 마이그레이션 |
3. 마이그레이션 우선순위 권장
3.1 즉시 처리 (1일 이내)
| 순위 | 컴포넌트 | 개수 | 작업 |
|---|---|---|---|
| 1 | split-panel-layout2 |
8 | DB 마이그레이션만 |
| 2 | repeat-screen-modal |
7 | DB 마이그레이션만 |
| 3 | related-data-buttons |
5 | DB 마이그레이션만 |
| 4 | autocomplete-search-input |
50 | → v2-select 변환 |
| 5 | repeater-field-group |
24 | → v2-repeater 변환 |
총: 94개 컴포넌트
3.2 단기 처리 (1주 이내)
| 순위 | 컴포넌트 | 개수 | 작업 |
|---|---|---|---|
| 1 | unified-list |
97 | → v2-table-list 확장 또는 변환 |
| 2 | modal-repeater-table |
68 | v2-repeater modal 모드 확장 |
총: 165개 컴포넌트
3.3 중기 처리 (2주 이상)
| 순위 | 컴포넌트 | 개수 | 작업 |
|---|---|---|---|
| 1 | entity-search-input |
99 | v2-entity-search 신규 개발 |
| 2 | selected-items-detail-input |
83 | v2-selected-items-detail 개발 |
| 3 | conditional-container |
53 | v2-conditional-container 개발 |
| 4 | universal-form-modal |
26 | v2-universal-form 개발 |
총: 261개 컴포넌트
4. 권장 아키텍처
4.1 V2 컴포넌트 통합 계획
v2-input ← text-input, number-input, textarea, unified-input ✅ 완료
v2-select ← select-basic, checkbox, radio, autocomplete ⚠️ 진행중
v2-date ← date-input, unified-date ✅ 완료
v2-media ← file-upload, image-widget ✅ 완료
v2-table-list ← table-list, unified-list ⚠️ 확장 필요
v2-repeater ← repeater-field-group, modal-repeater-table,
simple-repeater-table, related-data-buttons ⚠️ 진행중
v2-entity-search ← entity-search-input (신규 개발 필요)
v2-conditional ← conditional-container (신규 개발 필요)
5. 결론
즉시 처리 가능 (Renderer/DB만)
split-panel-layout2,repeat-screen-modal,related-data-buttons: 20개autocomplete-search-input→v2-select: 50개repeater-field-group→v2-repeater: 24개
통합 검토 필요
unified-list→v2-table-list확장: 97개modal-repeater-table→v2-repeater확장: 68개
신규 개발 필요
entity-search-input: 99개 (복잡도 높음)selected-items-detail-input: 83개conditional-container: 53개universal-form-modal: 26개
유지
- 특수 목적 컴포넌트: 3개 (tax-invoice-list, mail-recipient-selector)
6. 다음 단계
- 즉시:
split-panel-layout2,repeat-screen-modal,related-data-buttonsDB 마이그레이션 - 이번 주:
autocomplete-search-input→v2-select,repeater-field-group→v2-repeater변환 - 다음 주:
unified-list,modal-repeater-table통합 설계 - 이후:
entity-search-input,conditional-container신규 개발 계획 수립