From ad0fed9d5531bf542a3238130dedad8de0aff1d2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=EB=B3=B4=EA=B3=A4?= Date: Thu, 12 Mar 2026 14:54:33 +0900 Subject: [PATCH] =?UTF-8?q?docs:=20DB=20=EC=95=84=ED=82=A4=ED=85=8D?= =?UTF-8?q?=EC=B2=98=20=EB=AC=B8=EC=84=9C=20=ED=98=84=ED=96=89=ED=99=94=20?= =?UTF-8?q?-=20MNG=20=EC=9E=90=EC=B2=B4=20=EB=A7=88=EC=9D=B4=EA=B7=B8?= =?UTF-8?q?=EB=A0=88=EC=9D=B4=EC=85=98=20=EA=B4=80=EB=A6=AC=20=EB=B0=98?= =?UTF-8?q?=EC=98=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - codebridge 서버 분리 이후 MNG 자체 DB 관리 구조 반영 - 이전 규칙(모든 마이그레이션 API에서만) → 현행(각 프로젝트 자체 관리) - CLAUDE.md, mng-structure, overview, database/README, PROJECT_DEVELOPMENT_POLICY 수정 --- CLAUDE.md | 40 +++++++++++------------- dev/guides/PROJECT_DEVELOPMENT_POLICY.md | 17 +++++----- system/database/README.md | 2 +- system/mng-structure.md | 2 +- system/overview.md | 6 ++-- 5 files changed, 33 insertions(+), 34 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index 74528c7..dd62af6 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -417,41 +417,36 @@ React 코드가 변경되었습니다. git push 후 Jenkins가 자동 배포합 ### 핵심 원칙 -**모든 데이터베이스 관련 파일은 API 프로젝트에서만 관리합니다.** +**각 프로젝트는 자체 DB 마이그레이션을 관리한다.** (codebridge 서버 분리 이후) | 항목 | API (`/home/aweso/sam/api`) | MNG (`/home/aweso/sam/mng`) | |------|----------------------------|----------------------------| -| 마이그레이션 | ✅ 여기에 생성 | ❌ 생성 금지 | -| 시더 | ✅ 여기에 생성 | ⚠️ MNG 전용만 허용 | -| 팩토리 | ✅ 여기에 생성 | ❌ 생성 금지 | +| 마이그레이션 | ✅ API 전용 테이블 | ✅ MNG 전용 테이블 | +| 시더 | ✅ API 전용 시더 | ✅ MNG 전용 시더 | +| 팩토리 | ✅ API 전용 팩토리 | ✅ MNG 전용 팩토리 | -### 금지 사항 +### 마이그레이션 소유 기준 ``` -❌ /home/aweso/sam/mng/database/migrations/ 에 파일 생성 금지 -❌ MNG에서 테이블 생성/수정 마이그레이션 작성 금지 -``` - -### 허용 사항 - -``` -✅ /home/aweso/sam/api/database/migrations/ 에 모든 마이그레이션 생성 -✅ MNG에서는 MngMenuSeeder 같은 MNG 전용 시더만 허용 +✅ API 마이그레이션: API에서 사용하는 테이블 (공용 테이블 포함) +✅ MNG 마이그레이션: MNG에서만 사용하는 전용 테이블 (예: pmis_*) +⚠️ 공용 테이블 (양쪽 모두 사용): API에서 관리 ``` ### 마이그레이션 실행 ```bash -# 로컬: 마이그레이션은 반드시 API 컨테이너에서 실행 -docker exec sam-api-1 php artisan migrate +# 로컬: 각 프로젝트 컨테이너에서 실행 +docker exec sam-api-1 php artisan migrate # API 전용/공용 테이블 +docker exec sam-mng-1 php artisan migrate # MNG 전용 테이블 # 개발 서버: 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에서 마이그레이션 실행 금지 (로컬/서버 모두) +cd /home/webservice/mng && php artisan migrate --force ``` ### DB 환경 분리 @@ -465,11 +460,12 @@ cd /home/webservice/api && php artisan migrate --force > **참고**: `sam_stat`은 API/MNG 모두 `config/database.php`의 별도 connection으로 접속한다. -### 이유 +### 배경 -- MNG: 프론트엔드/관리자 화면 담당 (컨트롤러, 뷰, 라우트) -- API: 백엔드/데이터베이스 담당 (마이그레이션, 모델 정의, API) -- 단일 DB를 두 프로젝트가 공유하므로 마이그레이션은 한 곳에서만 관리 +- codebridge 서버 분리 이후 MNG는 자체 DB를 독립적으로 관리하는 구조로 전환 +- API: REST API 및 공용 테이블 관리 (마이그레이션, 모델 정의, API) +- MNG: 관리자 화면 및 MNG 전용 테이블 관리 (예: PMIS 시공관리 등) +- 동일 DB를 공유하므로, 공용 테이블은 API에서 관리하되 MNG 전용 테이블은 MNG에서 관리 ### 테이블 생성/수정 시 options JSON 컬럼 정책 (필수) diff --git a/dev/guides/PROJECT_DEVELOPMENT_POLICY.md b/dev/guides/PROJECT_DEVELOPMENT_POLICY.md index 2f72b76..25fea93 100644 --- a/dev/guides/PROJECT_DEVELOPMENT_POLICY.md +++ b/dev/guides/PROJECT_DEVELOPMENT_POLICY.md @@ -20,12 +20,12 @@ ❌ 절대 금지: - 새로운 테이블 임의 생성 (price_new, order_items_v2 등) - 기존 테이블 구조 임의 변경 -- mng에서 마이그레이션 실행 ✅ 필수: - 기존 테이블 우선 활용 - 테이블 추가 필요 시 → 사용자 승인 필수 -- DB 마이그레이션은 api 프로젝트에서만 실행 +- 공용/API 전용 테이블 마이그레이션은 api 프로젝트에서 실행 +- MNG 전용 테이블 마이그레이션은 mng 프로젝트에서 실행 ``` ### 2. 기술 스택 @@ -237,8 +237,9 @@ Step 5: 사용자 승인 ├── 컬럼 분류(필수/가변) 승인 └── 매핑 관계 승인 ↓ -Step 6: 마이그레이션 생성 (api 프로젝트에서만!) -└── api/database/migrations/ +Step 6: 마이그레이션 생성 (소유 프로젝트에서) +├── 공용/API 전용 → api/database/migrations/ +└── MNG 전용 → mng/database/migrations/ ``` ### 기존 테이블 처리 정책 @@ -296,7 +297,7 @@ class ExampleModel extends Model - [ ] 컬럼 분류 (필수 🔴 / 가변 🟢) 완료 - [ ] 테이블 매핑 문서 작성 - [ ] 사용자 승인 획득 -- [ ] api 프로젝트에서 마이그레이션 생성 +- [ ] 소유 프로젝트에서 마이그레이션 생성 (공용→api, MNG 전용→mng) - [ ] 모델 생성 및 options 캐스팅 설정 기존 테이블 활용 시: @@ -393,8 +394,10 @@ mng/docs/ # mng 프로젝트 문서 ### 테이블 참조 ``` -api/database/migrations/ # 마이그레이션 파일 -api/app/Models/ # 모델 정의 +api/database/migrations/ # API/공용 마이그레이션 +mng/database/migrations/ # MNG 전용 마이그레이션 +api/app/Models/ # API 모델 정의 +mng/app/Models/ # MNG 모델 정의 ``` --- diff --git a/system/database/README.md b/system/database/README.md index b641e65..87890a5 100644 --- a/system/database/README.md +++ b/system/database/README.md @@ -2,7 +2,7 @@ > **최종 갱신**: 2026-02-27 > **DB**: MySQL 8.0 (samdb + sam_stat) -> **마이그레이션**: 459개 (api/에서만 관리) +> **마이그레이션**: 459개+ (api: 공용/API 전용, mng: MNG 전용) --- diff --git a/system/mng-structure.md b/system/mng-structure.md index 8438419..28c3730 100644 --- a/system/mng-structure.md +++ b/system/mng-structure.md @@ -105,7 +105,7 @@ app/ ### api ↔ mng 관계 - 동일 MySQL DB (`samdb`) 공유 - 각자 독립적인 모델 보유 (api: 205개, mng: 185개) -- **DB 마이그레이션은 api에서만** — mng에 migrations 없음 +- **DB 마이그레이션은 각 프로젝트에서 관리** — 공용 테이블은 api, MNG 전용 테이블(예: `pmis_*`)은 mng - 내부 통신: HMAC 기반 `INTERNAL_EXCHANGE_SECRET` - 파일 공유: mng가 api의 `storage/app/tenants` 마운트 diff --git a/system/overview.md b/system/overview.md index 675d169..1aa75f0 100644 --- a/system/overview.md +++ b/system/overview.md @@ -38,7 +38,7 @@ SAM/ | 앱 | 역할 | 기술 스택 | Git 저장소 | |----|------|----------|-----------| -| **api** | REST API 서버, DB 마이그레이션 관리 | Laravel 12, PHP 8.4, Sanctum, Swagger | 독립 | +| **api** | REST API 서버, 공용/API 전용 DB 마이그레이션 관리 | Laravel 12, PHP 8.4, Sanctum, Swagger | 독립 | | **mng** | 관리자 패널 (admin.sam.kr 포함) | Laravel 12, PHP 8.4, HTMX, DaisyUI, Vite 7 | 독립 | | **react** | 사용자 프론트엔드 | Next.js 15, React 19, Tailwind v4, Zustand | 독립 | | **design** | 디자인 시스템/컴포넌트 | Vite | 독립 | @@ -53,8 +53,8 @@ react (dev.sam.kr) ──API 호출──→ api (api.sam.kr) ←──DB 공 5130 (chandj DB) ``` -- **api**: DB 마이그레이션 유일 관리자. 모든 테이블 정의는 api에서만. -- **mng**: 자체 모델 보유 (185개), DB 마이그레이션 없음. api와 동일 DB 사용. +- **api**: 공용 테이블 및 API 전용 테이블의 마이그레이션 관리. +- **mng**: 자체 모델 보유 (185개), MNG 전용 테이블(예: `pmis_*`)의 마이그레이션 자체 관리. api와 동일 DB 사용. - **react**: Server Actions로 api 호출. DB 직접 접근 없음. ---