diff --git a/CLAUDE.md b/CLAUDE.md index d824550..a7b729f 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -56,6 +56,52 @@ --- +## 데이터베이스 아키텍처 (필수 규칙) + +> **경고: 이 규칙을 반드시 준수하세요!** + +### 핵심 원칙 + +**모든 데이터베이스 관련 파일은 API 프로젝트에서만 관리합니다.** + +| 항목 | API (`/home/aweso/sam/api`) | MNG (`/home/aweso/sam/mng`) | +|------|----------------------------|----------------------------| +| 마이그레이션 | ✅ 여기에 생성 | ❌ 생성 금지 | +| 시더 | ✅ 여기에 생성 | ⚠️ MNG 전용만 허용 | +| 팩토리 | ✅ 여기에 생성 | ❌ 생성 금지 | + +### 금지 사항 + +``` +❌ /home/aweso/sam/mng/database/migrations/ 에 파일 생성 금지 +❌ MNG에서 테이블 생성/수정 마이그레이션 작성 금지 +``` + +### 허용 사항 + +``` +✅ /home/aweso/sam/api/database/migrations/ 에 모든 마이그레이션 생성 +✅ MNG에서는 MngMenuSeeder 같은 MNG 전용 시더만 허용 +``` + +### 마이그레이션 실행 + +```bash +# 마이그레이션은 반드시 API 컨테이너에서 실행 +docker exec sam-api-1 php artisan migrate + +# MNG 컨테이너에서 마이그레이션 실행 금지 +# docker exec sam-mng-1 php artisan migrate ← 사용하지 않음 +``` + +### 이유 + +- MNG: 프론트엔드/관리자 화면 담당 (컨트롤러, 뷰, 라우트) +- API: 백엔드/데이터베이스 담당 (마이그레이션, 모델 정의, API) +- 단일 DB를 두 프로젝트가 공유하므로 마이그레이션은 한 곳에서만 관리 + +--- + ## Docker 환경 (필수 인지) > **중요: 로컬 개발 환경은 Docker 기반입니다!** @@ -86,8 +132,8 @@ docker exec sam-api-1 php artisan <명령어> # 예시: 시더 실행 docker exec sam-mng-1 php artisan db:seed --class=MngMenuSeeder -# 예시: 마이그레이션 실행 -docker exec sam-mng-1 php artisan migrate +# 예시: 마이그레이션 실행 (API에서만!) +docker exec sam-api-1 php artisan migrate # 예시: 캐시 클리어 docker exec sam-mng-1 php artisan cache:clear @@ -95,7 +141,7 @@ docker exec sam-mng-1 php artisan cache:clear ### 체크리스트 (명령 실행 시) -- [ ] `php artisan` 명령 → `docker exec sam-mng-1 php artisan` 사용 -- [ ] `composer` 명령 → `docker exec sam-mng-1 composer` 사용 +- [ ] `php artisan` 명령 → `docker exec sam-mng-1 php artisan` 또는 `sam-api-1` 사용 +- [ ] `composer` 명령 → `docker exec sam-mng-1 composer` 또는 `sam-api-1` 사용 - [ ] DB 시더 실행 필요 시 → Docker를 통해 실행 -- [ ] 마이그레이션 필요 시 → Docker를 통해 실행 +- [ ] **마이그레이션은 반드시 API에서 실행** → `docker exec sam-api-1 php artisan migrate`