appsok/agent-ops/rules/project/domain/device-console/rules.md

50 lines
2.1 KiB
Markdown

---
domain: device-console
last_rule_review_commit: no-commit
last_rule_updated_at: 2026-06-08
---
# device-console
## 목적 / 책임
USB로 연결된 Android 기기 조회, APK 설치, logcat/ADB 콘솔 경험을 담당한다.
## 포함 경로
- `lib/src/features/devices/` — ADB device 목록과 설치 대상 선택 UI
- `lib/src/features/console/` — logcat viewer와 필터 UI
- `lib/src/models/adb_device.dart` — ADB device 모델
- `lib/src/services/adb_service.dart``adb devices`, `adb install`, `adb logcat` 실행
## 제외 경로
- `lib/src/services/jenkins_client.dart` — Jenkins API 호출은 `artifact-flow` 책임
- `lib/src/features/builds/` — artifact 선택과 다운로드는 `artifact-flow` 책임
- `macos/` — sandbox, process 실행, USB 접근 정책은 `macos-platform` 책임
## 주요 구성 요소
- `DevicesPage` — 연결 기기 목록 UI
- `ConsolePage` — logcat console UI
- `AdbDevice` — serial/state/model/product metadata
- `AdbService` — ADB command 실행 wrapper
## 유지할 패턴
- 화면 코드에서 `Process.run` 또는 `Process.start`를 직접 호출하지 않고 `AdbService`를 통한다.
- `adb devices -l` parsing은 다양한 state(`device`, `unauthorized`, `offline`)를 허용한다.
- 설치 결과는 exit code, stdout, stderr를 모두 보존해 사용자에게 원인 파악 정보를 제공한다.
- logcat stream은 pause/clear/filter 같은 UI 상태와 process lifetime을 분리해 설계한다.
## 다른 도메인과의 경계
- **artifact-flow**: 설치할 APK 경로만 입력으로 받고 Jenkins 인증/다운로드 상태에는 의존하지 않는다.
- **app-shell**: 연결된 device 수와 ADB 상태 요약만 shell로 전달한다.
- **macos-platform**: 앱 sandbox 안에서 ADB binary 실행 가능 여부는 platform domain과 함께 검토한다.
## 금지 사항
- device serial, logcat 원문에 secret이 포함될 수 있으므로 불필요하게 tracked 파일에 저장하지 않는다.
- split APK/APKS/AAB 설치를 단일 APK 설치 흐름에 섞어 임시 처리하지 않는다.
- 무한 logcat stream을 dispose 없이 방치하지 않는다.