docs: DB 아키텍처 문서 현행화 - MNG 자체 마이그레이션 관리 반영
- codebridge 서버 분리 이후 MNG 자체 DB 관리 구조 반영 - 이전 규칙(모든 마이그레이션 API에서만) → 현행(각 프로젝트 자체 관리) - CLAUDE.md, mng-structure, overview, database/README, PROJECT_DEVELOPMENT_POLICY 수정
This commit is contained in:
40
CLAUDE.md
40
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 컬럼 정책 (필수)
|
||||
|
||||
|
||||
@@ -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 모델 정의
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
> **최종 갱신**: 2026-02-27
|
||||
> **DB**: MySQL 8.0 (samdb + sam_stat)
|
||||
> **마이그레이션**: 459개 (api/에서만 관리)
|
||||
> **마이그레이션**: 459개+ (api: 공용/API 전용, mng: MNG 전용)
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -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` 마운트
|
||||
|
||||
|
||||
@@ -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 직접 접근 없음.
|
||||
|
||||
---
|
||||
|
||||
Reference in New Issue
Block a user