docs: API 통합 프로젝트 계획 및 Flow Test 스펙 추가

- INDEX.md: TODO.md 링크 추가
- TODO.md: 프로젝트 할일 목록 신규 생성
- plans/flow-tests/: Flow Tester 테스트 시나리오 JSON 추가
  - auth-api-flow.json: 인증 API 플로우 테스트
  - pricing-validation-test.json: 가격 검증 테스트
- projects/api-integration/: 마이그레이션 계획 문서
  - MASTER_PLAN.md: 전체 마이그레이션 전략
  - PROGRESS.md: 진행 상황 추적
  - WORKFLOW.md: 작업 워크플로우
  - phase-1 ~ phase-4: 단계별 상세 계획

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
2025-12-21 01:35:43 +09:00
parent 1f963a5c60
commit 2d9b02f74e
16 changed files with 3127 additions and 0 deletions

View File

@@ -0,0 +1,78 @@
# 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 작업 시작 시 이 체크리스트를 업데이트하세요.*

View File

@@ -0,0 +1,383 @@
# Menu List - React 기반 최종 메뉴 구조
> **생성일**: 2025-12-20
> **기준**: React 라우트 기반 (React-First)
---
## 1. 메뉴 계층 구조
### 1.1 대시보드
| ID | 메뉴명 | URL | 아이콘 | 부모 | 순서 | 권한 |
|----|--------|-----|--------|------|------|------|
| 1 | 대시보드 | /dashboard | layout-dashboard | - | 1 | all |
### 1.2 결재관리 (신규)
| ID | 메뉴명 | URL | 아이콘 | 부모 | 순서 | 권한 |
|----|--------|-----|--------|------|------|------|
| 100 | 결재관리 | /approval | file-check | - | 2 | approval.view |
| 101 | 기안함 | /approval/draft | file-edit | 100 | 1 | approval.draft |
| 102 | 결재함 | /approval/inbox | inbox | 100 | 2 | approval.approve |
| 103 | 참조함 | /approval/reference | eye | 100 | 3 | approval.view |
### 1.3 게시판 (신규)
| ID | 메뉴명 | URL | 아이콘 | 부모 | 순서 | 권한 |
|----|--------|-----|--------|------|------|------|
| 200 | 게시판 | /board | layout-list | - | 3 | board.view |
| 201 | 게시판 관리 | /board/board-management | settings | 200 | 1 | board.manage |
### 1.4 품목관리
| ID | 메뉴명 | URL | 아이콘 | 부모 | 순서 | 권한 |
|----|--------|-----|--------|------|------|------|
| 300 | 품목관리 | /items | package | - | 4 | items.view |
| 301 | 품목기준관리 | /master-data/item-master-data-management | database | 300 | 1 | items.master |
### 1.5 판매관리
| ID | 메뉴명 | URL | 아이콘 | 부모 | 순서 | 권한 |
|----|--------|-----|--------|------|------|------|
| 400 | 판매관리 | /sales | briefcase | - | 5 | sales.view |
| 401 | 거래처관리 | /sales/client-management-sales-admin | building-2 | 400 | 1 | sales.clients |
| 402 | 견적관리 | /sales/quote-management | calculator | 400 | 2 | sales.quotes |
| 403 | 단가관리 | /sales/pricing-management | dollar-sign | 400 | 3 | sales.pricing |
### 1.6 생산관리
| ID | 메뉴명 | URL | 아이콘 | 부모 | 순서 | 권한 |
|----|--------|-----|--------|------|------|------|
| 500 | 생산관리 | /production | factory | - | 6 | production.view |
| 501 | 스크린 생산 | /production/screen-production | package | 500 | 1 | production.screen |
### 1.7 회계관리
| ID | 메뉴명 | URL | 아이콘 | 부모 | 순서 | 권한 |
|----|--------|-----|--------|------|------|------|
| 600 | 회계관리 | /accounting | calculator | - | 7 | accounting.view |
| 601 | 거래처관리 | /accounting/vendors | building-2 | 600 | 1 | accounting.vendors |
| 602 | 거래처원장 | /accounting/vendor-ledger | file-text | 600 | 2 | accounting.ledger |
| 603 | 매출관리 | /accounting/sales | trending-up | 600 | 3 | accounting.sales |
| 604 | 매입관리 | /accounting/purchase | trending-down | 600 | 4 | accounting.purchase |
| 605 | 세금계산서 | /accounting/bills | receipt | 600 | 5 | accounting.bills |
| 606 | 입금관리 | /accounting/deposits | arrow-down-circle | 600 | 6 | accounting.deposits |
| 607 | 출금관리 | /accounting/withdrawals | arrow-up-circle | 600 | 7 | accounting.withdrawals |
| 608 | 은행거래 | /accounting/bank-transactions | landmark | 600 | 8 | accounting.bank |
| 609 | 카드거래 | /accounting/card-transactions | credit-card | 600 | 9 | accounting.card |
| 610 | 미수금현황 | /accounting/receivables-status | alert-circle | 600 | 10 | accounting.receivables |
| 611 | 예상비용 | /accounting/expected-expenses | clock | 600 | 11 | accounting.expenses |
| 612 | 대손채권회수 | /accounting/bad-debt-collection | shield | 600 | 12 | accounting.baddebt |
| 613 | 일일리포트 | /accounting/daily-report | file-bar-chart | 600 | 13 | accounting.report |
| 614 | 결제내역 | /payment-history | history | 600 | 14 | accounting.payment |
### 1.8 인사관리 (신규)
| ID | 메뉴명 | URL | 아이콘 | 부모 | 순서 | 권한 |
|----|--------|-----|--------|------|------|------|
| 700 | 인사관리 | /hr | users | - | 8 | hr.view |
| 701 | 직원관리 | /hr/employee-management | user | 700 | 1 | hr.employees |
| 702 | 부서관리 | /hr/department-management | building | 700 | 2 | hr.departments |
| 703 | 카드관리 | /hr/card-management | credit-card | 700 | 3 | hr.cards |
| 704 | 근태현황 | /hr/attendance | clock | 700 | 4 | hr.attendance.view |
| 705 | 근태관리 | /hr/attendance-management | calendar-check | 700 | 5 | hr.attendance.manage |
| 706 | 급여관리 | /hr/salary-management | dollar-sign | 700 | 6 | hr.salary |
| 707 | 휴가관리 | /hr/vacation-management | calendar | 700 | 7 | hr.vacation |
### 1.9 리포트 (신규)
| ID | 메뉴명 | URL | 아이콘 | 부모 | 순서 | 권한 |
|----|--------|-----|--------|------|------|------|
| 800 | 리포트 | /reports | bar-chart-3 | - | 9 | reports.view |
| 801 | 종합분석 | /reports/comprehensive-analysis | pie-chart | 800 | 1 | reports.analysis |
### 1.10 고객센터 (신규)
| ID | 메뉴명 | URL | 아이콘 | 부모 | 순서 | 권한 |
|----|--------|-----|--------|------|------|------|
| 900 | 고객센터 | /customer-center | headphones | - | 10 | customer.view |
| 901 | 공지사항 | /customer-center/notices | megaphone | 900 | 1 | customer.notices |
| 902 | FAQ | /customer-center/faq | help-circle | 900 | 2 | customer.faq |
| 903 | 문의하기 | /customer-center/inquiries | message-circle | 900 | 3 | customer.inquiries |
| 904 | 이벤트 | /customer-center/events | calendar-star | 900 | 4 | customer.events |
### 1.11 설정 (신규)
| ID | 메뉴명 | URL | 아이콘 | 부모 | 순서 | 권한 |
|----|--------|-----|--------|------|------|------|
| 1000 | 설정 | /settings | settings | - | 11 | settings.view |
| 1001 | 계정정보 | /settings/account-info | user | 1000 | 1 | settings.account |
| 1002 | 계정관리 | /settings/accounts | users | 1000 | 2 | settings.accounts |
| 1003 | 권한관리 | /settings/permissions | shield | 1000 | 3 | settings.permissions |
| 1004 | 직급관리 | /settings/ranks | award | 1000 | 4 | settings.ranks |
| 1005 | 직책관리 | /settings/titles | badge | 1000 | 5 | settings.titles |
| 1006 | 근태설정 | /settings/attendance-settings | clock | 1000 | 6 | settings.attendance |
| 1007 | 휴가정책 | /settings/leave-policy | calendar | 1000 | 7 | settings.leave |
| 1008 | 근무일정 | /settings/work-schedule | calendar-days | 1000 | 8 | settings.schedule |
| 1009 | 알림설정 | /settings/notification-settings | bell | 1000 | 9 | settings.notifications |
| 1010 | 팝업관리 | /settings/popup-management | layout | 1000 | 10 | settings.popups |
| 1011 | 회사정보 | /company-info | building | 1000 | 11 | settings.company |
| 1012 | 구독관리 | /subscription | credit-card | 1000 | 12 | settings.subscription |
---
## 2. 권한 매핑 정의
### 2.1 권한 그룹
| 권한 그룹 | 설명 | 기본 권한 |
|-----------|------|----------|
| all | 모든 사용자 | 로그인 사용자 |
| approval.* | 결재 관련 | 결재 담당자 |
| board.* | 게시판 관련 | 일반 사용자 |
| items.* | 품목 관련 | 생산/구매 담당 |
| sales.* | 판매 관련 | 영업 담당 |
| production.* | 생산 관련 | 생산 담당 |
| accounting.* | 회계 관련 | 경리 담당 |
| hr.* | 인사 관련 | 인사 담당 |
| reports.* | 리포트 관련 | 관리자 |
| customer.* | 고객센터 관련 | 일반 사용자 |
| settings.* | 설정 관련 | 관리자 |
### 2.2 세부 권한
```
approval.view - 결재 조회
approval.draft - 기안 작성
approval.approve - 결재 승인
board.view - 게시판 조회
board.write - 게시글 작성
board.manage - 게시판 관리
items.view - 품목 조회
items.create - 품목 등록
items.edit - 품목 수정
items.delete - 품목 삭제
items.master - 품목기준 관리
sales.view - 판매 조회
sales.clients - 거래처 관리
sales.quotes - 견적 관리
sales.pricing - 단가 관리
production.view - 생산 조회
production.screen - 스크린 생산
accounting.view - 회계 조회
accounting.vendors - 거래처 관리
accounting.ledger - 거래처원장
accounting.sales - 매출 관리
accounting.purchase - 매입 관리
accounting.bills - 세금계산서
accounting.deposits - 입금 관리
accounting.withdrawals - 출금 관리
accounting.bank - 은행거래
accounting.card - 카드거래
accounting.receivables - 미수금
accounting.expenses - 예상비용
accounting.baddebt - 대손채권
accounting.report - 일일리포트
accounting.payment - 결제내역
hr.view - 인사 조회
hr.employees - 직원 관리
hr.departments - 부서 관리
hr.cards - 카드 관리
hr.attendance.view - 근태 조회
hr.attendance.manage - 근태 관리
hr.salary - 급여 관리
hr.vacation - 휴가 관리
reports.view - 리포트 조회
reports.analysis - 종합분석
customer.view - 고객센터 조회
customer.notices - 공지사항
customer.faq - FAQ
customer.inquiries - 문의
customer.events - 이벤트
settings.view - 설정 조회
settings.account - 계정정보
settings.accounts - 계정관리
settings.permissions - 권한관리
settings.ranks - 직급관리
settings.titles - 직책관리
settings.attendance - 근태설정
settings.leave - 휴가정책
settings.schedule - 근무일정
settings.notifications - 알림설정
settings.popups - 팝업관리
settings.company - 회사정보
settings.subscription - 구독관리
```
---
## 3. mng 등록용 JSON
```json
[
{
"name": "대시보드",
"url": "/dashboard",
"icon": "layout-dashboard",
"sort_order": 1,
"children": []
},
{
"name": "결재관리",
"url": "/approval",
"icon": "file-check",
"sort_order": 2,
"children": [
{"name": "기안함", "url": "/approval/draft", "icon": "file-edit", "sort_order": 1},
{"name": "결재함", "url": "/approval/inbox", "icon": "inbox", "sort_order": 2},
{"name": "참조함", "url": "/approval/reference", "icon": "eye", "sort_order": 3}
]
},
{
"name": "게시판",
"url": "/board",
"icon": "layout-list",
"sort_order": 3,
"children": [
{"name": "게시판 관리", "url": "/board/board-management", "icon": "settings", "sort_order": 1}
]
},
{
"name": "품목관리",
"url": "/items",
"icon": "package",
"sort_order": 4,
"children": [
{"name": "품목기준관리", "url": "/master-data/item-master-data-management", "icon": "database", "sort_order": 1}
]
},
{
"name": "판매관리",
"url": "/sales",
"icon": "briefcase",
"sort_order": 5,
"children": [
{"name": "거래처관리", "url": "/sales/client-management-sales-admin", "icon": "building-2", "sort_order": 1},
{"name": "견적관리", "url": "/sales/quote-management", "icon": "calculator", "sort_order": 2},
{"name": "단가관리", "url": "/sales/pricing-management", "icon": "dollar-sign", "sort_order": 3}
]
},
{
"name": "생산관리",
"url": "/production",
"icon": "factory",
"sort_order": 6,
"children": [
{"name": "스크린 생산", "url": "/production/screen-production", "icon": "package", "sort_order": 1}
]
},
{
"name": "회계관리",
"url": "/accounting",
"icon": "calculator",
"sort_order": 7,
"children": [
{"name": "거래처관리", "url": "/accounting/vendors", "icon": "building-2", "sort_order": 1},
{"name": "거래처원장", "url": "/accounting/vendor-ledger", "icon": "file-text", "sort_order": 2},
{"name": "매출관리", "url": "/accounting/sales", "icon": "trending-up", "sort_order": 3},
{"name": "매입관리", "url": "/accounting/purchase", "icon": "trending-down", "sort_order": 4},
{"name": "세금계산서", "url": "/accounting/bills", "icon": "receipt", "sort_order": 5},
{"name": "입금관리", "url": "/accounting/deposits", "icon": "arrow-down-circle", "sort_order": 6},
{"name": "출금관리", "url": "/accounting/withdrawals", "icon": "arrow-up-circle", "sort_order": 7},
{"name": "은행거래", "url": "/accounting/bank-transactions", "icon": "landmark", "sort_order": 8},
{"name": "카드거래", "url": "/accounting/card-transactions", "icon": "credit-card", "sort_order": 9},
{"name": "미수금현황", "url": "/accounting/receivables-status", "icon": "alert-circle", "sort_order": 10},
{"name": "예상비용", "url": "/accounting/expected-expenses", "icon": "clock", "sort_order": 11},
{"name": "대손채권회수", "url": "/accounting/bad-debt-collection", "icon": "shield", "sort_order": 12},
{"name": "일일리포트", "url": "/accounting/daily-report", "icon": "file-bar-chart", "sort_order": 13},
{"name": "결제내역", "url": "/payment-history", "icon": "history", "sort_order": 14}
]
},
{
"name": "인사관리",
"url": "/hr",
"icon": "users",
"sort_order": 8,
"children": [
{"name": "직원관리", "url": "/hr/employee-management", "icon": "user", "sort_order": 1},
{"name": "부서관리", "url": "/hr/department-management", "icon": "building", "sort_order": 2},
{"name": "카드관리", "url": "/hr/card-management", "icon": "credit-card", "sort_order": 3},
{"name": "근태현황", "url": "/hr/attendance", "icon": "clock", "sort_order": 4},
{"name": "근태관리", "url": "/hr/attendance-management", "icon": "calendar-check", "sort_order": 5},
{"name": "급여관리", "url": "/hr/salary-management", "icon": "dollar-sign", "sort_order": 6},
{"name": "휴가관리", "url": "/hr/vacation-management", "icon": "calendar", "sort_order": 7}
]
},
{
"name": "리포트",
"url": "/reports",
"icon": "bar-chart-3",
"sort_order": 9,
"children": [
{"name": "종합분석", "url": "/reports/comprehensive-analysis", "icon": "pie-chart", "sort_order": 1}
]
},
{
"name": "고객센터",
"url": "/customer-center",
"icon": "headphones",
"sort_order": 10,
"children": [
{"name": "공지사항", "url": "/customer-center/notices", "icon": "megaphone", "sort_order": 1},
{"name": "FAQ", "url": "/customer-center/faq", "icon": "help-circle", "sort_order": 2},
{"name": "문의하기", "url": "/customer-center/inquiries", "icon": "message-circle", "sort_order": 3},
{"name": "이벤트", "url": "/customer-center/events", "icon": "calendar", "sort_order": 4}
]
},
{
"name": "설정",
"url": "/settings",
"icon": "settings",
"sort_order": 11,
"children": [
{"name": "계정정보", "url": "/settings/account-info", "icon": "user", "sort_order": 1},
{"name": "계정관리", "url": "/settings/accounts", "icon": "users", "sort_order": 2},
{"name": "권한관리", "url": "/settings/permissions", "icon": "shield", "sort_order": 3},
{"name": "직급관리", "url": "/settings/ranks", "icon": "award", "sort_order": 4},
{"name": "직책관리", "url": "/settings/titles", "icon": "badge", "sort_order": 5},
{"name": "근태설정", "url": "/settings/attendance-settings", "icon": "clock", "sort_order": 6},
{"name": "휴가정책", "url": "/settings/leave-policy", "icon": "calendar", "sort_order": 7},
{"name": "근무일정", "url": "/settings/work-schedule", "icon": "calendar-days", "sort_order": 8},
{"name": "알림설정", "url": "/settings/notification-settings", "icon": "bell", "sort_order": 9},
{"name": "팝업관리", "url": "/settings/popup-management", "icon": "layout", "sort_order": 10},
{"name": "회사정보", "url": "/company-info", "icon": "building", "sort_order": 11},
{"name": "구독관리", "url": "/subscription", "icon": "credit-card", "sort_order": 12}
]
}
]
```
---
## 4. 통계 요약
| 항목 | 값 |
|------|-----|
| 대메뉴 | 11개 |
| 중메뉴 | 54개 |
| 총 메뉴 | 65개 |
| 권한 그룹 | 11개 |
| 세부 권한 | 52개 |
---
## 5. 다음 단계
1. **GlobalMenuTemplateSeeder 업데이트**: JSON 데이터로 seeder 작성
2. **권한 테이블 업데이트**: permissions 테이블에 새 권한 추가
3. **React menuTransform.ts 업데이트**: 새 아이콘 매핑 추가
4. **테스트**: 메뉴 렌더링 및 권한 검증
---
*이 문서는 Phase 2 최종 산출물입니다.*

View File

@@ -0,0 +1,300 @@
# React Routes Analysis
> **생성일**: 2025-12-20
> **분석 대상**: react/src/app/[locale]/
---
## 1. 라우트 구조 개요
### 1.1 전체 통계
| 항목 | 값 |
|------|-----|
| 총 페이지 수 | 107개 |
| 인증 필요 페이지 | 104개 ((protected) 그룹) |
| 공개 페이지 | 3개 (login, signup, root) |
| 주요 도메인 | 15개 |
### 1.2 라우트 그룹 분류
```
react/src/app/[locale]/
├── page.tsx # 루트 (→ /dashboard 리다이렉트)
├── login/page.tsx # 로그인
├── signup/page.tsx # 회원가입
└── (protected)/ # 인증 필요 영역
├── dashboard/ # 대시보드
├── accounting/ # 회계 (17개 페이지)
├── approval/ # 결재 (4개 페이지)
├── board/ # 게시판 (8개 페이지)
├── company-info/ # 회사정보 (1개 페이지)
├── customer-center/ # 고객센터 (10개 페이지)
├── dev/ # 개발자 (1개 페이지)
├── hr/ # 인사 (15개 페이지)
├── items/ # 품목관리 (4개 페이지)
├── master-data/ # 마스터데이터 (1개 페이지)
├── payment-history/ # 결제내역 (1개 페이지)
├── production/ # 생산 (4개 페이지)
├── reports/ # 리포트 (2개 페이지)
├── sales/ # 영업 (12개 페이지)
├── settings/ # 설정 (17개 페이지)
├── subscription/ # 구독 (1개 페이지)
└── [...slug]/ # 동적 라우트 (Catch-all)
```
---
## 2. 도메인별 라우트 상세
### 2.1 Dashboard (대시보드)
| 라우트 | 설명 | 타입 |
|--------|------|------|
| /dashboard | 대시보드 | 목록 |
### 2.2 Accounting (회계관리)
| 라우트 | 설명 | 타입 |
|--------|------|------|
| /accounting/bad-debt-collection | 대손채권회수 목록 | 목록 |
| /accounting/bad-debt-collection/new | 대손채권회수 등록 | 등록 |
| /accounting/bad-debt-collection/[id] | 대손채권회수 상세 | 상세 |
| /accounting/bad-debt-collection/[id]/edit | 대손채권회수 수정 | 수정 |
| /accounting/bank-transactions | 은행거래 | 목록 |
| /accounting/bills | 세금계산서 목록 | 목록 |
| /accounting/bills/new | 세금계산서 등록 | 등록 |
| /accounting/bills/[id] | 세금계산서 상세 | 상세 |
| /accounting/card-transactions | 카드거래 | 목록 |
| /accounting/daily-report | 일일리포트 | 목록 |
| /accounting/deposits | 입금 목록 | 목록 |
| /accounting/deposits/[id] | 입금 상세 | 상세 |
| /accounting/expected-expenses | 예상비용 | 목록 |
| /accounting/purchase | 매입 목록 | 목록 |
| /accounting/purchase/[id] | 매입 상세 | 상세 |
| /accounting/receivables-status | 미수금현황 | 목록 |
| /accounting/sales | 매출 목록 | 목록 |
| /accounting/sales/new | 매출 등록 | 등록 |
| /accounting/sales/[id] | 매출 상세 | 상세 |
| /accounting/vendor-ledger | 거래처원장 목록 | 목록 |
| /accounting/vendor-ledger/[id] | 거래처원장 상세 | 상세 |
| /accounting/vendors | 거래처 목록 | 목록 |
| /accounting/vendors/new | 거래처 등록 | 등록 |
| /accounting/vendors/[id] | 거래처 상세 | 상세 |
| /accounting/withdrawals | 출금 목록 | 목록 |
| /accounting/withdrawals/[id] | 출금 상세 | 상세 |
### 2.3 Approval (결재)
| 라우트 | 설명 | 타입 |
|--------|------|------|
| /approval/draft | 기안함 | 목록 |
| /approval/draft/new | 기안 작성 | 등록 |
| /approval/inbox | 결재함 | 목록 |
| /approval/reference | 참조함 | 목록 |
### 2.4 Board (게시판)
| 라우트 | 설명 | 타입 |
|--------|------|------|
| /board | 게시판 목록 | 목록 |
| /board/create | 게시글 작성 | 등록 |
| /board/[id] | 게시글 상세 | 상세 |
| /board/[id]/edit | 게시글 수정 | 수정 |
| /board/board-management | 게시판 관리 | 목록 |
| /board/board-management/new | 게시판 생성 | 등록 |
| /board/board-management/[id] | 게시판 설정 상세 | 상세 |
| /board/board-management/[id]/edit | 게시판 설정 수정 | 수정 |
### 2.5 Customer Center (고객센터)
| 라우트 | 설명 | 타입 |
|--------|------|------|
| /customer-center/events | 이벤트 목록 | 목록 |
| /customer-center/events/[id] | 이벤트 상세 | 상세 |
| /customer-center/faq | FAQ | 목록 |
| /customer-center/inquiries | 문의 목록 | 목록 |
| /customer-center/inquiries/create | 문의 등록 | 등록 |
| /customer-center/inquiries/[id] | 문의 상세 | 상세 |
| /customer-center/inquiries/[id]/edit | 문의 수정 | 수정 |
| /customer-center/notices | 공지사항 목록 | 목록 |
| /customer-center/notices/[id] | 공지사항 상세 | 상세 |
### 2.6 HR (인사관리)
| 라우트 | 설명 | 타입 |
|--------|------|------|
| /hr/attendance | 근태현황 | 목록 |
| /hr/attendance-management | 근태관리 | 목록 |
| /hr/card-management | 카드관리 목록 | 목록 |
| /hr/card-management/new | 카드 등록 | 등록 |
| /hr/card-management/[id] | 카드 상세 | 상세 |
| /hr/card-management/[id]/edit | 카드 수정 | 수정 |
| /hr/department-management | 부서관리 | 목록 |
| /hr/employee-management | 직원관리 목록 | 목록 |
| /hr/employee-management/new | 직원 등록 | 등록 |
| /hr/employee-management/csv-upload | CSV 업로드 | 등록 |
| /hr/employee-management/[id] | 직원 상세 | 상세 |
| /hr/employee-management/[id]/edit | 직원 수정 | 수정 |
| /hr/salary-management | 급여관리 | 목록 |
| /hr/vacation-management | 휴가관리 | 목록 |
### 2.7 Items (품목관리)
| 라우트 | 설명 | 타입 |
|--------|------|------|
| /items | 품목 목록 | 목록 |
| /items/create | 품목 등록 | 등록 |
| /items/[id] | 품목 상세 | 상세 |
| /items/[id]/edit | 품목 수정 | 수정 |
### 2.8 Production (생산관리)
| 라우트 | 설명 | 타입 |
|--------|------|------|
| /production/screen-production | 스크린 생산 목록 | 목록 |
| /production/screen-production/create | 스크린 생산 등록 | 등록 |
| /production/screen-production/[id] | 스크린 생산 상세 | 상세 |
| /production/screen-production/[id]/edit | 스크린 생산 수정 | 수정 |
### 2.9 Reports (리포트)
| 라우트 | 설명 | 타입 |
|--------|------|------|
| /reports | 리포트 | 목록 |
| /reports/comprehensive-analysis | 종합분석 | 상세 |
### 2.10 Sales (판매관리)
| 라우트 | 설명 | 타입 |
|--------|------|------|
| /sales/client-management-sales-admin | 거래처관리 목록 | 목록 |
| /sales/client-management-sales-admin/new | 거래처 등록 | 등록 |
| /sales/client-management-sales-admin/[id] | 거래처 상세 | 상세 |
| /sales/client-management-sales-admin/[id]/edit | 거래처 수정 | 수정 |
| /sales/pricing-management | 단가관리 목록 | 목록 |
| /sales/pricing-management/create | 단가 등록 | 등록 |
| /sales/pricing-management/[id]/edit | 단가 수정 | 수정 |
| /sales/quote-management | 견적관리 목록 | 목록 |
| /sales/quote-management/new | 견적 등록 | 등록 |
| /sales/quote-management/[id] | 견적 상세 | 상세 |
| /sales/quote-management/[id]/edit | 견적 수정 | 수정 |
### 2.11 Settings (설정)
| 라우트 | 설명 | 타입 |
|--------|------|------|
| /settings/account-info | 계정정보 | 상세 |
| /settings/accounts | 계정 목록 | 목록 |
| /settings/accounts/new | 계정 등록 | 등록 |
| /settings/accounts/[id] | 계정 상세 | 상세 |
| /settings/attendance-settings | 근태설정 | 상세 |
| /settings/leave-policy | 휴가정책 | 상세 |
| /settings/notification-settings | 알림설정 | 상세 |
| /settings/permissions | 권한관리 목록 | 목록 |
| /settings/permissions/new | 권한 등록 | 등록 |
| /settings/permissions/[id] | 권한 상세 | 상세 |
| /settings/popup-management | 팝업관리 목록 | 목록 |
| /settings/popup-management/new | 팝업 등록 | 등록 |
| /settings/popup-management/[id] | 팝업 상세 | 상세 |
| /settings/popup-management/[id]/edit | 팝업 수정 | 수정 |
| /settings/ranks | 직급관리 | 목록 |
| /settings/titles | 직책관리 | 목록 |
| /settings/work-schedule | 근무일정 | 상세 |
### 2.12 기타
| 라우트 | 설명 | 타입 |
|--------|------|------|
| /company-info | 회사정보 | 상세 |
| /master-data/item-master-data-management | 품목기준관리 | 목록 |
| /payment-history | 결제내역 | 목록 |
| /subscription | 구독관리 | 상세 |
| /dev/test-urls | 개발자 테스트 | 개발 |
---
## 3. 글로벌 메뉴 vs React 라우트 Gap 분석
### 3.1 React에만 존재하는 라우트 (GlobalMenu 등록 필요)
| React 라우트 | 제안 메뉴명 | 부모 메뉴 |
|--------------|------------|----------|
| /approval/* | 결재관리 | 신규 대메뉴 |
| /board/* | 게시판 | 신규 대메뉴 |
| /customer-center/* | 고객센터 | 신규 대메뉴 |
| /hr/* | 인사관리 | 신규 대메뉴 |
| /items/* | 품목관리 | 기준정보 관리 |
| /settings/* | 설정 | 신규 대메뉴 |
| /subscription | 구독관리 | 설정 |
| /company-info | 회사정보 | 설정 |
| /payment-history | 결제내역 | 회계관리 |
| /reports/* | 리포트 | 신규 대메뉴 |
### 3.2 GlobalMenu에만 존재 (React 미구현)
| 글로벌 메뉴 | URL | 상태 |
|-------------|-----|------|
| 리드관리 | /sales-dept/sales-leads | React 미구현 |
| 매출처관리 | /sales-dept/customer-account-management | React 미구현 |
| 영업실적 | /sales-dept/sales-performance | React 미구현 |
| 수주관리 | /sales/order-management-sales | React 미구현 |
| 현장관리 | /sales/site-management | React 미구현 |
| 구매관리 전체 | /purchase/* | React 미구현 |
| 품질관리 전체 | /quality/* | React 미구현 |
| 자재관리 전체 | /material/* | React 미구현 |
| 장비관리 전체 | /equipment/* | React 미구현 |
| 차량관리 전체 | /vehicle/* | React 미구현 |
### 3.3 URL 불일치 (수정 필요)
| React 라우트 | GlobalMenu URL | 제안 |
|--------------|----------------|------|
| /accounting/vendors | /accounting/client-management | React 기준 사용 |
| /accounting/sales | /accounting/sales-accounting | React 기준 사용 |
| /accounting/purchase | /accounting/purchase-accounting | React 기준 사용 |
| /hr/employee-management | /master-data/employee-management | React 기준 사용 |
| /hr/department-management | /master-data/department-management | React 기준 사용 |
---
## 4. 메뉴 재구조화 제안
### 4.1 신규 대메뉴 구조
```
1. 대시보드 (dashboard)
2. 결재관리 (approval) - 신규
3. 게시판 (board) - 신규
4. 품목관리 (items) - 기존 master-data에서 분리
5. 판매관리 (sales)
6. 생산관리 (production)
7. 회계관리 (accounting)
8. 인사관리 (hr) - 신규
9. 리포트 (reports) - 신규
10. 고객센터 (customer-center) - 신규
11. 설정 (settings) - 신규
```
### 4.2 아이콘 매핑
| 메뉴 | Lucide 아이콘 |
|------|---------------|
| 결재관리 | file-check |
| 게시판 | layout-list |
| 인사관리 | users |
| 리포트 | bar-chart-3 |
| 고객센터 | headphones |
| 설정 | settings |
---
## 5. 다음 단계
1. **menu-list.md 작성**: 최종 메뉴 리스트 정리
2. **mng 등록**: GlobalMenu seeder 업데이트
3. **권한 매핑**: 각 메뉴별 필요 권한 정의
---
*이 문서는 Phase 2 분석 결과입니다.*