# COMPANY_11 테스트 데이터 정리 가이드

## 📋 개요

메뉴 복사 기능을 재테스트하기 위해 COMPANY_11의 복사된 데이터를 삭제하는 스크립트입니다.

## ⚠️ 중요 사항

- **보존되는 데이터**: 권한 그룹(`authority_master`, `authority_sub_user`), 사용자 정보(`user_info`)
- **삭제되는 데이터**: 메뉴, 화면, 레이아웃, 플로우, 코드
- **안전 모드**: `cleanup_company_11_for_test.sql`은 ROLLBACK으로 테스트만 가능
- **실행 모드**: `cleanup_company_11_execute.sql`은 즉시 COMMIT

## 🚀 실행 방법

### 방법 1: Docker 컨테이너에서 직접 실행 (권장)

```bash
# 1. 테스트 실행 (롤백 - 실제 삭제 안 됨)
cd /Users/kimjuseok/ERP-node
docker exec -i erp-node-db-1 psql -U postgres -d ilshin < db/scripts/cleanup_company_11_for_test.sql

# 2. 실제 삭제 실행
docker exec -i erp-node-db-1 psql -U postgres -d ilshin < db/scripts/cleanup_company_11_execute.sql
```

### 방법 2: DBeaver 또는 pgAdmin에서 실행

1. `db/scripts/cleanup_company_11_for_test.sql` 파일 열기
2. 전체 스크립트 실행 (롤백되어 안전)
3. 결과 확인 후 `cleanup_company_11_execute.sql` 실행

### 방법 3: psql 직접 접속

```bash
# 1. 컨테이너 접속
docker exec -it erp-node-db-1 psql -U postgres -d ilshin

# 2. SQL 복사 붙여넣기
# (cleanup_company_11_execute.sql 내용 복사)
```

## 📊 삭제 대상

| 항목 | 테이블명 | 삭제 여부 |
|------|----------|-----------|
| 메뉴 | `menu_info` | ✅ 삭제 |
| 메뉴 권한 | `rel_menu_auth` | ✅ 삭제 |
| 화면 정의 | `screen_definitions` | ✅ 삭제 |
| 화면 레이아웃 | `screen_layouts` | ✅ 삭제 |
| 화면-메뉴 할당 | `screen_menu_assignments` | ✅ 삭제 |
| 플로우 정의 | `flow_definition` | ✅ 삭제 |
| 플로우 스텝 | `flow_step` | ✅ 삭제 |
| 플로우 연결 | `flow_step_connection` | ✅ 삭제 |
| 코드 카테고리 | `code_category` | ✅ 삭제 |
| 코드 정보 | `code_info` | ✅ 삭제 |
| **권한 그룹** | `authority_master` | ❌ **보존** |
| **권한 멤버** | `authority_sub_user` | ❌ **보존** |
| **사용자** | `user_info` | ❌ **보존** |

## 🔍 삭제 순서 (외래키 제약 고려)

```
1. screen_layouts (화면 레이아웃)
2. screen_menu_assignments (화면-메뉴 할당)
3. screen_definitions (화면 정의)
4. rel_menu_auth (메뉴 권한)
5. menu_info (메뉴)
6. flow_step (플로우 스텝)
7. flow_step_connection (플로우 연결)
8. flow_definition (플로우 정의)
9. code_info (코드 정보)
10. code_category (코드 카테고리)
```

## ✅ 실행 후 확인

스크립트 실행 후 다음과 같이 표시됩니다:

```
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
✅ 삭제 완료!

남은 데이터:
  - 메뉴: 0 개
  - 화면: 0 개
  - 권한 그룹: 1 개 (보존됨)
  - 사용자: 1 개 (보존됨)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
✨ 정리 완료! 메뉴 복사 테스트 준비됨
```

## 🧪 테스트 시나리오

1. **데이터 정리**
   ```bash
   docker exec -i erp-node-db-1 psql -U postgres -d ilshin < db/scripts/cleanup_company_11_execute.sql
   ```

2. **메뉴 복사 실행**
   - 프론트엔드에서 원본 메뉴 선택
   - "복사" 버튼 클릭
   - 대상 회사: COMPANY_11 선택
   - 복사 실행

3. **복사 결과 확인**
   - COMPANY_11 사용자(copy)로 로그인
   - 사용자 메뉴에 복사된 메뉴 표시 확인
   - 버튼 클릭 시 모달 화면 정상 열림 확인
   - 플로우 기능 정상 작동 확인

## 🔄 재테스트

재테스트가 필요하면 다시 정리 스크립트를 실행하세요:

```bash
# 빠른 재테스트
docker exec -i erp-node-db-1 psql -U postgres -d ilshin < db/scripts/cleanup_company_11_execute.sql
```

## 📝 참고

- **백업**: 중요한 데이터가 있다면 먼저 백업하세요
- **권한**: 사용자 `copy`와 권한 그룹 `복사권한`은 보존됩니다
- **로그**: 백엔드 로그에서 복사 진행 상황을 실시간으로 확인할 수 있습니다

