# 마이그레이션 1003 실행 가이드

## ❌ 현재 에러
```
column "source_menu_objid" does not exist
```

**원인**: `menu_info` 테이블에 `source_menu_objid` 컬럼이 아직 추가되지 않음

## ✅ 해결 방법

### 방법 1: psql 직접 실행 (권장)

```bash
# 1. PostgreSQL 접속 정보 확인
# - Host: localhost (또는 실제 DB 호스트)
# - Port: 5432 (기본값)
# - Database: ilshin
# - User: postgres

# 2. 마이그레이션 실행
cd /Users/kimjuseok/ERP-node
psql -h localhost -U postgres -d ilshin -f db/migrations/1003_add_source_menu_objid_to_menu_info.sql

# 또는 대화형으로
psql -h localhost -U postgres -d ilshin
# 그 다음 파일 내용 붙여넣기
```

### 방법 2: DBeaver / pgAdmin에서 실행

1. DBeaver 또는 pgAdmin 실행
2. `ilshin` 데이터베이스 연결
3. SQL 편집기 열기
4. 아래 SQL 복사하여 실행:

```sql
-- source_menu_objid 컬럼 추가
ALTER TABLE menu_info 
ADD COLUMN IF NOT EXISTS source_menu_objid BIGINT;

-- 인덱스 생성 (검색 성능 향상)
CREATE INDEX IF NOT EXISTS idx_menu_info_source_menu_objid 
ON menu_info(source_menu_objid);

-- 복합 인덱스: 회사별 원본 메뉴 검색
CREATE INDEX IF NOT EXISTS idx_menu_info_source_company 
ON menu_info(source_menu_objid, company_code);

-- 컬럼 설명 추가
COMMENT ON COLUMN menu_info.source_menu_objid IS '원본 메뉴 ID (복사된 경우만 값 존재)';

-- 확인
SELECT column_name, data_type, is_nullable
FROM information_schema.columns
WHERE table_name = 'menu_info' 
  AND column_name = 'source_menu_objid';
```

### 방법 3: Docker를 통한 실행

Docker Compose 설정 확인 후:

```bash
# Docker Compose에 DB 서비스가 있는 경우
docker-compose exec db psql -U postgres -d ilshin -f /path/to/migration.sql

# 또는 SQL을 직접 실행
docker-compose exec db psql -U postgres -d ilshin -c "
ALTER TABLE menu_info ADD COLUMN IF NOT EXISTS source_menu_objid BIGINT;
CREATE INDEX IF NOT EXISTS idx_menu_info_source_menu_objid ON menu_info(source_menu_objid);
CREATE INDEX IF NOT EXISTS idx_menu_info_source_company ON menu_info(source_menu_objid, company_code);
"
```

## ✅ 실행 후 확인

### 1. 컬럼이 추가되었는지 확인
```sql
SELECT column_name, data_type, is_nullable
FROM information_schema.columns
WHERE table_name = 'menu_info' 
  AND column_name = 'source_menu_objid';
```

**예상 결과**:
```
column_name        | data_type | is_nullable
-------------------|-----------|-------------
source_menu_objid  | bigint    | YES
```

### 2. 인덱스 확인
```sql
SELECT indexname 
FROM pg_indexes 
WHERE tablename = 'menu_info' 
  AND indexname LIKE '%source%';
```

**예상 결과**:
```
indexname
---------------------------------
idx_menu_info_source_menu_objid
idx_menu_info_source_company
```

### 3. 메뉴 복사 재시도
마이그레이션 완료 후 프론트엔드에서 메뉴 복사를 다시 실행하세요.

## 🔍 DB 접속 정보 찾기

### 환경 변수 확인
```bash
# .env 파일 확인
cat backend-node/.env | grep DB

# Docker Compose 확인
cat docker-compose*.yml | grep -A 10 postgres
```

### 일반적인 접속 정보
- **Host**: localhost 또는 127.0.0.1
- **Port**: 5432 (기본값)
- **Database**: ilshin
- **User**: postgres
- **Password**: (환경 설정 파일에서 확인)

## ⚠️ 주의사항

1. **백업 권장**: 마이그레이션 실행 전 DB 백업 권장
2. **권한 확인**: ALTER TABLE 권한이 필요합니다
3. **백엔드 재시작 불필요**: 컬럼 추가만으로 즉시 작동합니다

## 📞 문제 해결

### "permission denied" 에러
→ postgres 사용자 또는 superuser 권한으로 실행 필요

### "relation does not exist" 에러
→ 올바른 데이터베이스(ilshin)에 접속했는지 확인

### "already exists" 에러
→ 이미 실행됨. 무시하고 진행 가능

