- 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>
16 KiB
16 KiB
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
[
{
"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. 다음 단계
- GlobalMenuTemplateSeeder 업데이트: JSON 데이터로 seeder 작성
- 권한 테이블 업데이트: permissions 테이블에 새 권한 추가
- React menuTransform.ts 업데이트: 새 아이콘 매핑 추가
- 테스트: 메뉴 렌더링 및 권한 검증
이 문서는 Phase 2 최종 산출물입니다.