appsok/agent-ui/definition/views/app-shell/index.md

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 기준으로 기록했다.