108 lines
2.8 KiB
Markdown
108 lines
2.8 KiB
Markdown
# column_labels → table_type_columns 마이그레이션 완료
|
|
|
|
**작업일**: 2026-01-26
|
|
|
|
---
|
|
|
|
## 개요
|
|
|
|
`column_labels` 테이블의 데이터를 `table_type_columns`로 통합하여 멀티테넌시를 지원하고 데이터 중복을 제거함.
|
|
|
|
---
|
|
|
|
## 변경 사항
|
|
|
|
### 1. 스키마 확장
|
|
|
|
`table_type_columns`에 누락된 컬럼 추가:
|
|
|
|
| 컬럼명 | 타입 | 설명 |
|
|
|--------|------|------|
|
|
| column_label | VARCHAR(200) | 컬럼 라벨 |
|
|
| reference_table | VARCHAR(100) | 참조 테이블 |
|
|
| reference_column | VARCHAR(100) | 참조 컬럼 |
|
|
| display_column | VARCHAR(100) | 표시 컬럼 |
|
|
| code_category | VARCHAR(100) | 코드 카테고리 |
|
|
| code_value | VARCHAR(100) | 코드 값 |
|
|
| description | TEXT | 설명 |
|
|
| is_visible | BOOLEAN | 표시 여부 |
|
|
| web_type | VARCHAR(50) | 웹 타입 (레거시) |
|
|
|
|
### 2. 데이터 마이그레이션
|
|
|
|
```
|
|
column_labels (company_code 없음)
|
|
↓
|
|
table_type_columns (company_code = '*')
|
|
```
|
|
|
|
**통합 기준**:
|
|
- `column_labels` 데이터 → `company_code = '*'` (공통 설정)
|
|
- 기존 회사별 설정 → **유지**
|
|
- 회사별 빈 값 → 공통(*)에서 복사 (COALESCE)
|
|
|
|
### 3. 코드 수정
|
|
|
|
총 **12개 파일** 수정:
|
|
|
|
| 파일 | 주요 변경 |
|
|
|------|----------|
|
|
| tableManagementService.ts | SELECT/INSERT → table_type_columns |
|
|
| screenManagementService.ts | JOIN column_labels → table_type_columns |
|
|
| entityJoinService.ts | 엔티티 조인 쿼리 변경 |
|
|
| ddlExecutionService.ts | DDL 시 column_labels 제거 |
|
|
| screenGroupController.ts | 화면 그룹 쿼리 변경 |
|
|
| tableManagementController.ts | 컬럼 관리 쿼리 변경 |
|
|
| adminController.ts | 스키마 조회 변경 |
|
|
| flowController.ts | 플로우 컬럼 조회 변경 |
|
|
| entityReferenceController.ts | 엔티티 참조 변경 |
|
|
| masterDetailExcelService.ts | 엑셀 처리 변경 |
|
|
| categoryTreeService.ts | 카테고리 트리 변경 |
|
|
| dataService.ts | 데이터 서비스 변경 |
|
|
|
|
---
|
|
|
|
## 백업
|
|
|
|
```
|
|
column_labels_backup_20260126 -- 원본 백업
|
|
table_type_columns_backup_20260126 -- 마이그레이션 전 백업
|
|
```
|
|
|
|
---
|
|
|
|
## 남은 작업
|
|
|
|
- [ ] 기능 테스트 (엔티티 조인, 화면 설정, 컬럼 라벨)
|
|
- [ ] 1-2주 모니터링
|
|
- [ ] `column_labels` 테이블 삭제
|
|
- [ ] `ddl.ts`에서 systemTables 배열 정리
|
|
|
|
---
|
|
|
|
## 롤백 방법
|
|
|
|
문제 발생 시:
|
|
|
|
```sql
|
|
-- 1. 백업에서 복원
|
|
DROP TABLE IF EXISTS column_labels;
|
|
CREATE TABLE column_labels AS SELECT * FROM column_labels_backup_20260126;
|
|
|
|
-- 2. table_type_columns 복원
|
|
DROP TABLE IF EXISTS table_type_columns;
|
|
CREATE TABLE table_type_columns AS SELECT * FROM table_type_columns_backup_20260126;
|
|
```
|
|
|
|
+ Git에서 코드 롤백 필요
|
|
|
|
---
|
|
|
|
## 결과
|
|
|
|
| 항목 | Before | After |
|
|
|------|--------|-------|
|
|
| 테이블 수 | 2개 | 1개 |
|
|
| 멀티테넌시 | 부분 지원 | 완전 지원 |
|
|
| 데이터 중복 | 있음 | 없음 |
|