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:
@@ -514,6 +514,46 @@
|
||||
|
||||
---
|
||||
|
||||
### 3.9 메뉴 & 그룹 권한
|
||||
- **목적:** 프런트 사이드바/권한 편집 화면에서 동일한 메뉴 목록을 재사용하기 위한 단일 소스.
|
||||
- **엔드포인트:** `GET /menus`, `POST /menus`, `PATCH /menus/{id}`, `DELETE /menus/{id}`, `GET /group-menu-permissions`.
|
||||
- **정렬 규칙:** `parent_menu_id ASC`, `display_order ASC`.
|
||||
- **필수 필드:** `menu_code`, `menu_name`, `parent_menu_id`, `route_path`, `display_order`.
|
||||
- **삭제 정책:** UI에서 제거된 메뉴는 `is_deleted=true`로만 남겨두며 기본 응답에서는 제외한다. 필요 시 `include_deleted=true`로 조회해 비활성 메뉴를 회색 처리한다.
|
||||
|
||||
`GET /menus?active=true&include=parent&order=asc`
|
||||
```json
|
||||
{
|
||||
"items": [
|
||||
{
|
||||
"id": 10,
|
||||
"menu_code": "inventory.receipts",
|
||||
"menu_name": "입고",
|
||||
"parent_menu_id": 2,
|
||||
"route_path": "/inventory/receipts",
|
||||
"display_order": 10,
|
||||
"note": "입고 전표/입고 처리",
|
||||
"is_active": true,
|
||||
"created_at": "2025-11-11T12:00:00Z",
|
||||
"updated_at": "2025-11-11T12:00:00Z",
|
||||
"parent": {
|
||||
"id": 2,
|
||||
"menu_code": "inventory",
|
||||
"menu_name": "재고/입출고",
|
||||
"route_path": "/inventory"
|
||||
}
|
||||
}
|
||||
],
|
||||
"page": 1,
|
||||
"page_size": 50,
|
||||
"total": 18
|
||||
}
|
||||
```
|
||||
|
||||
권한 편집 시 `group_menu_permissions`의 `menu` 객체는 항상 `menu_code`, `menu_name`, `route_path`, `is_deleted`를 포함하며, UI는 이 값을 그대로 드롭다운/트리 항목으로 사용해야 한다. 메뉴 추가/삭제는 먼저 `menus`에 반영한 뒤 각 그룹 권한을 업데이트해야 하며, `menu_code`는 프런트 라우트 키와 반드시 동일해야 한다.
|
||||
|
||||
---
|
||||
|
||||
## 4. 트랜잭션/재고 API
|
||||
리소스: `/stock-transactions`, 보조 리소스: `/transaction-lines`, `/transaction-customers`
|
||||
|
||||
|
||||
Reference in New Issue
Block a user