ERP-node/docs/screen-implementation-guide/01_reference_guides/full-screen-analysis.md

41 KiB

WACE 화면 시스템 - DB 스키마 & 컴포넌트 설정 전체 레퍼런스

최종 업데이트: 2026-03-13 용도: AI 챗봇이 화면 생성 시 참조하는 DB 스키마, 컴포넌트 전체 설정 사전 관련 문서: v2-component-usage-guide.md (SQL 템플릿, 실행 예시)


1. 시스템 아키텍처

렌더링 파이프라인

[DB] screen_definitions + screen_layouts_v2
  → [Backend API] GET /api/screens/:screenId
  → [layoutV2Converter] V2 JSON → Legacy 변환 (기본값 + overrides 병합)
  → [ResponsiveGridRenderer] → DynamicComponentRenderer
  → [ComponentRegistry] → 실제 React 컴포넌트

테이블 관계도

비즈니스 테이블 ←── table_labels (라벨)
                ←── table_type_columns (컬럼 타입, company_code='*')
                ←── column_labels (한글 라벨)

screen_definitions ←── screen_layouts_v2 (layout_data JSON)
menu_info (메뉴 트리, menu_url → /screen/{screen_code})

[선택] dataflow_diagrams (비즈니스 로직)
[선택] numbering_rules + numbering_rule_parts (채번)
[선택] table_column_category_values (카테고리)

2. DB 테이블 스키마

2.1 비즈니스 테이블 필수 구조

[최우선 규칙] 비즈니스 테이블에 NOT NULL / UNIQUE 제약조건 절대 금지!

멀티테넌시 환경에서 회사별로 필수값/유니크 규칙이 다를 수 있으므로, 제약조건은 DB 레벨이 아닌 table_type_columns의 메타데이터(is_nullable, is_unique)로 논리적 제어한다. DB에 직접 NOT NULL/UNIQUE/CHECK/FOREIGN KEY를 걸면 멀티테넌시가 깨진다.

허용: id PRIMARY KEY, DEFAULT 값만 DB 레벨 설정 금지: 비즈니스 컬럼에 NOT NULL, UNIQUE, CHECK, FOREIGN KEY

CREATE TABLE "{테이블명}" (
  "id" varchar(500) PRIMARY KEY DEFAULT gen_random_uuid()::text,
  "created_date" timestamp DEFAULT now(),
  "updated_date" timestamp DEFAULT now(),
  "writer" varchar(500) DEFAULT NULL,
  "company_code" varchar(500),
  -- 모든 비즈니스 컬럼은 varchar(500), NOT NULL/UNIQUE 제약조건 금지
);

2.2 table_labels

컬럼 타입 설명
table_name varchar PK 테이블명
table_label varchar 한글 라벨
description text 설명
use_log_table varchar(1) 'Y'/'N'

2.3 table_type_columns

컬럼 타입 설명
id serial PK 자동 증가
table_name varchar UNIQUE(+column_name+company_code)
column_name varchar 컬럼명
company_code varchar '*' = 전체 공통
input_type varchar text/number/date/code/entity/select/checkbox/radio/textarea/category/numbering
detail_settings text JSON (code/entity/select 상세)
is_nullable varchar 'Y'/'N' (논리적 필수값 제어)
display_order integer -5~-1: 기본, 0~: 비즈니스
column_label varchar 컬럼 한글 라벨
description text 컬럼 설명
is_visible boolean 화면 표시 여부 (기본 true)
code_category varchar input_type=code일 때 코드 카테고리
code_value varchar 코드 값
reference_table varchar input_type=entity일 때 참조 테이블
reference_column varchar 참조 컬럼
display_column varchar 참조 표시 컬럼
is_unique varchar 'Y'/'N' (논리적 유니크 제어)
category_ref varchar 카테고리 참조

2.4 screen_definitions

컬럼 타입 설명
screen_id serial PK 자동 증가
screen_name varchar NOT NULL 화면명
screen_code varchar 조건부 UNIQUE (WHERE is_active <> 'D')
table_name varchar 메인 테이블명
company_code varchar NOT NULL 회사 코드
description text 화면 설명
is_active char(1) 'Y'/'N'/'D' (D=삭제)
layout_metadata jsonb 레이아웃 메타데이터
created_date timestamp 생성일시
created_by varchar 생성자
updated_date timestamp 수정일시
updated_by varchar 수정자
deleted_date timestamp 삭제일시
deleted_by varchar 삭제자
delete_reason text 삭제 사유
db_source_type varchar 'internal' (기본) / 'external'
db_connection_id integer 외부 DB 연결 ID
data_source_type varchar 'database' (기본) / 'rest_api'
rest_api_connection_id integer REST API 연결 ID
rest_api_endpoint varchar REST API 엔드포인트
rest_api_json_path varchar JSON 응답 경로 (기본 'data')
source_screen_id integer 원본 화면 ID (복사본일 때)

screen_code UNIQUE 주의: is_active = 'D'(삭제)인 화면은 UNIQUE 대상에서 제외된다. 삭제된 화면과 같은 코드로 새 화면을 만들 수 있지만, 활성 상태('Y'/'N')에서는 중복 불가.

2.5 screen_layouts_v2

컬럼 타입 설명
layout_id serial PK 자동 증가
screen_id integer FK UNIQUE(+company_code+layer_id)
company_code varchar NOT NULL 회사 코드
layout_data jsonb NOT NULL 전체 레이아웃 JSON (기본 '{}')
created_at timestamptz 생성일시
updated_at timestamptz 수정일시
layer_id integer 1=기본 레이어 (기본값 1)
layer_name varchar 레이어명 (기본 '기본 레이어')
condition_config jsonb 레이어 조건부 표시 설정

2.6 menu_info

컬럼 타입 설명
objid numeric PK BIGINT 고유값
menu_type numeric 0=화면, 1=폴더
parent_obj_id numeric 부모 메뉴 objid
menu_name_kor varchar 메뉴명 (한글)
menu_name_eng varchar 메뉴명 (영문)
seq numeric 정렬 순서
menu_url varchar /screen/{screen_code}
menu_desc varchar 메뉴 설명
writer varchar 작성자
regdate timestamp 등록일시
status varchar 상태 ('active' 등)
company_code varchar 회사 코드 (기본 '*')
screen_code varchar 연결 화면 코드
system_name varchar 시스템명
lang_key varchar 다국어 키
lang_key_desc varchar 다국어 설명 키
menu_code varchar 메뉴 코드
source_menu_objid bigint 원본 메뉴 objid (복사본일 때)
screen_group_id integer 화면 그룹 ID
menu_icon varchar 메뉴 아이콘

3. 컴포넌트 전체 설정 레퍼런스 (32개)

아래 설정은 layout_data JSON의 각 컴포넌트 overrides 안에 들어가는 값이다. 기본값과 다른 부분만 overrides에 지정하면 된다.


3.1 v2-table-list (데이터 테이블)

용도: DB 테이블 데이터를 테이블/카드 형태로 조회/편집. 가장 핵심적인 컴포넌트.

설정 타입 기본값 설명
tableName string - 조회할 DB 테이블명
selectedTable string - tableName 별칭
displayMode "table"|"card" "table" 테이블 모드 또는 카드 모드
autoLoad boolean true 화면 로드 시 자동으로 데이터 조회
isReadOnly boolean false 읽기 전용 (편집 불가)
columns ColumnConfig[] [] 표시할 컬럼 설정 배열
title string - 테이블 상단 제목
showHeader boolean true 테이블 헤더 행 표시
showFooter boolean true 테이블 푸터 표시
height string "auto" 높이 모드 ("auto", "fixed", "viewport")
fixedHeight number - height="fixed"일 때 고정 높이(px)
autoWidth boolean true 컬럼 너비 자동 계산
stickyHeader boolean false 스크롤 시 헤더 고정

checkbox (체크박스 설정):

설정 타입 기본값 설명
enabled boolean true 체크박스 사용 여부
multiple boolean true 다중 선택 허용
position "left"|"right" "left" 체크박스 위치
selectAll boolean true 전체 선택 버튼 표시

pagination (페이지네이션):

설정 타입 기본값 설명
enabled boolean true 페이지네이션 사용
pageSize number 20 한 페이지당 행 수
showSizeSelector boolean true 페이지 크기 변경 드롭다운
showPageInfo boolean true "1-20 / 100건" 같은 정보 표시
pageSizeOptions number[] [10,20,50,100] 선택 가능한 페이지 크기

horizontalScroll (가로 스크롤):

설정 타입 기본값 설명
enabled boolean true 가로 스크롤 사용
maxVisibleColumns number 8 스크롤 없이 보이는 최대 컬럼 수
minColumnWidth number 100 컬럼 최소 너비(px)
maxColumnWidth number 300 컬럼 최대 너비(px)

tableStyle (스타일):

설정 타입 기본값 설명
theme string "default" 테마 (default/striped/bordered/minimal)
headerStyle string "default" 헤더 스타일 (default/dark/light)
rowHeight string "normal" 행 높이 (compact/normal/comfortable)
alternateRows boolean true 짝수/홀수 행 색상 교차
hoverEffect boolean true 마우스 호버 시 행 강조
borderStyle string "light" 테두리 (none/light/heavy)

toolbar (툴바 버튼):

설정 타입 기본값 설명
showEditMode boolean false 즉시저장/배치저장 모드 전환 버튼
showExcel boolean false Excel 내보내기 버튼
showPdf boolean false PDF 내보내기 버튼
showSearch boolean false 테이블 내 검색
showRefresh boolean false 상단 새로고침 버튼
showPaginationRefresh boolean true 하단 새로고침 버튼

filter (필터):

설정 타입 기본값 설명
enabled boolean true 필터 기능 사용
filters array [] 사전 정의 필터 목록

ColumnConfig (columns 배열 요소):

설정 타입 설명
columnName string DB 컬럼명
displayName string 화면 표시명
visible boolean 표시 여부
sortable boolean 정렬 가능 여부
searchable boolean 검색 가능 여부
editable boolean 인라인 편집 가능 여부
width number 컬럼 너비(px)
align "left"|"center"|"right" 텍스트 정렬
format string 포맷 (text/number/date/currency/boolean)
hidden boolean 숨김 (데이터는 로드하되 표시 안 함)
fixed "left"|"right"|false 컬럼 고정 위치
thousandSeparator boolean 숫자 천 단위 콤마
isEntityJoin boolean 엔티티 조인 사용 여부
entityJoinInfo object 조인 정보 (sourceTable, sourceColumn, referenceTable, joinAlias)

cardConfig (displayMode="card"일 때):

설정 타입 기본값 설명
idColumn string "id" ID 컬럼
titleColumn string "name" 카드 제목 컬럼
subtitleColumn string - 부제목 컬럼
descriptionColumn string - 설명 컬럼
imageColumn string - 이미지 URL 컬럼
cardsPerRow number 3 행당 카드 수
cardSpacing number 16 카드 간격(px)
showActions boolean true 카드 액션 버튼 표시

3.2 v2-split-panel-layout (마스터-디테일 분할)

용도: 좌측 마스터 테이블 선택 → 우측 디테일 테이블 연동. 가장 복잡한 컴포넌트.

설정 타입 기본값 설명
splitRatio number 30 좌측 패널 비율(0~100)
resizable boolean true 사용자가 분할선 드래그로 비율 변경 가능
minLeftWidth number 200 좌측 최소 너비(px)
minRightWidth number 300 우측 최소 너비(px)
autoLoad boolean true 화면 로드 시 자동 데이터 조회
syncSelection boolean true 좌측 선택 시 우측 자동 갱신

leftPanel / rightPanel 공통 설정:

설정 타입 설명
title string 패널 제목
tableName string DB 테이블명
displayMode "list"|"table"|"custom" list: 리스트, table: 테이블, custom: 자유 배치
columns array 컬럼 설정 (name, label, width, sortable, align, isEntityJoin, joinInfo)
showSearch boolean 패널 내 검색 바 표시
showAdd boolean 추가 버튼 표시
showEdit boolean 수정 버튼 표시
showDelete boolean 삭제 버튼 표시
addButton object { enabled, mode("auto"/"modal"), modalScreenId }
editButton object { enabled, mode("auto"/"modal"), modalScreenId, buttonLabel }
deleteButton object { enabled, buttonLabel, confirmMessage }
addModalColumns array 추가 모달 전용 컬럼 (name, label, required)
dataFilter object { enabled, filters, matchType("all"/"any") }
tableConfig object { showCheckbox, showRowNumber, rowHeight, headerHeight, striped, bordered, hoverable, stickyHeader }
components array displayMode="custom"일 때 내부 컴포넌트 배열

rightPanel 전용 설정:

설정 타입 설명
relation object 마스터-디테일 연결 관계
relation.type "detail"|"join" detail: FK 관계, join: 테이블 JOIN
relation.leftColumn string 좌측(마스터) 연결 컬럼 (보통 "id")
relation.rightColumn string 우측(디테일) 연결 컬럼 (FK)
relation.foreignKey string FK 컬럼명 (rightColumn과 동일)
relation.keys array 복합키 [{ leftColumn, rightColumn }]
additionalTabs array 우측 패널에 탭 추가 (각 탭은 rightPanel과 동일 구조 + tabId, label)
addConfig object { targetTable, autoFillColumns, leftPanelColumn, targetColumn }
deduplication object { enabled, groupByColumn, keepStrategy, sortColumn }
summaryColumnCount number 요약 표시 컬럼 수

3.3 v2-table-search-widget (검색 바)

용도: 테이블 상단에 배치하여 검색/필터 기능 제공. 대상 테이블 컬럼을 자동 감지.

설정 타입 기본값 설명
autoSelectFirstTable boolean true 화면 내 첫 번째 테이블 자동 연결
showTableSelector boolean true 테이블 선택 드롭다운 표시
title string "테이블 검색" 검색 바 제목
filterMode "dynamic"|"preset" "dynamic" dynamic: 자동 필터, preset: 고정 필터
presetFilters array [] 고정 필터 목록 ({ columnName, columnLabel, filterType, width })
targetPanelPosition "left"|"right"|"auto" "left" split-panel에서 대상 패널 위치

3.4 v2-input (텍스트/숫자 입력)

용도: 텍스트, 숫자, 비밀번호, textarea, 슬라이더, 컬러, 버튼 등 단일 값 입력.

설정 타입 기본값 설명
inputType string "text" 입력 유형: text/number/password/slider/color/button/textarea
format string "none" 포맷 검증: none/email/tel/url/currency/biz_no
placeholder string "" 입력 힌트 텍스트
required boolean false 필수 입력 표시
readonly boolean false 읽기 전용
disabled boolean false 비활성화
maxLength number - 최대 입력 글자 수
minLength number - 최소 입력 글자 수
pattern string - 정규식 패턴 검증
showCounter boolean false 글자 수 카운터 표시
min number - 최소값 (number/slider)
max number - 최대값 (number/slider)
step number - 증감 단위 (number/slider)
buttonText string - 버튼 텍스트 (inputType=button)
tableName string - 바인딩 테이블명
columnName string - 바인딩 컬럼명

3.5 v2-select (선택)

용도: 드롭다운, 콤보박스, 라디오, 체크박스, 태그, 토글 등 선택형 입력.

설정 타입 기본값 설명
mode string "dropdown" 선택 모드: dropdown/combobox/radio/check/tag/tagbox/toggle/swap
source string "distinct" 데이터 소스: static/code/db/api/entity/category/distinct/select
options array [] source=static일 때 옵션 목록 [{ label, value }]
codeGroup string - source=code일 때 코드 그룹
codeCategory string - source=code일 때 코드 카테고리
table string - source=db일 때 테이블명
valueColumn string - source=db일 때 값 컬럼
labelColumn string - source=db일 때 표시 컬럼
entityTable string - source=entity일 때 엔티티 테이블
entityValueField string - source=entity일 때 값 필드
entityLabelField string - source=entity일 때 표시 필드
searchable boolean true 검색 가능 (combobox에서 기본 활성)
multiple boolean false 다중 선택 허용
maxSelect number - 최대 선택 수
allowClear boolean - 선택 해제 허용
placeholder string "선택하세요" 힌트 텍스트
required boolean false 필수 선택
readonly boolean false 읽기 전용
disabled boolean false 비활성화
cascading object - 연쇄 선택 (상위 select 값에 따라 하위 옵션 변경)
hierarchical boolean - 계층 구조 (부모-자식 관계)
parentField string - 부모 필드명

3.6 v2-date (날짜)

용도: 날짜, 시간, 날짜시간, 날짜범위, 월, 연도 입력.

설정 타입 기본값 설명
dateType string "date" 날짜 유형: date/datetime/time/daterange/month/year
format string "YYYY-MM-DD" 표시/저장 형식
placeholder string "날짜 선택" 힌트 텍스트
required boolean false 필수 입력
readonly boolean false 읽기 전용
disabled boolean false 비활성화
showTime boolean false 시간 선택 표시 (datetime)
use24Hours boolean true 24시간 형식
range boolean - 범위 선택 (시작~종료)
minDate string - 선택 가능 최소 날짜 (ISO 8601)
maxDate string - 선택 가능 최대 날짜
showToday boolean - 오늘 버튼 표시

3.7 v2-button-primary (액션 버튼)

용도: 저장, 삭제, 조회, 커스텀 등 액션 버튼. 제어관리(dataflow)와 연결 가능.

설정 타입 기본값 설명
text string "저장" 버튼 텍스트
actionType string "button" 버튼 타입: button/submit/reset
variant string "primary" 스타일: primary/secondary/danger
size string "md" 크기: sm/md/lg
disabled boolean false 비활성화
action object - 액션 설정
action.type string "save" 액션 유형: save/delete/edit/copy/navigate/modal/control/custom
action.successMessage string "저장되었습니다." 성공 시 토스트 메시지
action.errorMessage string "오류가 발생했습니다." 실패 시 토스트 메시지
webTypeConfig object - 제어관리 연결 설정
webTypeConfig.enableDataflowControl boolean - 제어관리 활성화
webTypeConfig.dataflowConfig object - 제어관리 설정
webTypeConfig.dataflowConfig.controlMode string - "relationship"/"flow"/"none"
webTypeConfig.dataflowConfig.relationshipConfig object - { relationshipId, executionTiming("before"/"after"/"replace") }
webTypeConfig.dataflowConfig.flowConfig object - { flowId, executionTiming }

3.8 v2-table-grouped (그룹화 테이블)

용도: 특정 컬럼 기준으로 데이터를 그룹화. 그룹별 접기/펼치기, 집계 표시.

설정 타입 기본값 설명
selectedTable string "" DB 테이블명
columns array [] 컬럼 설정 (v2-table-list와 동일)
showCheckbox boolean false 체크박스 표시
checkboxMode "single"|"multi" "multi" 체크박스 모드
isReadOnly boolean false 읽기 전용
rowClickable boolean true 행 클릭 가능
showExpandAllButton boolean true 전체 펼치기/접기 버튼
groupHeaderStyle string "default" 그룹 헤더 스타일 (default/compact/card)
emptyMessage string "데이터가 없습니다." 빈 데이터 메시지
height string|number "auto" 높이
maxHeight number 600 최대 높이(px)
pagination.enabled boolean false 페이지네이션 사용
pagination.pageSize number 10 페이지 크기

groupConfig (그룹화 설정):

설정 타입 기본값 설명
groupByColumn string "" 필수. 그룹화 기준 컬럼
groupLabelFormat string "{value}" 그룹 라벨 포맷
defaultExpanded boolean true 초기 펼침 여부
sortDirection "asc"|"desc" "asc" 그룹 정렬 방향
summary.showCount boolean true 그룹별 건수 표시
summary.sumColumns string[] [] 합계 표시할 컬럼 목록
summary.avgColumns string[] - 평균 표시 컬럼
summary.maxColumns string[] - 최대값 표시 컬럼
summary.minColumns string[] - 최소값 표시 컬럼

3.9 v2-pivot-grid (피벗 분석)

용도: 다차원 데이터 분석. 행/열/데이터/필터 영역에 필드를 배치하여 집계.

설정 타입 기본값 설명
fields array [] 필수. 피벗 필드 배열
dataSource object - 데이터 소스 (type, tableName, joinConfigs, filterConditions)
allowSortingBySummary boolean - 집계값 기준 정렬 허용
allowFiltering boolean - 필터링 허용
allowExpandAll boolean - 전체 확장/축소 허용
wordWrapEnabled boolean - 텍스트 줄바꿈
height string|number - 높이
totals.showRowGrandTotals boolean - 행 총합계 표시
totals.showColumnGrandTotals boolean - 열 총합계 표시
chart.enabled boolean - 차트 연동 표시
chart.type string - 차트 타입 (bar/line/area/pie/stackedBar)

fields 배열 요소:

설정 타입 설명
field string DB 컬럼명
caption string 표시 라벨
area "row"|"column"|"data"|"filter" 필수. 배치 영역
summaryType string area=data일 때: sum/count/avg/min/max/countDistinct
groupInterval string 날짜 그룹화: year/quarter/month/week/day
sortBy string 정렬 기준: value/caption
sortOrder string 정렬 방향: asc/desc/none

3.10 v2-card-display (카드 뷰)

용도: 테이블 데이터를 카드 형태로 표시. 이미지+제목+설명 구조.

설정 타입 기본값 설명
dataSource string "table" 데이터 소스: table/static
tableName string - DB 테이블명
cardsPerRow number 3 행당 카드 수 (1~6)
cardSpacing number 16 카드 간격(px)
columnMapping object {} 필드 매핑 (title, subtitle, description, image, status)
cardStyle.showTitle boolean true 제목 표시
cardStyle.showSubtitle boolean true 부제목 표시
cardStyle.showDescription boolean true 설명 표시
cardStyle.showImage boolean false 이미지 표시
cardStyle.showActions boolean true 액션 버튼 표시

3.11 v2-timeline-scheduler (간트차트)

용도: 시간축 기반 일정/계획 시각화. 드래그/리사이즈로 일정 편집.

설정 타입 기본값 설명
selectedTable string - 스케줄 데이터 테이블
resourceTable string "equipment_mng" 리소스(설비/작업자) 테이블
scheduleType string "PRODUCTION" 스케줄 유형: PRODUCTION/MAINTENANCE/SHIPPING/WORK_ASSIGN
defaultZoomLevel string "day" 초기 줌: day/week/month
editable boolean true 편집 가능
draggable boolean true 드래그 이동 허용
resizable boolean true 기간 리사이즈 허용
rowHeight number 50 행 높이(px)
headerHeight number 60 헤더 높이(px)
resourceColumnWidth number 150 리소스 컬럼 너비(px)
cellWidth.day number 60 일 단위 셀 너비
cellWidth.week number 120 주 단위 셀 너비
cellWidth.month number 40 월 단위 셀 너비
showConflicts boolean true 시간 겹침 충돌 표시
showProgress boolean true 진행률 바 표시
showTodayLine boolean true 오늘 날짜 표시선
showToolbar boolean true 상단 툴바 표시
showAddButton boolean true 추가 버튼
height number 500 높이(px)

fieldMapping (필수):

설정 기본값 설명
id "schedule_id" 스케줄 PK 필드
resourceId "resource_id" 리소스 FK 필드
title "schedule_name" 제목 필드
startDate "start_date" 시작일 필드
endDate "end_date" 종료일 필드
status - 상태 필드
progress - 진행률 필드 (0~100)

resourceFieldMapping:

설정 기본값 설명
id "equipment_code" 리소스 PK
name "equipment_name" 리소스 표시명
group - 리소스 그룹

statusColors (상태별 색상):

상태 기본 색상
planned "#3b82f6" (파랑)
in_progress "#f59e0b" (주황)
completed "#10b981" (초록)
delayed "#ef4444" (빨강)
cancelled "#6b7280" (회색)

3.12 v2-tabs-widget (탭)

용도: 탭 전환. 각 탭 내부에 컴포넌트 배치 가능.

설정 타입 기본값 설명
tabs array [{id:"tab-1",label:"탭1",...}] 탭 배열
defaultTab string "tab-1" 기본 활성 탭 ID
orientation string "horizontal" 탭 방향: horizontal/vertical
variant string "default" 스타일: default/pills/underline
allowCloseable boolean false 탭 닫기 버튼 표시
persistSelection boolean false 탭 선택 상태 localStorage 저장

tabs 배열 요소: { id, label, order, disabled, icon, components[] } components 요소: { id, componentType, label, position, size, componentConfig }


3.13 v2-aggregation-widget (집계 카드)

용도: 합계, 평균, 개수 등 집계값을 카드 형태로 표시.

설정 타입 기본값 설명
dataSourceType string "table" 데이터 소스: table/component/selection
tableName string - 테이블명
items array [] 집계 항목 배열
layout string "horizontal" 배치: horizontal/vertical
showLabels boolean true 라벨 표시
showIcons boolean true 아이콘 표시
gap string "16px" 항목 간격
autoRefresh boolean false 자동 새로고침
refreshOnFormChange boolean true 폼 변경 시 새로고침

items 요소: { id, columnName, columnLabel, type("sum"/"avg"/"count"/"max"/"min"), format, decimalPlaces, prefix, suffix }


3.14 v2-status-count (상태별 건수)

용도: 상태별 건수를 카드 형태로 표시. 대시보드/현황 화면용.

설정 타입 기본값 설명
title string "상태 현황" 제목
tableName string "" 대상 테이블
statusColumn string "status" 상태 컬럼명
relationColumn string "" 관계 컬럼 (필터용)
items array - 상태 항목 [{ value, label, color }]
showTotal boolean - 합계 표시
cardSize string "md" 카드 크기: sm/md/lg

3.15 v2-text-display (텍스트 표시)

설정 타입 기본값 설명
text string "텍스트를 입력하세요" 표시 텍스트
fontSize string "14px" 폰트 크기
fontWeight string "normal" 폰트 굵기
color string "#212121" 텍스트 색상
textAlign string "left" 정렬: left/center/right
backgroundColor string - 배경색
padding string - 패딩

3.16 v2-numbering-rule (자동 채번)

설정 타입 기본값 설명
ruleConfig object - 채번 규칙 설정
maxRules number 6 최대 파트 수
readonly boolean false 읽기 전용
showPreview boolean true 미리보기 표시
showRuleList boolean true 규칙 목록 표시
cardLayout string "vertical" 레이아웃: vertical/horizontal

3.17 v2-file-upload (파일 업로드)

설정 타입 기본값 설명
placeholder string "파일을 선택하세요" 힌트 텍스트
multiple boolean true 다중 업로드
accept string "*/*" 허용 파일 형식 (예: "image/*", ".pdf,.xlsx")
maxSize number 10485760 최대 파일 크기(bytes, 기본 10MB)
maxFiles number - 최대 파일 수
showPreview boolean - 미리보기 표시
showFileList boolean - 파일 목록 표시
allowDelete boolean - 삭제 허용
allowDownload boolean - 다운로드 허용

3.18 v2-section-card (그룹 컨테이너 - 테두리)

설정 타입 기본값 설명
title string "섹션 제목" 제목
description string "" 설명
showHeader boolean true 헤더 표시
padding string "md" 패딩: none/sm/md/lg
backgroundColor string "default" 배경: default/muted/transparent
borderStyle string "solid" 테두리: solid/dashed/none
collapsible boolean false 접기/펼치기 가능
defaultOpen boolean true 기본 펼침

3.19 v2-section-paper (그룹 컨테이너 - 배경색)

설정 타입 기본값 설명
backgroundColor string "default" 배경: default/muted/accent/primary/custom
customColor string - custom일 때 색상
showBorder boolean false 테두리 표시
padding string "md" 패딩: none/sm/md/lg
roundedCorners string "md" 모서리: none/sm/md/lg
shadow string "none" 그림자: none/sm/md

3.20 v2-divider-line (구분선)

설정 타입 기본값 설명
orientation string - 방향 (가로/세로)
thickness number - 두께

3.21 v2-split-line (캔버스 분할선)

설정 타입 기본값 설명
resizable boolean true 드래그 리사이즈 허용
lineColor string "#e2e8f0" 분할선 색상
lineWidth number 4 분할선 두께(px)

3.22 v2-repeat-container (반복 렌더링)

용도: 데이터 수만큼 내부 컴포넌트를 반복 렌더링. 카드 리스트 등에 사용.

설정 타입 기본값 설명
dataSourceType string "manual" 소스: table-list/v2-repeater/externalData/manual
dataSourceComponentId string - 연결할 컴포넌트 ID
tableName string - 테이블명
layout string "vertical" 배치: vertical/horizontal/grid
gridColumns number 2 grid일 때 컬럼 수
gap string "16px" 아이템 간격
showBorder boolean true 카드 테두리
showShadow boolean false 카드 그림자
borderRadius string "8px" 모서리 둥글기
backgroundColor string "#ffffff" 배경색
padding string "16px" 패딩
showItemTitle boolean false 아이템 제목 표시
itemTitleTemplate string "" 제목 템플릿 (예: "{order_no} - {item}")
emptyMessage string "데이터가 없습니다" 빈 상태 메시지
clickable boolean false 클릭 가능
selectionMode string "single" 선택 모드: single/multiple
usePaging boolean false 페이징 사용
pageSize number 10 페이지 크기

3.23 v2-repeater (반복 데이터 관리)

용도: 인라인/모달 모드로 반복 데이터(주문 상세 등) 관리. 행 추가/삭제/편집.

설정 타입 기본값 설명
renderMode string "inline" 모드: inline (인라인 편집) / modal (모달로 선택 추가)
mainTableName string - 저장 대상 테이블
foreignKeyColumn string - 마스터 연결 FK 컬럼
foreignKeySourceColumn string - 마스터 PK 컬럼
columns array [] 컬럼 설정
dataSource.tableName string - 데이터 테이블
dataSource.foreignKey string - FK 컬럼
dataSource.sourceTable string - 모달용 소스 테이블
modal.size string "md" 모달 크기: sm/md/lg/xl/full
modal.title string - 모달 제목
modal.searchFields string[] - 검색 필드
features.showAddButton boolean true 추가 버튼
features.showDeleteButton boolean true 삭제 버튼
features.inlineEdit boolean false 인라인 편집
features.showRowNumber boolean false 행 번호 표시
calculationRules array - 자동 계산 규칙 (예: 수량*단가=금액)

3.24 v2-approval-step (결재 스테퍼)

설정 타입 기본값 설명
targetTable string "" 결재 대상 테이블
targetRecordIdField string "" 레코드 ID 필드
displayMode string "horizontal" 표시 방향: horizontal/vertical
showComment boolean true 결재 코멘트 표시
showTimestamp boolean true 결재 시간 표시
showDept boolean true 부서 표시
compact boolean false 컴팩트 모드

3.25 v2-bom-tree (BOM 트리)

설정 타입 기본값 설명
detailTable string "bom_detail" BOM 디테일 테이블
foreignKey string "bom_id" BOM 마스터 FK
parentKey string "parent_detail_id" 트리 부모 키 (자기참조)

3.26 v2-bom-item-editor (BOM 편집)

설정 타입 기본값 설명
detailTable string "bom_detail" BOM 디테일 테이블
sourceTable string "item_info" 품목 소스 테이블
foreignKey string "bom_id" BOM 마스터 FK
parentKey string "parent_detail_id" 트리 부모 키
itemCodeField string "item_number" 품목 코드 필드
itemNameField string "item_name" 품목명 필드
itemTypeField string "type" 품목 유형 필드
itemUnitField string "unit" 품목 단위 필드

3.27 v2-category-manager (카테고리 관리)

설정 타입 기본값 설명
tableName string - 대상 테이블
columnName string - 카테고리 컬럼
menuObjid number - 연결 메뉴 OBJID
viewMode string "tree" 뷰 모드: tree/list
showViewModeToggle boolean true 뷰 모드 토글 표시
defaultExpandLevel number 1 기본 트리 펼침 레벨
showInactiveItems boolean false 비활성 항목 표시
leftPanelWidth number 15 좌측 패널 너비

3.28 v2-media (미디어)

설정 타입 기본값 설명
mediaType string "file" 미디어 타입: file/image/video/audio
multiple boolean false 다중 업로드
preview boolean true 미리보기
maxSize number 10 최대 크기(MB)
accept string "*/*" 허용 형식
showFileList boolean true 파일 목록
dragDrop boolean true 드래그앤드롭

3.29 v2-location-swap-selector (위치 교환)

설정 타입 기본값 설명
dataSource.type string "static" 소스: static/table/code
dataSource.tableName string - 장소 테이블
dataSource.valueField string "location_code" 값 필드
dataSource.labelField string "location_name" 표시 필드
dataSource.staticOptions array - 정적 옵션 [{value, label}]
departureField string "departure" 출발지 저장 필드
destinationField string "destination" 도착지 저장 필드
departureLabel string "출발지" 출발지 라벨
destinationLabel string "도착지" 도착지 라벨
showSwapButton boolean true 교환 버튼 표시
variant string "card" UI: card/inline/minimal

3.30 v2-rack-structure (창고 랙)

설정 타입 기본값 설명
maxConditions number 10 최대 조건 수
maxRows number 99 최대 열 수
maxLevels number 20 최대 단 수
codePattern string "{warehouseCode}-{floor}{zone}-{row:02d}-{level}" 위치 코드 패턴
namePattern string "{zone}구역-{row:02d}열-{level}단" 위치 이름 패턴
showTemplates boolean true 템플릿 표시
showPreview boolean true 미리보기
showStatistics boolean true 통계 카드
readonly boolean false 읽기 전용

3.31 v2-process-work-standard (공정 작업기준)

설정 타입 기본값 설명
dataSource.itemTable string "item_info" 품목 테이블
dataSource.routingVersionTable string "item_routing_version" 라우팅 버전 테이블
dataSource.routingDetailTable string "item_routing_detail" 라우팅 디테일 테이블
dataSource.processTable string "process_mng" 공정 테이블
splitRatio number 30 좌우 분할 비율
leftPanelTitle string "품목 및 공정 선택" 좌측 패널 제목
readonly boolean false 읽기 전용
itemListMode string "all" 품목 모드: all/registered

3.32 v2-item-routing (품목 라우팅)

설정 타입 기본값 설명
dataSource.itemTable string "item_info" 품목 테이블
dataSource.routingVersionTable string "item_routing_version" 라우팅 버전 테이블
dataSource.routingDetailTable string "item_routing_detail" 라우팅 디테일 테이블
dataSource.processTable string "process_mng" 공정 테이블
splitRatio number 40 좌우 분할 비율
leftPanelTitle string "품목 목록" 좌측 제목
rightPanelTitle string "공정 순서" 우측 제목
readonly boolean false 읽기 전용
autoSelectFirstVersion boolean true 첫 버전 자동 선택
itemListMode string "all" 품목 모드: all/registered

4. 패턴 의사결정 트리

Q1. 시간축 기반 일정/간트차트? → v2-timeline-scheduler
Q2. 다차원 피벗 분석? → v2-pivot-grid
Q3. 그룹별 접기/펼치기? → v2-table-grouped
Q4. 카드 형태 표시? → v2-card-display
Q5. 마스터-디테일?
    ├ 우측 멀티 탭? → v2-split-panel-layout + additionalTabs
    └ 단일 디테일? → v2-split-panel-layout
Q6. 단일 테이블? → v2-table-search-widget + v2-table-list

5. 관계(relation) 레퍼런스

관계 유형 설정
단순 FK { type:"detail", leftColumn:"id", rightColumn:"{FK}", foreignKey:"{FK}" }
복합 키 { type:"detail", keys:[{ leftColumn:"a", rightColumn:"b" }] }
JOIN { type:"join", leftColumn:"{col}", rightColumn:"{col}" }

6. 엔티티 조인

FK 컬럼에 참조 테이블의 이름을 표시:

table_type_columns: input_type='entity', detail_settings='{"referenceTable":"X","referenceColumn":"id","displayColumn":"name"}'

layout_data columns: { name:"fk_col", isEntityJoin:true, joinInfo:{ sourceTable:"A", sourceColumn:"fk_col", referenceTable:"X", joinAlias:"name" } }