ERP-node/docs/V2_COMPONENT_MIGRATION_ANAL...

9.6 KiB
Raw Permalink Blame History

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-listcardView 모드만 추가하면 통합 가능. 또는 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-selectmode: "autocomplete" 또는 mode: "combobox"로 대체 가능.

작업량: 낮음 (DB 마이그레이션만)


2.1.3 repeater-field-group (24개) → v2-repeater

분석 결과: 통합 가능

v2-repeater가 이미 다음을 지원:

  • 인라인 테이블 모드
  • 모달 선택 모드
  • 버튼 모드

결론: v2-repeaterrenderMode: "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 마이그레이션만.

작업량: 매우 낮음


분석 결과: ⚠️ 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)

복잡도 요인:

  1. 모달 검색 UI가 필요
  2. 다양한 테이블 연동
  3. 추가 필드 연계 로직

권장 방안:

  • v2-entity-search 새로 개발
  • 또는 v2-selectmode: "entity" 추가

작업량: 높음 (1-2일)


2.3.2 modal-repeater-table (68개)

분석 결과: 별도 개발 필요

특징:

// 모달에서 항목 검색 + 동적 테이블
- 소스 테이블 (sourceTable, sourceColumns)
- 모달 검색 (modalTitle, modalButtonText, multiSelect)
- 동적 컬럼 추가 (columns)
- 계산 규칙 (calculationRules)
- 고유 필드 (uniqueField)

복잡도 요인:

  1. 모달 검색 + 선택
  2. 동적 테이블 행 추가/삭제
  3. 계산 규칙 (단가 × 수량 = 금액)
  4. 중복 방지 로직

권장 방안:

  • v2-repeatermodal 모드 확장
  • ItemSelectionModal + RepeaterTable 재사용

작업량: 중간 (v2-repeater가 이미 기반 제공)


2.3.3 selected-items-detail-input (83개)

분석 결과: 별도 개발 필요

특징:

// 선택된 항목들의 상세 입력
- 데이터 소스 (dataSourceId)
- 표시 컬럼 (displayColumns)
- 추가 입력 필드 (additionalFields)
- 타겟 테이블 (targetTable)
- 레이아웃 (grid/table)

복잡도 요인:

  1. 부모 컴포넌트에서 데이터 수신
  2. 동적 필드 생성
  3. 다중 테이블 저장

권장 방안:

  • v2-selected-items-detail 새로 개발
  • 또는 v2-repeatermode: "detail-input" 추가

작업량: 중간~높음


2.3.4 conditional-container (53개)

분석 결과: 별도 개발 필요

특징:

// 조건부 UI 분기
- 제어 필드 (controlField, controlLabel)
- 조건별 섹션 (sections: [{condition, label, screenId}])
- 기본값 (defaultValue)

복잡도 요인:

  1. 셀렉트박스 값에 따른 동적 UI 변경
  2. 화면 임베딩 (screenId)
  3. 상태 관리 복잡

권장 방안:

  • v2-conditional-container 새로 개발
  • 조건부 렌더링 + 화면 임베딩 로직

작업량: 높음


2.3.5 universal-form-modal (26개)

분석 결과: 별도 개발 필요

특징:

// 범용 폼 모달
- 섹션 기반 레이아웃
- 반복 섹션
- 채번규칙 연동
- 다중 테이블 저장

복잡도 요인:

  1. 동적 섹션 구성
  2. 채번규칙 연동
  3. 다중 테이블 저장
  4. 반복 필드 그룹

권장 방안:

  • 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-inputv2-select: 50개
  • repeater-field-groupv2-repeater: 24개

통합 검토 필요

  • unified-listv2-table-list 확장: 97개
  • modal-repeater-tablev2-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. 다음 단계

  1. 즉시: split-panel-layout2, repeat-screen-modal, related-data-buttons DB 마이그레이션
  2. 이번 주: autocomplete-search-inputv2-select, repeater-field-groupv2-repeater 변환
  3. 다음 주: unified-list, modal-repeater-table 통합 설계
  4. 이후: entity-search-input, conditional-container 신규 개발 계획 수립