docs: 작업 현황 및 관계 문서 업데이트
This commit is contained in:
101
CURRENT_WORKS.md
101
CURRENT_WORKS.md
@@ -1,5 +1,106 @@
|
||||
# SAM API 작업 현황
|
||||
|
||||
## 2025-12-02 (월) - 메뉴 통합관리 시스템 구현 (Phase 1-2)
|
||||
|
||||
### 작업 목표
|
||||
- 글로벌 메뉴-테넌트 메뉴 연결 시스템 구현
|
||||
- Phase 1: DB 스키마 변경 및 모델 수정
|
||||
- Phase 2: 서비스 및 API 엔드포인트 개발
|
||||
|
||||
### Phase 1 완료 (DB 스키마 및 모델)
|
||||
|
||||
**추가된 파일:**
|
||||
- `database/migrations/2025_12_02_100000_add_global_menu_link_columns_to_menus_table.php`
|
||||
- `global_menu_id` 컬럼: 원본 글로벌 메뉴 ID
|
||||
- `is_customized` 컬럼: 테넌트 커스터마이징 여부
|
||||
- 인덱스 추가
|
||||
|
||||
**수정된 파일:**
|
||||
- `app/Models/Commons/Menu.php`
|
||||
- fillable: `global_menu_id`, `is_customized` 추가
|
||||
- casts: `is_customized => boolean` 등 추가
|
||||
- 관계 메서드: `globalMenu()`, `tenantMenus()`
|
||||
- 헬퍼 메서드: `isGlobal()`, `isClonedFromGlobal()`, `isCustomized()`
|
||||
- 스코프: `scopeGlobal()`, `scopeActive()`, `scopeVisible()`, `scopeRoots()`
|
||||
- `getSyncFields()`: 동기화 비교 대상 필드 목록
|
||||
|
||||
- `app/Services/MenuBootstrapService.php`
|
||||
- `cloneGlobalMenusForTenant()`: global_menu_id 저장 추가
|
||||
- 활성 메뉴만 복제 (is_active=true)
|
||||
|
||||
### Phase 2 완료 (서비스 및 API)
|
||||
|
||||
**추가된 파일:**
|
||||
- `app/Services/GlobalMenuService.php` (신규)
|
||||
- 글로벌 메뉴 CRUD (tenant_id = NULL)
|
||||
- `syncToAllTenants()`: 특정 메뉴를 모든 테넌트에 동기화
|
||||
- `stats()`: 글로벌 메뉴 통계
|
||||
|
||||
- `app/Services/MenuSyncService.php` (신규)
|
||||
- 동기화 상태 상수: NEW, UP_TO_DATE, UPDATABLE, CUSTOMIZED, DELETED
|
||||
- `getSyncStatus()`: 동기화 상태 목록 조회
|
||||
- `syncMenus()`: 선택 동기화 (신규/업데이트)
|
||||
- `importNewMenus()`: 신규 글로벌 메뉴 일괄 가져오기
|
||||
- `syncUpdates()`: 변경된 메뉴 일괄 업데이트 (커스텀 제외)
|
||||
- `getAvailableGlobalMenus()`: 복제 가능한 글로벌 메뉴 목록
|
||||
|
||||
- `app/Http/Controllers/Api/Admin/GlobalMenuController.php` (신규)
|
||||
- 시스템 관리자용 글로벌 메뉴 관리
|
||||
- index, tree, show, store, update, destroy, reorder
|
||||
- syncToTenants, stats
|
||||
|
||||
**수정된 파일:**
|
||||
- `app/Services/MenuService.php`
|
||||
- `update()`: 글로벌 복제 메뉴 수정 시 is_customized=true 자동 설정
|
||||
- `restore()`: 삭제된 메뉴 복원 추가
|
||||
- `trashedList()`: 삭제된 메뉴 목록 조회 추가
|
||||
|
||||
- `app/Http/Controllers/Api/V1/MenuController.php`
|
||||
- MenuSyncService DI 추가
|
||||
- restore, trashed, availableGlobal, syncStatus, sync, syncNew, syncUpdates 메서드 추가
|
||||
|
||||
- `routes/api.php`
|
||||
- GlobalMenuController use 문 추가
|
||||
- 테넌트 메뉴 동기화 라우트 6개 추가 (trashed, available-global, sync-status, sync, sync-new, sync-updates, restore)
|
||||
- 글로벌 메뉴 관리 라우트 9개 추가 (admin/global-menus/*)
|
||||
|
||||
### API 엔드포인트
|
||||
|
||||
**테넌트 메뉴 동기화 (V1):**
|
||||
| Method | Path | 설명 |
|
||||
|--------|------|------|
|
||||
| GET | /v1/menus/trashed | 삭제된 메뉴 목록 |
|
||||
| GET | /v1/menus/available-global | 복제 가능한 글로벌 메뉴 |
|
||||
| GET | /v1/menus/sync-status | 동기화 상태 조회 |
|
||||
| POST | /v1/menus/sync | 선택 동기화 |
|
||||
| POST | /v1/menus/sync-new | 신규 메뉴 일괄 가져오기 |
|
||||
| POST | /v1/menus/sync-updates | 변경된 메뉴 일괄 업데이트 |
|
||||
| POST | /v1/menus/{id}/restore | 삭제된 메뉴 복원 |
|
||||
|
||||
**글로벌 메뉴 관리 (Admin):**
|
||||
| Method | Path | 설명 |
|
||||
|--------|------|------|
|
||||
| GET | /v1/admin/global-menus | 글로벌 메뉴 목록 |
|
||||
| POST | /v1/admin/global-menus | 글로벌 메뉴 생성 |
|
||||
| GET | /v1/admin/global-menus/tree | 글로벌 메뉴 트리 |
|
||||
| GET | /v1/admin/global-menus/stats | 통계 조회 |
|
||||
| POST | /v1/admin/global-menus/reorder | 순서 변경 |
|
||||
| GET | /v1/admin/global-menus/{id} | 단건 조회 |
|
||||
| PUT | /v1/admin/global-menus/{id} | 수정 |
|
||||
| DELETE | /v1/admin/global-menus/{id} | 삭제 |
|
||||
| POST | /v1/admin/global-menus/{id}/sync-to-tenants | 모든 테넌트에 동기화 |
|
||||
|
||||
### 검증 결과
|
||||
- PHP 문법 검사: ✅ 모든 파일 통과
|
||||
- 라우트 등록: ✅ 9개 글로벌 메뉴 + 7개 테넌트 동기화 라우트 확인
|
||||
|
||||
### 다음 작업 (Phase 3-4)
|
||||
- [ ] Phase 3: MNG 글로벌 메뉴 관리 화면
|
||||
- [ ] Phase 3: MNG 동기화 센터 화면
|
||||
- [ ] Phase 4: 마이그레이션 실행 및 테스트
|
||||
|
||||
---
|
||||
|
||||
## 2025-12-01 (일) - 메뉴 통합관리 시스템 설계
|
||||
|
||||
### 작업 목표
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# 논리적 데이터베이스 관계 문서
|
||||
|
||||
> **자동 생성**: 2025-11-28 17:41:00
|
||||
> **자동 생성**: 2025-12-02 20:39:31
|
||||
> **소스**: Eloquent 모델 관계 분석
|
||||
|
||||
## 📊 모델별 관계 현황
|
||||
@@ -69,10 +69,18 @@ ### files
|
||||
- **shareLinks()**: hasMany → `file_share_links`
|
||||
- **fileable()**: morphTo → `(Polymorphic)`
|
||||
|
||||
### global_menus
|
||||
**모델**: `App\Models\Commons\GlobalMenu`
|
||||
|
||||
- **parent()**: belongsTo → `global_menus`
|
||||
- **children()**: hasMany → `global_menus`
|
||||
- **tenantMenus()**: hasMany → `menus`
|
||||
|
||||
### menus
|
||||
**모델**: `App\Models\Commons\Menu`
|
||||
|
||||
- **parent()**: belongsTo → `menus`
|
||||
- **globalMenu()**: belongsTo → `global_menus`
|
||||
- **children()**: hasMany → `menus`
|
||||
|
||||
### tags
|
||||
|
||||
Reference in New Issue
Block a user