revert: CLAUDE.md DB 마이그레이션 정책 원래대로 복원

This commit is contained in:
김보곤
2026-02-27 09:30:10 +09:00
parent 0ae6eec973
commit fc97dfe454

View File

@@ -347,55 +347,43 @@ React 코드가 변경되었습니다. git push 후 Jenkins가 자동 배포합
> **경고: 이 규칙을 반드시 준수하세요!**
### 핵심 원칙 (2026-02-27 정책 변경)
### 핵심 원칙
**현재 API/React가 운영 배포 중지 상태이므로, MNG에서도 마이그레이션을 생성하고 실행한다.**
**모든 데이터베이스 관련 파일은 API 프로젝트에서만 관리합니다.**
| 항목 | API (`/home/aweso/sam/api`) | MNG (`/home/aweso/sam/mng`) |
|------|----------------------------|----------------------------|
| 마이그레이션 | ✅ 여기에 생성 | ✅ MNG 운영 배포에 필요한 것만 허용 |
| 마이그레이션 | ✅ 여기에 생성 | ❌ 생성 금지 |
| 시더 | ✅ 여기에 생성 | ⚠️ MNG 전용만 허용 |
| 팩토리 | ✅ 여기에 생성 | ❌ 생성 금지 |
### MNG 마이그레이션 규칙
### 금지 사항
```
✅ MNG 운영에 필요한 테이블 → MNG database/migrations/ 에 생성
✅ API develop에 동일 마이그레이션이 있으면 파일명을 동일하게 유지 (중복 방지)
✅ Schema::hasTable() 가드 추가 — 테이블이 이미 있으면 스킵
✅ MNG에서 php artisan migrate 실행 가능
❌ /home/aweso/sam/mng/database/migrations/ 에 파일 생성 금지
❌ MNG에서 테이블 생성/수정 마이그레이션 작성 금지
```
### 중복 방지 패턴 (필수)
### 허용 사항
API와 MNG 모두에 동일 마이그레이션이 존재할 수 있으므로, 반드시 가드를 추가한다:
```php
public function up(): void
{
if (Schema::hasTable('table_name')) {
return;
}
Schema::create('table_name', function (Blueprint $table) {
// ...
});
}
```
✅ /home/aweso/sam/api/database/migrations/ 에 모든 마이그레이션 생성
✅ MNG에서는 MngMenuSeeder 같은 MNG 전용 시더만 허용
```
### 마이그레이션 실행
```bash
# 로컬: API 또는 MNG 컨테이너에서 실행
# 로컬: 마이그레이션은 반드시 API 컨테이너에서 실행
docker exec sam-api-1 php artisan migrate
docker exec sam-mng-1 php artisan migrate
# 개발 서버: 직접 실행
# 개발 서버: Docker 없음, 직접 실행
cd /home/webservice/api && php artisan migrate
cd /home/webservice/mng && php artisan migrate
# 운영 서버: MNG에서 --force 플래그 필수 (API 운영 배포 중지)
cd /home/webservice/mng && php artisan migrate --force
# 운영 서버: --force 플래그 필수 (production 환경)
cd /home/webservice/api && php artisan migrate --force
# MNG에서 마이그레이션 실행 금지 (로컬/서버 모두)
```
### DB 환경 분리
@@ -409,10 +397,11 @@ cd /home/webservice/mng && php artisan migrate --force
> **참고**: `sam_stat`은 API/MNG 모두 `config/database.php`의 별도 connection으로 접속한다.
### 향후 정리 계획
### 이유
- API가 운영 배포를 재개하면, MNG 마이그레이션을 API로 통합 정리
- 동일 파일명 + `Schema::hasTable()` 가드로 중복 실행 방지됨
- MNG: 프론트엔드/관리자 화면 담당 (컨트롤러, 뷰, 라우트)
- API: 백엔드/데이터베이스 담당 (마이그레이션, 모델 정의, API)
- 단일 DB를 두 프로젝트가 공유하므로 마이그레이션은 한 곳에서만 관리
---