# KBX v10 Application Shell & Navigation

## 목적

화면 내부 UX가 표준화되어도 메뉴, 작업 전환, 최근업무, 즐겨찾기, 미저장 화면 종료가 제각각이면 제품은 하나의 시스템처럼 느껴지지 않는다. v10은 Global Header, Side Navigation, Workspace Tabs, 메뉴검색을 하나의 Shell 계약으로 고정한다.

## 화면 문법

```text
┌──────────────────────────────────────────────────────────────────────┐
│ KBX │ OMS │ 메뉴 검색 (Ctrl+K)                  작업 2 │ 알림 3 │ 사용자 │
├──────────┬───────────────────────────────────────────────────────────┤
│ 즐겨찾기 │ 주문관리 × │ 재고현황 × │ 구매등록 ● × │ 더보기 2      │
│ 최근메뉴 ├───────────────────────────────────────────────────────────┤
│          │                                                           │
│ OMS      │                    업무 화면                              │
│  주문    │                                                           │
│  클레임  │                                                           │
│ ERP      │                                                           │
│ WMS      │                                                           │
└──────────┴───────────────────────────────────────────────────────────┘
```

## 핵심 규칙

1. 메뉴검색은 메뉴명, ScreenId, 업무 키워드만 검색한다. 자연어 Command 실행기가 아니다.
2. `Ctrl+K`는 가속키이며 상단 메뉴검색 버튼이 항상 존재한다.
3. 권한 없는 메뉴는 Side Navigation, 검색, 즐겨찾기, 최근메뉴에서 제외한다.
4. Workspace Tab은 `screenId + path`로 식별한다. Router URL과 별도 가상 화면 상태를 만들지 않는다.
5. 화면 표시 Tab은 기본 10개이며 초과 화면은 `더보기 N`에 보관한다. 강제 종료하지 않는다.
6. Transaction이 dirty인 상태에서 Tab을 닫으면 계속 편집 / 변경 버리기 / 저장 후 이동을 제공한다.
7. 즐겨찾기와 최근메뉴는 업무 이동을 단축하는 기능이며 Form Layout 자유편집으로 확장하지 않는다.
8. WMS 현장 Task URL은 Side Menu에 직접 노출하지 않는다. `WMS-WORK-001` 작업 Queue에서 실제 Task를 선택해 진입한다.

## Source of Truth

- Screen identity: Screen Registry
- 메뉴 진입 가능 화면: Navigation Catalog
- 현재 URL: Vue Router
- 열린 업무: Workspace Store
- 화면 저장 여부: 개별 화면 Dirty State + Workspace Lifecycle Registry

서로 중복 상태를 만들지 않고 명시적으로 연결한다.
