Files
sam-docs/projects/api-integration/phase-2-menu-extraction/menu-list.md
kent 2d9b02f74e 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>
2025-12-21 01:35:43 +09:00

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. 다음 단계

  1. GlobalMenuTemplateSeeder 업데이트: JSON 데이터로 seeder 작성
  2. 권한 테이블 업데이트: permissions 테이블에 새 권한 추가
  3. React menuTransform.ts 업데이트: 새 아이콘 매핑 추가
  4. 테스트: 메뉴 렌더링 및 권한 검증

이 문서는 Phase 2 최종 산출물입니다.