78 lines
2.1 KiB
Markdown
78 lines
2.1 KiB
Markdown
|
|
# Phase 2: React 라우터 → 메뉴 추출
|
||
|
|
|
||
|
|
> **상태**: ✅ 완료
|
||
|
|
> **완료일**: 2025-12-20
|
||
|
|
> **병행 작업**: Phase 3과 병행 가능
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 목표
|
||
|
|
|
||
|
|
React 라우트 기반으로 mng에 등록할 메뉴 목록 추출
|
||
|
|
|
||
|
|
## 체크리스트
|
||
|
|
|
||
|
|
- [x] React 전체 라우트 목록 추출
|
||
|
|
- [x] 메뉴 구조 정리 (계층, 이름, URL)
|
||
|
|
- [x] 접근 권한 매핑
|
||
|
|
- [x] mng 등록용 포맷 생성
|
||
|
|
- [ ] 메뉴 등록 (mng에서) → Phase 4에서 진행
|
||
|
|
|
||
|
|
## React 라우트 구조
|
||
|
|
|
||
|
|
```
|
||
|
|
react/src/app/
|
||
|
|
├── [locale]/
|
||
|
|
│ ├── page.tsx # 루트 (→ dashboard 리다이렉트)
|
||
|
|
│ ├── login/page.tsx # 로그인
|
||
|
|
│ └── (protected)/ # 인증 필요
|
||
|
|
│ ├── dashboard/ # 대시보드
|
||
|
|
│ ├── items/ # 품목 관리
|
||
|
|
│ ├── accounting/ # 회계
|
||
|
|
│ ├── sales/ # 영업
|
||
|
|
│ ├── hr/ # 인사
|
||
|
|
│ ├── board/ # 게시판
|
||
|
|
│ ├── settings/ # 설정
|
||
|
|
│ └── ...
|
||
|
|
```
|
||
|
|
|
||
|
|
## 메뉴 추출 포맷
|
||
|
|
|
||
|
|
| 메뉴명 | URL | 부모 | 순서 | 아이콘 | 권한 |
|
||
|
|
|--------|-----|------|------|--------|------|
|
||
|
|
| 대시보드 | /dashboard | - | 1 | dashboard | all |
|
||
|
|
| 품목관리 | /items | - | 2 | box | items.view |
|
||
|
|
| ... | ... | ... | ... | ... | ... |
|
||
|
|
|
||
|
|
## 산출물
|
||
|
|
|
||
|
|
- [x] `react-routes-analysis.md` - 라우트 상세 분석 (107개 페이지, 15개 도메인)
|
||
|
|
- [x] `menu-list.md` - 최종 메뉴 리스트 (11개 대메뉴, 54개 중메뉴, 52개 권한)
|
||
|
|
|
||
|
|
## 작업 순서
|
||
|
|
|
||
|
|
1. React 라우터 파일 전체 스캔
|
||
|
|
2. 페이지별 메타 정보 수집
|
||
|
|
3. 메뉴 계층 구조 설계
|
||
|
|
4. 권한 매핑 정의
|
||
|
|
5. mng 등록용 SQL/JSON 생성
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 참고: 현재 메뉴 로드 방식
|
||
|
|
|
||
|
|
```typescript
|
||
|
|
// 로그인 시 API에서 메뉴 로드
|
||
|
|
POST /api/v1/login
|
||
|
|
Response: {
|
||
|
|
user: {...},
|
||
|
|
menus: [...], // 권한 기반 메뉴
|
||
|
|
roles: [...]
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
메뉴가 등록되지 않으면 해당 라우트 접근 불가.
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
*Phase 2 작업 시작 시 이 체크리스트를 업데이트하세요.*
|