# Milestone: 설치 오류 표시와 복사 리포트 ## 위치 - Roadmap: `agent-roadmap/ROADMAP.md` - Phase: `agent-roadmap/phase/workflow-integration/PHASE.md` ## 목표 1차 MVP에서는 설치 이력을 저장하지 않고, 현재 설치 시도의 성공/실패와 핵심 오류만 바로 확인할 수 있게 한다. 사용자가 명시적으로 복사할 때만 build, device 표시 정보, install result, masking된 오류 메시지를 텍스트 리포트로 만든다. ## 상태 [완료] ## 승격 조건 - 없음 ## 구현 잠금 - 상태: 해제 - SDD: 불필요 - 1차 MVP의 현재 화면 오류 표시와 복사 리포트 범위이며, cross-repo 계약이나 외부 provider 쓰기가 없다. - 결정 필요: 없음 - [x] 1차 MVP에서는 설치 이력을 로컬이나 중앙 감사 로그에 저장하지 않는다. - [x] device 식별자는 저장하거나 관리하지 않고, 현재 화면과 복사 리포트에는 model 중심 표시와 필요 시 masked serial만 사용한다. - [x] logcat/error output은 영구 저장하지 않고, 현재 실행 화면 표시와 사용자가 요청한 masking된 복사 리포트에만 사용한다. ## 범위 - 현재 설치 시도의 success/failure 표시 - 현재 선택된 Jenkins job/build/artifact와 device 표시 정보 - 설치 실패 원인 요약과 오류 메시지 복사/공유 - token, private URL, device serial 원문 masking ## 기능 ### Epic: [history] 현재 설치 결과 설치 이력을 누적 저장하지 않고 현재 실행의 설치 결과만 앱 안에서 확인할 수 있게 한다. - [x] [session-model] 현재 설치 시도 결과를 화면 상태로 표현할 최소 모델을 정의한다. - [x] [local-store] 1차 MVP에서 설치 결과를 로컬 저장소에 영구 저장하지 않도록 한다. - [x] [recent-list] 최근 설치 목록 대신 현재 설치 결과와 실패 요약을 표시한다. - [x] [rerun] 저장된 최근 세션 재실행은 제공하지 않고 사용자가 현재 선택한 build/device로 다시 실행한다. ### Epic: [report] 오류 리포트 실패 원인을 사용자와 개발자가 빠르게 공유할 수 있게 한다. - [x] [error-summary] install stderr/stdout의 주요 실패 원인을 요약 표시한다. - [x] [copy-report] 현재 build/device/install result를 포함한 masking된 텍스트 리포트를 복사할 수 있다. - [x] [masking] token, private URL, device serial masking 규칙을 적용한다. - [x] [retention] 보관 기간과 삭제 버튼 없이 현재 화면 상태만 초기화할 수 있게 한다. ## 완료 리뷰 - 상태: 승인됨 - 요청일: 2026-06-16 - 완료 근거: - 현재 설치 결과 모델과 단일 결과 배너로 history Epic을 충족했다. - masking된 설치 리포트 복사, 실패 요약 표시, 현재 결과 초기화로 report Epic을 충족했다. - local 및 remote Mac runner에서 `flutter analyze`, `flutter test`가 통과했다. - 리뷰 필요: - [x] 사용자가 완료 결과를 확인했다 - [x] archive 이동을 승인했다 - 리뷰 코멘트: 코드 레벨 분석과 local/remote 검증 통과 후 완료 승인으로 archive 이동한다. ## 범위 제외 - 중앙 서버 기반 감사 로그 - 로컬 설치 이력 저장과 최근 세션 목록 - 저장된 최근 세션 기반 재실행 - 지정 device allowlist 또는 device 관리 기능 - logcat 원문 장기 저장 - 조직 개인정보/보안 정책을 우회하는 식별자 저장 ## 작업 컨텍스트 - 관련 경로: `lib/src/features/builds/`, `lib/src/features/devices/`, `lib/src/features/console/`, `lib/src/services/adb_service.dart` - 표준선(선택): 1차 MVP는 설치 이력, device 식별자, logcat/error output을 영구 저장하지 않는다. - 선행 작업: USB 설치와 device 선택, ADB 콘솔과 logcat - 후속 작업: macOS 배포와 sandbox 검증 - 확인 필요: 없음 - 1차 MVP 저장 없음으로 결정됨