79 lines
3.1 KiB
Markdown
79 lines
3.1 KiB
Markdown
# 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 이동을 승인했다
|
|
- 리뷰 코멘트: 없음
|
|
|
|
## 범위 제외
|
|
|
|
- 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으로 지정했다.
|
|
- 확인 필요: Teams payload 형식, Jenkins 알림 템플릿 변경 가능 여부
|