From 0ae6eec973bc61f31756bd18fbae636911fa986e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=EB=B3=B4=EA=B3=A4?= Date: Fri, 27 Feb 2026 09:24:17 +0900 Subject: [PATCH] =?UTF-8?q?docs:=20CLAUDE.md=20DB=20=EB=A7=88=EC=9D=B4?= =?UTF-8?q?=EA=B7=B8=EB=A0=88=EC=9D=B4=EC=85=98=20=EC=A0=95=EC=B1=85=20?= =?UTF-8?q?=EB=B3=80=EA=B2=BD=20(MNG=20=ED=97=88=EC=9A=A9)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CLAUDE.md | 51 +++++++++++++++++++++++++++++++-------------------- 1 file changed, 31 insertions(+), 20 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index 582decf..04aa16c 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -347,43 +347,55 @@ React 코드가 변경되었습니다. git push 후 Jenkins가 자동 배포합 > **경고: 이 규칙을 반드시 준수하세요!** -### 핵심 원칙 +### 핵심 원칙 (2026-02-27 정책 변경) -**모든 데이터베이스 관련 파일은 API 프로젝트에서만 관리합니다.** +**현재 API/React가 운영 배포 중지 상태이므로, MNG에서도 마이그레이션을 생성하고 실행한다.** | 항목 | API (`/home/aweso/sam/api`) | MNG (`/home/aweso/sam/mng`) | |------|----------------------------|----------------------------| -| 마이그레이션 | ✅ 여기에 생성 | ❌ 생성 금지 | +| 마이그레이션 | ✅ 여기에 생성 | ✅ MNG 운영 배포에 필요한 것만 허용 | | 시더 | ✅ 여기에 생성 | ⚠️ MNG 전용만 허용 | | 팩토리 | ✅ 여기에 생성 | ❌ 생성 금지 | -### 금지 사항 +### MNG 마이그레이션 규칙 ``` -❌ /home/aweso/sam/mng/database/migrations/ 에 파일 생성 금지 -❌ MNG에서 테이블 생성/수정 마이그레이션 작성 금지 +✅ MNG 운영에 필요한 테이블 → MNG database/migrations/ 에 생성 +✅ API develop에 동일 마이그레이션이 있으면 파일명을 동일하게 유지 (중복 방지) +✅ Schema::hasTable() 가드 추가 — 테이블이 이미 있으면 스킵 +✅ MNG에서 php artisan migrate 실행 가능 ``` -### 허용 사항 +### 중복 방지 패턴 (필수) -``` -✅ /home/aweso/sam/api/database/migrations/ 에 모든 마이그레이션 생성 -✅ MNG에서는 MngMenuSeeder 같은 MNG 전용 시더만 허용 +API와 MNG 모두에 동일 마이그레이션이 존재할 수 있으므로, 반드시 가드를 추가한다: + +```php +public function up(): void +{ + if (Schema::hasTable('table_name')) { + return; + } + + Schema::create('table_name', function (Blueprint $table) { + // ... + }); +} ``` ### 마이그레이션 실행 ```bash -# 로컬: 마이그레이션은 반드시 API 컨테이너에서 실행 +# 로컬: API 또는 MNG 컨테이너에서 실행 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 -# 운영 서버: --force 플래그 필수 (production 환경) -cd /home/webservice/api && php artisan migrate --force - -# MNG에서 마이그레이션 실행 금지 (로컬/서버 모두) +# 운영 서버: MNG에서 --force 플래그 필수 (API 운영 배포 중지) +cd /home/webservice/mng && php artisan migrate --force ``` ### DB 환경 분리 @@ -397,11 +409,10 @@ cd /home/webservice/api && php artisan migrate --force > **참고**: `sam_stat`은 API/MNG 모두 `config/database.php`의 별도 connection으로 접속한다. -### 이유 +### 향후 정리 계획 -- MNG: 프론트엔드/관리자 화면 담당 (컨트롤러, 뷰, 라우트) -- API: 백엔드/데이터베이스 담당 (마이그레이션, 모델 정의, API) -- 단일 DB를 두 프로젝트가 공유하므로 마이그레이션은 한 곳에서만 관리 +- API가 운영 배포를 재개하면, MNG 마이그레이션을 API로 통합 정리 +- 동일 파일명 + `Schema::hasTable()` 가드로 중복 실행 방지됨 ---