appsok/agent-ui/definition/views/devices/index.md

95 lines
3.7 KiB
Markdown

---
ui_doc_type: view
view_id: devices
status: 구현됨
frame: null
source_evidence:
- type: code
path: lib/src/features/devices/devices_page.dart
notes: "DevicesPage, _DeviceTile, _PendingInstallBanner, _InstallResultBanner"
- type: docs
path: README.md
notes: "Android device 목록 조회와 adb install scope"
- type: user
path: null
notes: "agent-ui 생성 요청"
regions:
- devices.pending-install
- devices.install-result
- devices.filter-bar
- devices.device-grid
---
# Devices
View ID: `devices`
Frame:
- 없음
Status: `구현됨`
## Source Evidence
| Type | Path | Notes |
|------|------|-------|
| code | `lib/src/features/devices/devices_page.dart` | `DevicesPage`, `_DeviceTile`, `_PendingInstallBanner`, `_InstallResultBanner` |
| docs | `README.md` | Android device 목록 조회와 `adb install` scope |
| user | 없음 | agent-ui 생성 요청 |
## Purpose
USB로 연결된 Android device를 상태별로 확인하고, 빌드 화면에서 넘어온 pending APK를 ready device에 설치한다. 최근 설치 결과와 masked report copy action도 제공한다.
## Primary Users
- 설치 대상 Android device를 선택하고 설치 결과를 확인하는 개발자 또는 QA 담당자
## Primary Tasks
- device 목록을 새로고침하고 ready/attention 상태로 필터링한다.
- pending APK를 ready device에 설치한다.
- 설치 성공/실패 결과를 확인하고 리포트를 복사한다.
- 특정 device의 logcat을 console 화면에서 연다.
## Information Priority
1. pending install 또는 현재 설치 결과 banner
2. ready/attention filter와 refresh action
3. device tile grid의 readiness, serial, metadata, install/logcat action
## Regions
| Region ID | Purpose | Component | Priority | Notes |
|-----------|---------|-----------|----------|-------|
| `devices.pending-install` | 설치 대기 APK와 취소 action 표시 | `install-banner` | high | `pending-install-banner` |
| `devices.install-result` | 현재 설치 결과, masked output, copy/clear action 표시 | `install-banner` | high | `install-result-banner` |
| `devices.filter-bar` | 전체/준비됨/대기 filter와 새로고침 | 없음 | medium | `SegmentedButton`, `device-refresh-button` |
| `devices.device-grid` | device tile grid와 install/logcat action | `device-tile` | high | `GridView.builder` |
## Actions
| Action ID | Trigger | Result | Guard |
|-----------|---------|--------|-------|
| `devices.change-filter` | SegmentedButton 선택 | 전체/준비됨/대기 device 목록을 표시 | 없음 |
| `devices.refresh` | 새로고침 button | ADB device loader 재실행 | loading 중이 아님 |
| `devices.cancel-pending-install` | pending banner close button | pending APK cleanup 요청 | install 진행 중이 아님 |
| `devices.install` | device tile 설치 icon | selected device에 pending APK 설치 | pending install 있음, device ready, installer 있음 |
| `devices.open-logcat` | device tile logcat icon | console view로 이동하고 device를 선택 | device ready |
| `devices.copy-install-report` | 설치 결과 copy icon | masked report를 clipboard로 복사 | install result 있음 |
| `devices.clear-install-result` | 설치 결과 close icon | 현재 install result banner 제거 | install result 있음 |
## States
- loading: device refresh 중 linear progress와 empty grid loading indicator를 표시한다.
- empty: device가 없으면 empty view를 표시한다.
- error: ADB device load error와 retry action을 표시한다.
- permission-denied: ADB 권한/상태 문제는 device state chip과 error로 표현한다.
## Open Questions
- 없음
## Decision History
- 2026-06-25: ADB device grid와 install handoff 상태를 `devices` view로 기록했다.