88 lines
2.9 KiB
Markdown
88 lines
2.9 KiB
Markdown
---
|
|
ui_doc_type: view
|
|
view_id: app-shell
|
|
status: 구현됨
|
|
frame: null
|
|
source_evidence:
|
|
- type: code
|
|
path: lib/src/features/app_shell.dart
|
|
notes: "AppSokShell, _BrandHeader, _TopBar, _StatusPill, _pages"
|
|
- type: docs
|
|
path: README.md
|
|
notes: "Current Scaffold feature 목록"
|
|
- type: user
|
|
path: null
|
|
notes: "agent-ui 생성 요청"
|
|
regions:
|
|
- app-shell.nav
|
|
- app-shell.top-bar
|
|
- app-shell.content
|
|
---
|
|
|
|
# App Shell
|
|
|
|
View ID: `app-shell`
|
|
|
|
Frame:
|
|
- 없음
|
|
|
|
Status: `구현됨`
|
|
|
|
## Source Evidence
|
|
|
|
| Type | Path | Notes |
|
|
|------|------|-------|
|
|
| code | `lib/src/features/app_shell.dart` | `AppSokShell`, `_BrandHeader`, `_TopBar`, `_StatusPill`, `_pages` |
|
|
| docs | `README.md` | Current Scaffold feature 목록 |
|
|
| user | 없음 | agent-ui 생성 요청 |
|
|
|
|
## Purpose
|
|
|
|
AppSok의 primary navigation과 현재 feature page를 호스팅한다. shell은 pending install handoff, console target device, install result 같은 cross-page 상태를 소유한다.
|
|
|
|
## Primary Users
|
|
|
|
- Android artifact를 Mac에서 설치하고 확인하는 개발자 또는 QA 담당자
|
|
|
|
## Primary Tasks
|
|
|
|
- 빌드, 디바이스, 콘솔, 설정 화면으로 전환한다.
|
|
- Jenkins/ADB 상태를 top bar에서 확인한다.
|
|
- 빌드 화면에서 준비한 APK를 디바이스 화면으로 넘긴다.
|
|
|
|
## Information Priority
|
|
|
|
1. 현재 선택된 feature page의 제목과 업무 영역
|
|
2. NavigationRail의 AppSok brand 및 주요 화면 목록
|
|
3. Jenkins/ADB 상태 pill
|
|
|
|
## Regions
|
|
|
|
| Region ID | Purpose | Component | Priority | Notes |
|
|
|-----------|---------|-----------|----------|-------|
|
|
| `app-shell.nav` | AppSok brand와 네 개의 primary destination 제공 | `shell-navigation` | high | `빌드`, `디바이스`, `콘솔`, `설정` |
|
|
| `app-shell.top-bar` | 현재 page title과 Jenkins/ADB status 표시 | `status-pill` | medium | 현재 구현은 대기 상태 pill 두 개를 고정 표시 |
|
|
| `app-shell.content` | 선택된 feature page 렌더링 | 없음 | high | `_pages[_selectedIndex].child` |
|
|
|
|
## Actions
|
|
|
|
| Action ID | Trigger | Result | Guard |
|
|
|-----------|---------|--------|-------|
|
|
| `app-shell.select-page` | NavigationRail destination 선택 | 선택 page를 content region에 표시 | 없음 |
|
|
| `app-shell.handoff-install` | build artifact 설치 요청 | pending install 상태를 만들고 `devices`로 이동 | staged APK가 있음 |
|
|
| `app-shell.open-console` | device tile의 logcat action | console target device를 설정하고 `console`로 이동 | device가 ready |
|
|
|
|
## States
|
|
|
|
- loading: child page가 자체 loading state를 표시한다.
|
|
- empty: child page가 자체 empty state를 표시한다.
|
|
- error: child page가 자체 error state를 표시한다.
|
|
- permission-denied: Jenkins credential 문제는 `builds`와 `settings`에서 표시한다.
|
|
|
|
## Open Questions
|
|
|
|
- 없음
|
|
|
|
## Decision History
|
|
|
|
- 2026-06-25: `AppSokShell` 구현을 shell view 기준으로 기록했다.
|