ERP-node/frontend/lib/registry/components/rack-structure/README.md

149 lines
4.8 KiB
Markdown

# 렉 구조 설정 컴포넌트 (Rack Structure Config)
창고 렉 위치를 열 범위와 단 수로 일괄 생성하는 컴포넌트입니다.
## 핵심 개념
이 컴포넌트는 **상위 폼의 필드 값을 읽어서** 위치 코드를 생성합니다.
### 작동 방식
1. 사용자가 화면관리에서 테이블 컬럼(창고코드, 층, 구역 등)을 드래그하여 폼에 배치
2. 렉 구조 컴포넌트 설정에서 **필드 매핑** 설정 (어떤 폼 필드가 창고/층/구역인지)
3. 런타임에 사용자가 폼 필드에 값을 입력하면, 렉 구조 컴포넌트가 해당 값을 읽어서 사용
## 기능
### 1. 렉 라인 구조 설정
- 조건 추가/삭제
- 각 조건: 열 범위(시작~종료) + 단 수
- 자동 위치 수 계산 (예: 1열~3열 x 3단 = 9개)
- 템플릿 저장/불러오기
### 2. 등록 미리보기
- 통계 카드 (총 위치, 열 수, 최대 단)
- 미리보기 생성 버튼
- 생성될 위치 목록 테이블
## 설정 방법
### 1. 화면관리에서 배치
1. 상위에 테이블 컬럼들을 배치 (창고코드, 층, 구역, 위치유형, 사용여부)
2. 컴포넌트 팔레트에서 "렉 구조 설정" 선택
3. 캔버스에 드래그하여 배치
### 2. 필드 매핑 설정
설정 패널에서 상위 폼의 어떤 필드를 사용할지 매핑합니다:
| 매핑 항목 | 설명 |
| -------------- | ------------------------------------- |
| 창고 코드 필드 | 위치 코드 생성에 사용할 창고 코드 |
| 층 필드 | 위치 코드 생성에 사용할 층 |
| 구역 필드 | 위치 코드 생성에 사용할 구역 |
| 위치 유형 필드 | 미리보기 테이블에 표시할 위치 유형 |
| 사용 여부 필드 | 미리보기 테이블에 표시할 사용 여부 |
### 예시
상위 폼에 다음 필드가 배치되어 있다면:
- `창고코드(조인)` → 필드명: `warehouse_code`
- `층` → 필드명: `floor`
- `구역` → 필드명: `zone`
설정 패널에서:
- 창고 코드 필드: `warehouse_code` 선택
- 층 필드: `floor` 선택
- 구역 필드: `zone` 선택
## 위치 코드 생성 규칙
기본 패턴: `{창고코드}-{층}{구역}-{열:2자리}-{단}`
예시 (창고: WH001, 층: 1, 구역: A):
- WH001-1A-01-1 (01열, 1단)
- WH001-1A-01-2 (01열, 2단)
- WH001-1A-02-1 (02열, 1단)
## 설정 옵션
| 옵션 | 타입 | 기본값 | 설명 |
| -------------- | ------- | ------ | ---------------- |
| maxConditions | number | 10 | 최대 조건 수 |
| maxRows | number | 99 | 최대 열 수 |
| maxLevels | number | 20 | 최대 단 수 |
| showTemplates | boolean | true | 템플릿 기능 표시 |
| showPreview | boolean | true | 미리보기 표시 |
| showStatistics | boolean | true | 통계 카드 표시 |
| readonly | boolean | false | 읽기 전용 |
## 출력 데이터
`onChange` 콜백으로 생성된 위치 데이터 배열을 반환합니다:
```typescript
interface GeneratedLocation {
rowNum: number; // 열 번호
levelNum: number; // 단 번호
locationCode: string; // 위치 코드
locationName: string; // 위치명
locationType?: string; // 위치 유형
status?: string; // 사용 여부
warehouseCode?: string; // 창고 코드 (매핑된 값)
floor?: string; // 층 (매핑된 값)
zone?: string; // 구역 (매핑된 값)
}
```
## 연동 테이블
`warehouse_location` 테이블과 연동됩니다:
| 컬럼 | 설명 |
| ------------- | --------- |
| warehouse_id | 창고 ID |
| floor | 층 |
| zone | 구역 |
| row_num | 열 번호 |
| level_num | 단 번호 |
| location_code | 위치 코드 |
| location_name | 위치명 |
| location_type | 위치 유형 |
| status | 사용 여부 |
## 예시 시나리오
### 시나리오: A구역에 1~3열은 3단, 4~6열은 5단 렉 생성
1. **상위 폼에서 기본 정보 입력**
- 창고: 제1창고 (WH001) - 드래그해서 배치한 필드
- 층: 1 - 드래그해서 배치한 필드
- 구역: A - 드래그해서 배치한 필드
- 위치 유형: 선반 - 드래그해서 배치한 필드
- 사용 여부: 사용 - 드래그해서 배치한 필드
2. **렉 구조 컴포넌트에서 조건 추가**
- 조건 1: 1~3열, 3단 → 9개
- 조건 2: 4~6열, 5단 → 15개
3. **미리보기 생성**
- 총 위치: 24개
- 열 수: 6개
- 최대 단: 5단
4. **저장**
- 24개의 위치 데이터가 warehouse_location 테이블에 저장됨
## 필수 필드 검증
미리보기 생성 시 다음 필드가 입력되어 있어야 합니다:
- 창고 코드
-
- 구역
필드가 비어있으면 경고 메시지가 표시됩니다.