# Milestone: Teams deep link 설치 진입

## 위치

- Roadmap: `agent-roadmap/ROADMAP.md`
- Phase: `agent-roadmap/phase/workflow-integration/PHASE.md`

## 목표

Teams/Jenkins 알림에 포함된 `appsok://` 링크를 클릭하면 AppSok이 특정 job/build/artifact를 열고 설치 준비 화면으로 진입한다. QR을 폰으로 스캔하는 대신 Mac에서 바로 설치 흐름을 시작하게 한다.

## 상태

[보류]

## 승격 조건

- 없음

## 구현 잠금

- 상태: 잠금
- 결정 필요: 아래 체크리스트
  - [ ] Teams 메시지에 추가할 deep link payload 형식을 확정한다.
  - [ ] Jenkins 알림 템플릿 또는 Teams webhook 메시지를 수정할 수 있는 주체를 확인한다.
  - [ ] deep link에 job/build/artifact 식별자만 넣을지, Jenkins URL 전체를 넣을지 결정한다.

## 범위

- `appsok://install?...` URL scheme payload 정의
- app link 수신과 route 처리
- job/build/artifact preselect
- credential 없을 때 로그인/설정 화면으로 안전하게 유도

## 기능

### Epic: [payload] deep link 규격

Teams/Jenkins가 만들고 AppSok이 해석할 URL 형식을 정한다.

- [ ] [schema] `appsok://install` payload parameter를 문서화한다.
- [ ] [validation] job/build/artifact 값이 누락되거나 조작된 경우 안전하게 거부한다.
- [ ] [no-secret] deep link에 Jenkins token, session cookie, private credential을 넣지 않는다.
- [ ] [examples] Teams 메시지에 넣을 예시 링크를 README 또는 roadmap context에 남긴다.

### Epic: [routing] 앱 진입 처리

앱 실행 중/미실행 상태 모두에서 deep link를 설치 흐름으로 연결한다.

- [ ] [receive] macOS `appsok://` callback을 Flutter 앱에서 수신한다.
- [ ] [preselect] payload가 가리키는 build/artifact를 조회해 빌드 화면에서 선택 상태로 표시한다.
- [ ] [auth-gate] credential이 없거나 권한이 없으면 설치 대신 로그인/설정으로 유도한다.
- [ ] [fallback] deep link 처리가 실패하면 사용자가 수동으로 job/build를 찾을 수 있다.

## 완료 리뷰

- 상태: 보류
- 요청일: 없음
- 완료 근거: 모든 기능 Task와 Task 안에 명시된 검증 충족 후 기록한다.
- 리뷰 필요:
  - [ ] 사용자가 완료 결과를 확인했다
  - [ ] archive 이동을 승인했다
- 리뷰 코멘트: 이전에 만든 MVP 기능의 사용자 테스트와 확인이 먼저 필요해, Teams deep link 구현은 뒤로 미룬다.

## 범위 제외

- Jenkins/Teams 알림 시스템 자체의 운영 권한 변경
- 중앙 인증 broker 구현
- deep link로 token 또는 세션을 전달하는 방식

## 작업 컨텍스트

- 관련 경로: `macos/Runner/Info.plist`, `lib/src/app.dart`, `lib/src/features/builds/`, `lib/src/services/jenkins_client.dart`
- 표준선(선택): deep link는 식별자만 전달하고 실제 권한 확인은 Jenkins credential로 다시 수행한다.
- 선행 작업: Artifact 탐색과 다운로드
- 후속 작업: 설치 세션 이력과 오류 리포트
- 작업 현황:
  - 2026-06-14: `ADB 콘솔과 logcat` 완료 후 다음 활성 Milestone으로 지정했다.
  - 2026-06-14: macOS build/CI와 인증 빌드 gate를 먼저 확인하기 위해 `macOS 빌드 CI와 인증 빌드` 뒤로 순서를 조정했다.
  - 2026-06-14: `macOS 빌드 CI와 인증 빌드` 완료 승인 및 archive 이동 후 다음 활성 Milestone으로 지정했다.
  - 2026-06-16: 이전에 만든 MVP 기능의 사용자 테스트가 먼저 필요해 `[보류]`로 전환하고 `설치 세션 이력과 오류 리포트` 뒤로 미뤘다.
- 확인 필요: Teams payload 형식, Jenkins 알림 템플릿 변경 가능 여부
