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

2.1 KiB

domain last_rule_review_commit last_rule_updated_at
device-console no-commit 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.dartadb 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 없이 방치하지 않는다.