docs(menu): 사이드바 권한 동기화 지침 추가
- frontend_backend_alignment_report.md에 사이드바/그룹 권한 TODO와 테스트 계획을 정리 - stock_approval_system_api_v4.md에 메뉴/그룹 권한 API 규칙과 응답 예시를 추가 - stock_approval_system_spec_v4.md에 공식 메뉴 표와 기본 그룹 권한 케이스를 기재
This commit is contained in:
@@ -259,6 +259,35 @@ zipcodes ||--o{ customers : addressed
|
||||
| updated_at | 변경일시 | timestamp | - | now() | Y | | | |
|
||||
|
||||
> 메뉴는 계층 구조를 지원하며 `parent_menu_id`가 NULL이면 1차 메뉴로 간주.
|
||||
> 프런트엔드 사이드바와 1:1로 매칭되는 공식 메뉴 목록은 다음과 같다.
|
||||
>
|
||||
> | menu_code | parent_code | menu_name | route_path | display_order | 설명 |
|
||||
> | --- | --- | --- | --- | --- | --- |
|
||||
> | `dashboard` | - | 대시보드 | `/dashboard` | 10 | KPI/요약 카드 |
|
||||
> | `inventory` | - | 재고/입출고 | `/inventory` | 20 | 재고 섹션 루트 |
|
||||
> | `inventory.receipts` | `inventory` | 입고 | `/inventory/receipts` | 10 | 입고 전표 |
|
||||
> | `inventory.issues` | `inventory` | 출고 | `/inventory/issues` | 20 | 출고 전표 |
|
||||
> | `inventory.rentals` | `inventory` | 대여 | `/inventory/rentals` | 30 | 대여/반납 전표 |
|
||||
> | `inventory.manufacturers` | `inventory` | 제조사 관리 | `/inventory/manufacturers` | 40 | 벤더/제조사 |
|
||||
> | `inventory.models` | `inventory` | 장비 모델 관리 | `/inventory/models` | 50 | 제품/장비 모델 |
|
||||
> | `inventory.warehouses` | `inventory` | 입고지 관리 | `/inventory/warehouses` | 60 | 창고/입고지 |
|
||||
> | `inventory.customers` | `inventory` | 회사 관리 | `/inventory/customers` | 70 | 고객/거래처 |
|
||||
> | `settings` | - | 설정 | `/settings` | 30 | 사용자/권한 섹션 루트 |
|
||||
> | `settings.users` | `settings` | 사용자 관리 | `/settings/users` | 10 | 사용자 CRUD |
|
||||
> | `settings.groups` | `settings` | 그룹 관리 | `/settings/groups` | 20 | 그룹 CRUD |
|
||||
> | `settings.menus` | `settings` | 메뉴 관리 | `/settings/menus` | 30 | 메뉴 마스터 관리 |
|
||||
> | `settings.group_permissions` | `settings` | 그룹 메뉴 권한 | `/settings/group-permissions` | 40 | 그룹별 메뉴 권한 |
|
||||
> | `approvals` | - | 결재 | `/approvals` | 40 | 결재 섹션 루트 |
|
||||
> | `approvals.requests` | `approvals` | 결재 관리 | `/approvals/requests` | 10 | 결재 요청 목록 |
|
||||
> | `approvals.steps` | `approvals` | 결재 단계 | `/approvals/steps` | 20 | 결재 단계 관리 |
|
||||
> | `approvals.history` | `approvals` | 결재 이력 | `/approvals/history` | 30 | 결재 이력 |
|
||||
> | `approvals.templates` | `approvals` | 결재 템플릿 | `/approvals/templates` | 40 | 템플릿 관리 |
|
||||
> | `utilities` | - | 유틸리티 | `/utilities` | 50 | 보조 기능 루트 |
|
||||
> | `utilities.zipcodes` | `utilities` | 우편번호 검색 | `/utilities/zipcodes` | 10 | 주소/우편번호 검색 |
|
||||
> | `reports` | - | 보고서 | `/reports` | 60 | 보고서 루트 |
|
||||
> | `reports.overview` | `reports` | 보고서 | `/reports` | 10 | 보고서 요약/다운로드 |
|
||||
>
|
||||
> 위 목록 외 메뉴 코드는 모두 `is_deleted=true`로 유지해 사이드바/드롭다운에 노출되지 않는다.
|
||||
|
||||
---
|
||||
|
||||
@@ -304,6 +333,9 @@ zipcodes ||--o{ customers : addressed
|
||||
| updated_at | 변경일시 | timestamp | - | now() | Y | | | |
|
||||
|
||||
> 각 메뉴에 대한 CRUD 권한을 그룹 단위로 정의하며, 권한 미설정 시 기본적으로 조회만 허용.
|
||||
> 기본 그룹 권한 예시:
|
||||
> - `전사 관리자`: `menus` 테이블에 남아 있는 모든 메뉴에 대해 `can_create=can_read=can_update=can_delete=true`.
|
||||
> - `결재 담당자`(`approval.manage` 스코프 보유): `dashboard`, `inventory.receipts|issues|rentals`, `approvals.requests`, `approvals.steps`, `approvals.history`, `approvals.templates`만 노출되며, `approvals*` 계열 메뉴에 한해 `can_create=true`, `can_update=true`가 부여된다. 기타 메뉴 권한은 `is_deleted=true`로 비활성화해 UI/엔드포인트 모두 접근이 차단된다.
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user