486 lines
21 KiB
Markdown
486 lines
21 KiB
Markdown
# WACE ERP 화면 구성 시스템 전체 분석
|
|
|
|
> **최종 업데이트**: 2026-03-13
|
|
> **용도**: LLM 챗봇 / AI 에이전트가 화면 개발 요청을 받았을 때 참조하는 시스템 구조 레퍼런스
|
|
> **핵심 규칙**: 사용자 업무 화면은 React 코드(.tsx)로 직접 만들지 않는다. DB 등록(screen_definitions + screen_layouts_v2 + menu_info)으로 구현한다.
|
|
|
|
---
|
|
|
|
## 1. 시스템 아키텍처 요약
|
|
|
|
### 1.1 화면 렌더링 파이프라인
|
|
|
|
```
|
|
[DB] screen_definitions (화면 정의)
|
|
+ screen_layouts_v2 (레이아웃 JSON)
|
|
+ menu_info (메뉴 등록)
|
|
│
|
|
▼
|
|
[Backend API] GET /api/screens/:screenId
|
|
│
|
|
▼
|
|
[Frontend] /screens/[screenId]/page.tsx
|
|
│
|
|
▼
|
|
[Converter] layoutV2Converter.ts → V2 JSON을 Legacy 포맷으로 변환
|
|
│
|
|
▼
|
|
[Renderer] ResponsiveGridRenderer → RealtimePreview → DynamicComponentRenderer
|
|
│
|
|
▼
|
|
[Registry] ComponentRegistry.getComponent(componentType) → 실제 React 컴포넌트 렌더링
|
|
```
|
|
|
|
### 1.2 화면 유형 분류
|
|
|
|
| 구분 | 구현 방식 | 코드 위치 | 예시 |
|
|
|------|----------|----------|------|
|
|
| **사용자 업무 화면** | DB 등록 (SQL INSERT) | screen_definitions + screen_layouts_v2 | 수주관리, 품목정보, BOM관리 |
|
|
| **관리자 메뉴** | React 코드 직접 작성 | frontend/app/(main)/admin/*/page.tsx | 사용자관리, 권한관리, 시스템설정 |
|
|
|
|
**절대 규칙**: 사용자 업무 화면(생산, 영업, 구매, 물류, 품질 등)은 React 하드코딩 금지. 반드시 DB 등록 방식으로 구현.
|
|
|
|
---
|
|
|
|
## 2. V2 컴포넌트 전체 목록 (32개)
|
|
|
|
> 모든 컴포넌트는 `v2-` 접두사를 사용한다. 접두사 없는 컴포넌트는 레거시이므로 사용 금지.
|
|
|
|
### 2.1 입력 컴포넌트 (9개)
|
|
|
|
| ID | 용도 | 핵심 설정 |
|
|
|----|------|----------|
|
|
| `v2-input` | 텍스트, 숫자, 비밀번호, textarea, 슬라이더, 컬러, 버튼 | inputType, format(email/tel/url/currency/biz_no), required, readonly, maxLength |
|
|
| `v2-select` | 드롭다운, 콤보박스, 라디오, 체크박스, 태그, 토글, 스왑 | mode, source(static/code/db/api/entity/category/distinct/select), searchable, multiple, cascading |
|
|
| `v2-date` | 날짜, 시간, 날짜시간, 날짜범위, 월, 연도 | dateType(date/time/datetime), format, range, minDate, maxDate |
|
|
| `v2-file-upload` | 파일/이미지 업로드, 다중 업로드 | accept, maxSize, multiple |
|
|
| `v2-media` | 이미지, 비디오, 오디오 표시 | mediaType |
|
|
| `v2-location-swap-selector` | 출발지/도착지 선택 및 교환 | - |
|
|
| `v2-rack-structure` | 창고 랙 위치 일괄 생성 | columns, rows |
|
|
| `v2-process-work-standard` | 품목별 공정 작업기준 관리 (Pre/In/Post-Work) | - |
|
|
| `v2-item-routing` | 품목별 라우팅 버전 및 공정 순서 관리 (3단계 계층) | - |
|
|
|
|
### 2.2 표시/데이터 컴포넌트 (10개)
|
|
|
|
| ID | 용도 | 핵심 설정 |
|
|
|----|------|----------|
|
|
| `v2-table-list` | 데이터 테이블 (조회/편집, 페이지네이션, 정렬, 필터) | selectedTable, columns, pagination, displayMode(table/card), checkbox, linkedFilters |
|
|
| `v2-table-grouped` | 그룹화 테이블 (접기/펼치기, 그룹별 집계) | groupConfig(groupByColumn, summary), v2-table-list 기반 확장 |
|
|
| `v2-table-search-widget` | 테이블 검색/필터/그룹 바 | autoSelectFirstTable, showTableSelector |
|
|
| `v2-pivot-grid` | 다차원 피벗 분석 (행/열/데이터/필터 영역) | fields(area, summaryType, groupInterval), dataSource |
|
|
| `v2-text-display` | 라벨, 제목, 설명 텍스트 표시 | fontSize, fontWeight, color, textAlign |
|
|
| `v2-card-display` | 테이블 데이터를 카드 형태로 표시 | cardsPerRow, columnMapping(title/subtitle/image/status), cardStyle |
|
|
| `v2-aggregation-widget` | 합계, 평균, 개수, 최대, 최소 집계 카드 | items, filters, layout |
|
|
| `v2-status-count` | 상태별 건수 카드 표시 | statusField, countField |
|
|
| `v2-numbering-rule` | 자동 코드/번호 채번 (접두사+날짜+순번) | rule, prefix, format |
|
|
| `v2-category-manager` | 트리 기반 카테고리 관리 (3단계 계층) | - |
|
|
|
|
### 2.3 레이아웃 컴포넌트 (8개)
|
|
|
|
| ID | 용도 | 핵심 설정 |
|
|
|----|------|----------|
|
|
| `v2-split-panel-layout` | 마스터-디테일 좌우 분할 | splitRatio, leftPanel(displayMode/tableName), rightPanel(relation/foreignKey), additionalTabs |
|
|
| `v2-tabs-widget` | 탭 전환, 탭 내 컴포넌트 배치 | tabs(id/label/components), defaultTab, orientation |
|
|
| `v2-section-card` | 제목+테두리가 있는 그룹화 컨테이너 | title, collapsible |
|
|
| `v2-section-paper` | 배경색 기반 미니멀 그룹화 컨테이너 | backgroundColor, padding |
|
|
| `v2-divider-line` | 영역 구분선 | orientation, thickness |
|
|
| `v2-split-line` | 캔버스 좌우 분할용 드래그 가능 세로선 | - |
|
|
| `v2-repeat-container` | 데이터 수만큼 내부 컴포넌트 반복 렌더링 | dataSourceType, layout, gridColumns |
|
|
| `v2-repeater` | 인라인/모달/버튼 모드 반복 데이터 관리 | mode(inline/modal/button) |
|
|
|
|
### 2.4 특수/비즈니스 컴포넌트 (5개)
|
|
|
|
| ID | 용도 | 핵심 설정 |
|
|
|----|------|----------|
|
|
| `v2-button-primary` | 저장/삭제/조회 등 액션 버튼 | text, actionType, variant, webTypeConfig.dataflowConfig |
|
|
| `v2-timeline-scheduler` | 간트차트형 일정/계획 시각화 (드래그/리사이즈) | selectedTable, resourceTable, fieldMapping, zoomLevel, editable |
|
|
| `v2-approval-step` | 결재 단계 스테퍼 시각화 | - |
|
|
| `v2-bom-tree` | BOM 계층 트리 표시 (정전개/역전개) | - |
|
|
| `v2-bom-item-editor` | BOM 하위품목 트리 편집 | - |
|
|
|
|
---
|
|
|
|
## 3. 화면 UI 패턴 분류 (7가지)
|
|
|
|
> AI가 화면 개발 요청을 받았을 때, 아래 패턴 중 해당하는 것을 선택하여 구현한다.
|
|
|
|
### 패턴 A: 기본 마스터 (검색 + 테이블)
|
|
|
|
**적용 비율**: 약 50% (가장 흔함)
|
|
**적용 화면**: 코드관리, 부서정보, 창고정보, 검사기준, 불량관리, 공급업체관리 등
|
|
|
|
```
|
|
┌─────────────────────────────────────────────────┐
|
|
│ v2-table-search-widget │
|
|
│ [검색필드1] [검색필드2] [조회] [엑셀] │
|
|
├─────────────────────────────────────────────────┤
|
|
│ v2-table-list │
|
|
│ 제목 [신규] [삭제] │
|
|
│ ─────────────────────────────────────────────── │
|
|
│ □ | 코드 | 이름 | 상태 | 등록일 │
|
|
└─────────────────────────────────────────────────┘
|
|
```
|
|
|
|
**필수 컴포넌트**: `v2-table-search-widget` (1개) + `v2-table-list` (1개)
|
|
|
|
### 패턴 B: 마스터-디테일 (좌우 분할)
|
|
|
|
**적용 비율**: 약 25%
|
|
**적용 화면**: 공정관리, 수주관리, 견적관리, 품목라우팅 등
|
|
|
|
```
|
|
┌──────────────────┬──────────────────────────────┐
|
|
│ 마스터 테이블 │ 디테일 테이블/폼 │
|
|
│ (좌측 패널) │ (우측 패널) │
|
|
│ □ A001 항목1 │ [상세 정보 테이블] │
|
|
│ □ A002 항목2 ← │ │
|
|
└──────────────────┴──────────────────────────────┘
|
|
v2-split-panel-layout
|
|
```
|
|
|
|
**필수 컴포넌트**: `v2-split-panel-layout` (1개)
|
|
|
|
### 패턴 C: 마스터-디테일 + 탭
|
|
|
|
**적용 비율**: 약 10%
|
|
**적용 화면**: 거래처관리, 설비정보, 품목정보 등
|
|
|
|
```
|
|
┌──────────────────┬──────────────────────────────┐
|
|
│ 마스터 테이블 │ [기본] [이력] [첨부] │
|
|
│ │ ┌────────────────────────┐ │
|
|
│ □ A001 거래처1 │ │ 탭별 컨텐츠 │ │
|
|
│ □ A002 거래처2 ← │ └────────────────────────┘ │
|
|
└──────────────────┴──────────────────────────────┘
|
|
```
|
|
|
|
**필수 컴포넌트**: `v2-split-panel-layout` (1개, rightPanel에 additionalTabs 설정)
|
|
|
|
### 패턴 D: 카드 뷰
|
|
|
|
**적용 비율**: 약 5%
|
|
**적용 화면**: 설비정보, 대시보드, 상품 카탈로그 등
|
|
|
|
```
|
|
┌─────────────────────────────────────────────────┐
|
|
│ v2-table-search-widget │
|
|
├─────────────────────────────────────────────────┤
|
|
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ │
|
|
│ │ [이미지]│ │ [이미지]│ │ [이미지]│ │
|
|
│ │ 제목 │ │ 제목 │ │ 제목 │ │
|
|
│ │ 설명 │ │ 설명 │ │ 설명 │ │
|
|
│ └─────────┘ └─────────┘ └─────────┘ │
|
|
│ v2-card-display │
|
|
└─────────────────────────────────────────────────┘
|
|
```
|
|
|
|
**필수 컴포넌트**: `v2-card-display` (1개) + `v2-table-search-widget` (선택)
|
|
|
|
### 패턴 E: 피벗 분석
|
|
|
|
**적용 비율**: 약 3%
|
|
**적용 화면**: 매출분석, 재고현황, 생산실적 분석 등
|
|
|
|
**필수 컴포넌트**: `v2-pivot-grid` (1개)
|
|
|
|
### 패턴 F: 그룹화 테이블
|
|
|
|
**적용 비율**: 약 5%
|
|
**적용 화면**: 품목정보(카테고리별), 입출고관리(구분별), 작업지시(공정별) 등
|
|
|
|
```
|
|
┌─────────────────────────────────────────────────┐
|
|
│ [전체 펼치기] [전체 접기] │
|
|
├─────────────────────────────────────────────────┤
|
|
│ ▼ □ 그룹A 수량: 150 3건 │
|
|
│ ├─ □ 항목1 50개 │
|
|
│ ├─ □ 항목2 50개 │
|
|
│ └─ □ 항목3 50개 │
|
|
│ ► □ 그룹B 수량: 200 2건 │
|
|
└─────────────────────────────────────────────────┘
|
|
```
|
|
|
|
**필수 컴포넌트**: `v2-table-grouped` (1개)
|
|
|
|
### 패턴 G: 타임라인/간트차트
|
|
|
|
**적용 비율**: 약 2%
|
|
**적용 화면**: 생산계획관리, 설비가동현황 등
|
|
|
|
```
|
|
┌────────────┬─────────────────────────────────────┐
|
|
│ │ 15(수) │ 16(목) │ 17(금) │ 18(토) │
|
|
├────────────┼─────────────────────────────────────┤
|
|
│ 설비A │ ████████████████ │
|
|
│ 설비B │ █████████████████████ │
|
|
│ 설비C │ ████████████████ │
|
|
└────────────┴─────────────────────────────────────┘
|
|
```
|
|
|
|
**필수 컴포넌트**: `v2-timeline-scheduler` (1개)
|
|
|
|
---
|
|
|
|
## 4. 패턴 판단 의사결정 트리
|
|
|
|
> AI가 화면 요청을 받았을 때 이 트리를 따라 패턴을 결정한다.
|
|
|
|
```
|
|
Q1. 시간축 기반 일정/간트차트가 필요한가?
|
|
├─ YES → 패턴 G (타임라인)
|
|
└─ NO ↓
|
|
|
|
Q2. 다차원 집계/피벗 분석이 필요한가?
|
|
├─ YES → 패턴 E (피벗)
|
|
└─ NO ↓
|
|
|
|
Q3. 데이터를 그룹별로 묶어서 접기/펼치기가 필요한가?
|
|
├─ YES → 패턴 F (그룹화 테이블)
|
|
└─ NO ↓
|
|
|
|
Q4. 이미지+정보를 카드 형태로 표시하는가?
|
|
├─ YES → 패턴 D (카드 뷰)
|
|
└─ NO ↓
|
|
|
|
Q5. 마스터 테이블 선택 시 연관 디테일이 필요한가?
|
|
├─ YES → Q5-1. 디테일에 탭이 필요한가?
|
|
│ ├─ YES → 패턴 C (마스터-디테일+탭)
|
|
│ └─ NO → 패턴 B (마스터-디테일)
|
|
└─ NO → 패턴 A (기본 마스터)
|
|
```
|
|
|
|
---
|
|
|
|
## 5. 화면 구현 불가능/제한 사항
|
|
|
|
### 5.1 현재 불가능 (별도 React 개발 필요)
|
|
|
|
| 기능 | 상태 | 대안 |
|
|
|------|------|------|
|
|
| 칸반 보드 (드래그앤드롭) | 미지원 | 별도 React 컴포넌트 |
|
|
| 모바일 네이티브 앱 스타일 | 미지원 | 별도 개발 |
|
|
| 복잡한 차트 (line, bar, pie) | 미지원 | 외부 라이브러리 연동 |
|
|
|
|
### 5.2 이전에 불가능했으나 현재 지원되는 기능
|
|
|
|
| 기능 | 지원 컴포넌트 | 추가 시점 |
|
|
|------|-------------|----------|
|
|
| 그룹화 테이블 | `v2-table-grouped` | 2026-01 |
|
|
| 타임라인/간트차트 | `v2-timeline-scheduler` | 2026-01 |
|
|
| BOM 트리 (정전개/역전개) | `v2-bom-tree` | 2026-02 |
|
|
| BOM 하위품목 편집 | `v2-bom-item-editor` | 2026-02 |
|
|
| 결재 스테퍼 | `v2-approval-step` | 2026-02 |
|
|
|
|
### 5.3 권장하지 않는 조합
|
|
|
|
| 조합 | 이유 |
|
|
|------|------|
|
|
| 3단계 이상 중첩 분할 | 화면 복잡도 증가, 성능 저하 |
|
|
| 탭 안에 탭 | 사용성 저하 |
|
|
| 한 화면에 3개 이상 테이블 | 데이터 로딩 성능 |
|
|
| 피벗 + 상세 테이블 동시 | 데이터 과부하 |
|
|
|
|
---
|
|
|
|
## 6. 화면별 구현 현황 (메뉴 분류)
|
|
|
|
### 6.1 기준정보
|
|
|
|
| 화면명 | 패턴 | 구현 가능 | 비고 |
|
|
|--------|------|----------|------|
|
|
| 회사정보 | A | 완전 지원 | |
|
|
| 부서정보 | A | 완전 지원 | |
|
|
| 품목정보 | F 또는 A | 완전 지원 | 카테고리별 그룹화 시 F |
|
|
| BOM관리 | B + v2-bom-tree | 완전 지원 | v2-bom-tree로 트리 구현 |
|
|
| 공정정보관리 | B | 완전 지원 | |
|
|
| 공정작업기준 | A | 완전 지원 | v2-process-work-standard 활용 가능 |
|
|
| 품목라우팅 | B | 완전 지원 | v2-item-routing 활용 가능 |
|
|
|
|
### 6.2 영업관리
|
|
|
|
| 화면명 | 패턴 | 구현 가능 | 비고 |
|
|
|--------|------|----------|------|
|
|
| 수주관리 | B | 완전 지원 | |
|
|
| 견적관리 | B | 완전 지원 | |
|
|
| 거래처관리 | C | 완전 지원 | 탭(기본/이력/첨부) |
|
|
| 판매품목정보 | A | 완전 지원 | |
|
|
| 출하계획관리 | A | 완전 지원 | |
|
|
|
|
### 6.3 생산관리
|
|
|
|
| 화면명 | 패턴 | 구현 가능 | 비고 |
|
|
|--------|------|----------|------|
|
|
| 생산계획관리 | G | 완전 지원 | v2-timeline-scheduler |
|
|
| 생산관리 | A | 완전 지원 | |
|
|
| 생산실적관리 | A | 완전 지원 | |
|
|
| 작업지시 | F | 완전 지원 | 공정별 그룹화 |
|
|
| 공정관리 | B | 완전 지원 | |
|
|
|
|
### 6.4 구매관리
|
|
|
|
| 화면명 | 패턴 | 구현 가능 | 비고 |
|
|
|--------|------|----------|------|
|
|
| 발주관리 | A | 완전 지원 | |
|
|
| 공급업체관리 | A | 완전 지원 | |
|
|
| 구매입고 | A | 완전 지원 | |
|
|
|
|
### 6.5 설비관리
|
|
|
|
| 화면명 | 패턴 | 구현 가능 | 비고 |
|
|
|--------|------|----------|------|
|
|
| 설비정보 | C 또는 D | 완전 지원 | 카드뷰 또는 탭 |
|
|
|
|
### 6.6 물류관리
|
|
|
|
| 화면명 | 패턴 | 구현 가능 | 비고 |
|
|
|--------|------|----------|------|
|
|
| 창고정보관리 | A | 완전 지원 | |
|
|
| 입출고관리 | F | 완전 지원 | 구분별 그룹화 |
|
|
| 재고현황 | A 또는 E | 완전 지원 | 피벗 분석도 가능 |
|
|
|
|
### 6.7 품질관리
|
|
|
|
| 화면명 | 패턴 | 구현 가능 | 비고 |
|
|
|--------|------|----------|------|
|
|
| 검사기준 | A | 완전 지원 | |
|
|
| 검사정보관리 | C | 완전 지원 | 탭(수입검사/공정검사/출하검사) |
|
|
| 검사장비관리 | A | 완전 지원 | |
|
|
| 불량관리 | A | 완전 지원 | |
|
|
| 클레임관리 | A | 완전 지원 | |
|
|
|
|
---
|
|
|
|
## 7. 컴포넌트 커버리지 요약
|
|
|
|
| 항목 | 수치 |
|
|
|------|------|
|
|
| 전체 분석 대상 화면 | 26개 |
|
|
| V2 컴포넌트로 구현 가능 | **26개 (100%)** |
|
|
| 등록된 V2 컴포넌트 수 | 32개 |
|
|
| 화면 UI 패턴 수 | 7가지 (A~G) |
|
|
|
|
**이전 대비 변경 사항**:
|
|
- BOM 트리 지원 추가 (v2-bom-tree) → BOM관리 완전 지원
|
|
- 그룹화 테이블 지원 추가 (v2-table-grouped) → 품목정보, 입출고 등 완전 지원
|
|
- 타임라인 지원 추가 (v2-timeline-scheduler) → 생산계획관리 완전 지원
|
|
- 결재 스테퍼 추가 (v2-approval-step) → 결재 프로세스 시각화 가능
|
|
- 전체 커버리지: 65% → **100%** 달성
|
|
|
|
---
|
|
|
|
## 8. UI vs 비즈니스 로직 분리 구조
|
|
|
|
```
|
|
┌───────────────────────────────┬───────────────────────────────────┐
|
|
│ UI 레이아웃 │ 제어관리 (비즈니스 로직) │
|
|
│ screen_layouts_v2 (JSON) │ dataflow_diagrams (JSONB) │
|
|
├───────────────────────────────┼───────────────────────────────────┤
|
|
│ - 컴포넌트 배치/크기/위치 │ - 버튼 클릭 시 액션 (INSERT 등) │
|
|
│ - 검색 필드 구성 │ - 조건부 실행 │
|
|
│ - 테이블 컬럼 표시/숨김 │ - 다중 행 일괄 처리 │
|
|
│ - 카드/탭/분할 레이아웃 │ - 테이블 간 데이터 이동 │
|
|
│ - 페이지네이션/정렬 설정 │ - 외부 시스템 호출 │
|
|
└───────────────────────────────┴───────────────────────────────────┘
|
|
```
|
|
|
|
**핵심**: V2 컴포넌트는 UI만 담당한다. 버튼 클릭 시 INSERT/UPDATE/DELETE 같은 비즈니스 로직은 `dataflow_diagrams` 테이블에서 별도 설정한다.
|
|
|
|
### 비즈니스 로직 실행 흐름
|
|
|
|
```
|
|
v2-button-primary 클릭
|
|
→ webTypeConfig.dataflowConfig 확인
|
|
→ ImprovedButtonActionExecutor 실행
|
|
1. Before 제어 실행 (조건 체크)
|
|
2. Main 액션 실행 (save/delete/update)
|
|
3. After 제어 실행 (후처리)
|
|
```
|
|
|
|
---
|
|
|
|
## 9. 화면 개발 순서 (AI 에이전트용)
|
|
|
|
```
|
|
Step 1: DB 테이블 생성
|
|
└─ 모든 컬럼 VARCHAR(500), 기본 5개 컬럼 필수 (id, created_date, updated_date, writer, company_code)
|
|
└─ table_labels, table_type_columns, column_labels 메타데이터 등록
|
|
|
|
Step 2: screen_definitions INSERT
|
|
└─ screen_code = '{company_code}_{순번}'
|
|
└─ table_name = 메인 테이블명
|
|
|
|
Step 3: screen_layouts_v2 INSERT
|
|
└─ layout_data = V2 레이아웃 JSON (version: "2.0", components 배열)
|
|
└─ 패턴(A~G)에 맞는 컴포넌트 배치
|
|
|
|
Step 4: dataflow_diagrams INSERT (비즈니스 로직이 필요한 경우)
|
|
└─ 버튼별 액션 정의 (INSERT/UPDATE/DELETE)
|
|
└─ 조건, 필드 매핑 설정
|
|
|
|
Step 5: menu_info INSERT
|
|
└─ menu_url = '/screen/{screen_code}'
|
|
└─ 적절한 parent_id로 메뉴 트리에 배치
|
|
```
|
|
|
|
---
|
|
|
|
## 10. DB 테이블 구조 레퍼런스
|
|
|
|
### screen_definitions
|
|
|
|
| 컬럼 | 타입 | 설명 |
|
|
|------|------|------|
|
|
| screen_id | integer PK (시퀀스) | 화면 고유 ID |
|
|
| screen_name | varchar(100) | 화면명 |
|
|
| screen_code | varchar(50) UNIQUE | 화면 코드 (`{company_code}_{순번}`) |
|
|
| table_name | varchar(100) | 기본 테이블명 |
|
|
| company_code | varchar(50) | 회사 코드 |
|
|
| description | text | 설명 |
|
|
| is_active | char(1) | Y/N/D |
|
|
|
|
### screen_layouts_v2
|
|
|
|
| 컬럼 | 타입 | 설명 |
|
|
|------|------|------|
|
|
| layout_id | integer PK | 레이아웃 ID |
|
|
| screen_id | integer FK | 화면 ID |
|
|
| company_code | varchar(20) | 회사 코드 |
|
|
| layer_id | integer | 레이어 ID (1=기본) |
|
|
| layout_data | jsonb | 전체 레이아웃 JSON |
|
|
|
|
### layout_data JSON 구조
|
|
|
|
```json
|
|
{
|
|
"version": "2.0",
|
|
"components": [
|
|
{
|
|
"id": "comp_xxx",
|
|
"url": "@/lib/registry/components/v2-table-list",
|
|
"position": { "x": 0, "y": 150, "z": 1 },
|
|
"size": { "width": 1920, "height": 600 },
|
|
"displayOrder": 0,
|
|
"overrides": {
|
|
"label": "품목 목록",
|
|
"tableName": "item_info",
|
|
"columns": [
|
|
{ "columnName": "item_code", "displayName": "품목코드", "visible": true }
|
|
],
|
|
"pagination": { "enabled": true, "pageSize": 20 }
|
|
}
|
|
}
|
|
],
|
|
"gridSettings": { "columns": 12, "gap": 16, "padding": 16 },
|
|
"screenResolution": { "width": 1920, "height": 1080 }
|
|
}
|
|
```
|
|
|
|
### menu_info (주요 컬럼)
|
|
|
|
| 컬럼 | 설명 |
|
|
|------|------|
|
|
| objid / menu_id | 메뉴 PK |
|
|
| screen_id | 연결된 화면 ID |
|
|
| menu_url | 메뉴 URL (`/screen/{screen_code}`) |
|
|
| company_code | 회사 코드 |
|