3 KiB
3 KiB
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://installpayload 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 탐색과 다운로드
- 후속 작업: 설치 세션 이력과 오류 리포트
- 확인 필요: Teams payload 형식, Jenkins 알림 템플릿 변경 가능 여부