feat(messaging-runtime): add Linux/macOS/Windows notification test milestones and update roadmap

This commit is contained in:
toki 2026-06-01 08:49:31 +09:00
parent 0e4dfc6914
commit b8ca657478
8 changed files with 253 additions and 95 deletions

View file

@ -10,9 +10,15 @@
- [계획] iOS 알림 테스트
- Phase: `agent-roadmap/phase/messaging-runtime/PHASE.md`
- 경로: `agent-roadmap/phase/messaging-runtime/milestones/ios-notification-test.md`
- [계획] Desktop 알림 테스트
- [계획] macOS 알림 테스트
- Phase: `agent-roadmap/phase/messaging-runtime/PHASE.md`
- 경로: `agent-roadmap/phase/messaging-runtime/milestones/desktop-notification-test.md`
- 경로: `agent-roadmap/phase/messaging-runtime/milestones/macos-notification-test.md`
- [계획] Windows 알림 테스트
- Phase: `agent-roadmap/phase/messaging-runtime/PHASE.md`
- 경로: `agent-roadmap/phase/messaging-runtime/milestones/windows-notification-test.md`
- [계획] Linux 알림 테스트
- Phase: `agent-roadmap/phase/messaging-runtime/PHASE.md`
- 경로: `agent-roadmap/phase/messaging-runtime/milestones/linux-notification-test.md`
## 선택 규칙

View file

@ -25,9 +25,15 @@ Mattermost server/webapp/push-proxy는 upstream-followable runtime으로 두고,
- [계획] iOS 알림 테스트
- 경로: `agent-roadmap/phase/messaging-runtime/milestones/ios-notification-test.md`
- 요약: iOS/APNs 권한, token, open routing, ACK/dismiss 계약을 scaffold/stub gap과 smoke 기준으로 분리한다.
- [계획] Desktop 알림 테스트
- 경로: `agent-roadmap/phase/messaging-runtime/milestones/desktop-notification-test.md`
- 요약: macOS scaffold/stub 상태의 알림 기준과 Windows/Linux platform gap을 별도로 확인한다.
- [계획] macOS 알림 테스트
- 경로: `agent-roadmap/phase/messaging-runtime/milestones/macos-notification-test.md`
- 요약: macOS scaffold/stub 상태의 알림 기준과 구현 gap, smoke 경계를 확인한다.
- [계획] Windows 알림 테스트
- 경로: `agent-roadmap/phase/messaging-runtime/milestones/windows-notification-test.md`
- 요약: Windows를 공통 플러그인의 지원 대상으로 두고 native API, packaging/test 조건을 정리한다.
- [계획] Linux 알림 테스트
- 경로: `agent-roadmap/phase/messaging-runtime/milestones/linux-notification-test.md`
- 요약: Linux를 공통 플러그인의 지원 대상으로 두고 배포판, desktop environment, notification daemon, packaging/test 조건을 정리한다.
- [스케치] 멀티앱 채널 모델
- 경로: `agent-roadmap/phase/messaging-runtime/milestones/multi-app-channel.md`
- 요약: 추가 앱이 생길 때 사용 채널만 늘려 분기할 수 있는 서비스 모델을 검토한다.

View file

@ -1,84 +0,0 @@
# Milestone: Desktop 알림 테스트
## 위치
- Roadmap: `agent-roadmap/ROADMAP.md`
- Phase: `agent-roadmap/phase/messaging-runtime/PHASE.md`
## 목표
Desktop 환경에서 nexo 알림 계약을 어떤 플랫폼부터 검증할 수 있는지 분리해서 확인한다.
현재 macOS plugin은 scaffold/stub 상태이므로 notification permission, display, open routing의 smoke 기준과 구현 gap을 분리해 다룬다.
Windows/Linux는 현재 platform 등록 여부와 구현 gap을 확인해 별도 후속 작업으로 나눌 수 있게 정리한다.
## 상태
[계획]
## 승격 조건
- 없음
## 구현 잠금
- 상태: 해제
- 결정 필요: 없음
## 범위
- macOS plugin scaffold/stub과 `apps/flutter-test/macos` host 설정의 현재 지원 상태 확인
- macOS notification permission, display, click/open routing, app lifecycle 조건 정리
- Windows/Linux desktop plugin platform 미등록/미구현 상태와 필요한 native notification 구현 후보 확인
- desktop에서 ACK, dismiss, inline reply를 Android와 같은 계약으로 다룰 수 있는지 gap 정리
- OS notification UI가 필요한 수동 검증과 headless 자동화 가능 항목의 경계 정리
## 기능
### Epic: [baseline] Desktop 기준선
Desktop 플랫폼별 지원 상태를 분리해 현재 Milestone의 검증 범위를 고정한다.
- [ ] [platform-matrix] macOS, Windows, Linux의 plugin platform 등록, host scaffold, notification 구현 상태를 표로 정리한다.
- [ ] [macos-host] `packages/messaging_flutter/macos``apps/flutter-test/macos`의 app delegate, entitlement, permission/display 준비 조건을 확인한다.
- [ ] [win-linux-gap] Windows/Linux Flutter plugin platform 추가 여부와 필요한 native notification API 후보를 정리한다.
### Epic: [contract] Desktop 알림 계약
Desktop 알림 event가 Dart API와 host routing callback으로 연결되기 위한 계약을 구체화한다.
- [ ] [display-open] macOS notification display와 click/open routing을 `NotificationOpenedEvent`와 channel/thread callback에 연결하기 위한 event shape를 정리한다.
- [ ] [lifecycle] foreground, background, minimized, terminated 상태에서 desktop notification 처리 기준과 제한을 정리한다.
- [ ] [ack-dismiss] Desktop에서 ACK, dismiss, inline reply를 처리할 수 있는 platform hook과 후속 구현 gap을 분리한다.
### Epic: [smoke] Desktop Smoke
macOS 중심의 검증 기준과 Windows/Linux 후속 판단 기준을 나누어 만든다.
- [ ] [macos-smoke] macOS permission, display, click/open routing smoke checklist와 evidence 경로를 작성한다.
- [ ] [automation-boundary] OS notification UI 때문에 수동 확인이 필요한 항목과 Flutter integration test로 대체 가능한 항목을 분리한다.
- [ ] [follow-up] macOS 구현 보강과 Windows/Linux 신규 platform support 중 후속 Milestone 후보를 정리한다.
## 완료 리뷰
- 상태: 없음
- 요청일: 없음
- 완료 근거: 없음
- 리뷰 필요:
- [ ] 사용자가 완료 결과를 확인했다
- [ ] archive 이동을 승인했다
- 리뷰 코멘트: 없음
## 범위 제외
- iOS/APNs 알림 검증은 iOS 알림 테스트 Milestone에서 다룬다.
- Android FCM 구현 변경은 이 Milestone에서 다루지 않는다.
- Windows/Linux 신규 native implementation은 지원 gap 확인 후 별도 구현 Milestone으로 분리한다.
- 멀티앱 channel/tenant/server 분기 모델과 push credential 분리 정책은 멀티앱 채널 모델에서 결정한다.
## 작업 컨텍스트
- 관련 경로: `packages/messaging_flutter/macos/`, `packages/messaging_flutter/pubspec.yaml`, `packages/messaging_flutter/README.md`, `apps/flutter-test/macos/`, `apps/flutter-test/README.md`
- 표준선(선택): macOS scaffold/stub 상태를 먼저 검증하고, Windows/Linux는 지원 후보와 gap만 확인한다
- 선행 작업: 알림 파이프라인 고도화
- 후속 작업: 멀티앱 채널 모델
- 확인 필요: 없음

View file

@ -20,8 +20,13 @@ Android 중심으로 정리된 nexo 알림 계약을 iOS/APNs 환경에서 어
## 구현 잠금
- 상태: 해제
- 결정 필요: 없음
- 상태: 잠금
- 결정 필요:
- [ ] iOS smoke 기준으로 사용할 Apple Developer Team, bundle identifier, provisioning profile 생성/관리 책임을 정한다.
- [ ] APNs 인증 방식은 key 기반인지 certificate 기반인지, 그리고 인증 자산 보관 위치와 접근 책임을 정한다.
- [ ] Firebase iOS app을 새로 만들지 기존 app을 사용할지, `GoogleService-Info.plist` 제공/보관 방식을 정한다.
- [ ] 실제 기기 smoke를 수행할 기기, Apple 계정, 테스트 앱 설치 방식, evidence 제출 방식을 정한다.
- [ ] CI/headless에서 수행할 검증 범위와 수동 검증으로 남길 APNs delivery 범위를 정한다.
## 범위
@ -70,7 +75,7 @@ iOS native event가 Dart API와 host routing callback으로 연결되기 위한
## 범위 제외
- Android FCM 구현 변경은 이 Milestone에서 다루지 않는다.
- macOS, Windows, Linux desktop 알림 검증은 Desktop 알림 테스트 Milestone에서 다룬다.
- macOS, Windows, Linux desktop 알림 검증은 각 OS별 알림 테스트 Milestone에서 다룬다.
- 멀티앱 channel/tenant/server 분기 모델과 push credential 분리 정책은 멀티앱 채널 모델에서 결정한다.
- iOS native bridge 전체 구현은 gap 확인 후 별도 구현 Milestone으로 분리할 수 있다.
@ -78,6 +83,7 @@ iOS native event가 Dart API와 host routing callback으로 연결되기 위한
- 관련 경로: `packages/messaging_flutter/ios/`, `packages/messaging_flutter/lib/`, `packages/messaging_flutter/README.md`, `apps/flutter-test/ios/`, `apps/flutter-test/README.md`
- 표준선(선택): iOS scaffold/stub 상태를 먼저 명확히 하고, 가능한 smoke 기준과 후속 구현 gap을 분리한다
- 민감값 기준: Apple/Firebase/APNs credential, team id, profile, token, private host 값은 tracked 문서에 쓰지 않고 책임 경계와 evidence 위치만 기록한다
- 선행 작업: 알림 파이프라인 고도화
- 후속 작업: 멀티앱 채널 모델
- 확인 필요: 없음
- 확인 필요: 프로비저닝, APNs 인증, Firebase iOS 설정, 실제 기기/CI smoke 환경 결정

View file

@ -0,0 +1,68 @@
# Milestone: Linux 알림 테스트
## 위치
- Roadmap: `agent-roadmap/ROADMAP.md`
- Phase: `agent-roadmap/phase/messaging-runtime/PHASE.md`
## 목표
Linux 환경에서 nexo 알림 계약을 공통 플러그인의 지원 대상으로 포함하기 위해 필요한 배포판, desktop environment, notification daemon, packaging/test 조건을 정리한다.
지원 여부 자체가 아니라 Linux에서 같은 Dart 계약을 제공하기 위한 구현 방식, 테스트 환경, 후속 구현 단위를 확정한다.
## 상태
[계획]
## 승격 조건
- 없음
## 구현 잠금
- 상태: 잠금
- 결정 필요:
- [ ] Linux smoke 대상 배포판, desktop environment, notification daemon, 테스트 장비 책임을 정한다.
- [ ] Linux native notification 연동 방식과 package/runtime dependency 기준을 정한다.
- [ ] Linux 구현을 macOS/Windows 이후 순차 진행할지, iOS/macOS와 병렬로 baseline 조사할지 우선순위를 정한다.
## 범위
- Linux Flutter plugin platform 등록 여부와 필요한 native notification 구현 후보 확인
- Linux notification display, click/open routing, lifecycle 처리를 위한 구현 gap 정리
- Linux에서 ACK, dismiss, inline reply를 Android와 같은 계약으로 다룰 수 있는지 gap 정리
- 실제 OS UI 수동 검증과 자동화 가능 항목의 경계 초안 작성
## 기능
### Epic: [baseline] Linux 기준선
Linux 알림 지원에 필요한 platform baseline을 확인한다.
- [ ] [platform-state] Linux plugin platform 등록 여부와 host scaffold 필요 범위를 정리한다.
- [ ] [native-api] Linux notification daemon/native 연동 후보와 package/runtime 제약을 정리한다.
- [ ] [test-env] 배포판, desktop environment, 테스트 장비, 수동/자동 smoke 가능 범위를 정리한다.
## 완료 리뷰
- 상태: 없음
- 요청일: 없음
- 완료 근거: 없음
- 리뷰 필요:
- [ ] 사용자가 완료 결과를 확인했다
- [ ] archive 이동을 승인했다
- 리뷰 코멘트: 없음
## 범위 제외
- macOS scaffold/stub smoke는 macOS 알림 테스트 Milestone에서 다룬다.
- Windows 알림 지원은 Windows 알림 테스트 Milestone에서 다룬다.
- Linux native implementation 전체 완성은 baseline 확인 후 별도 구현 계획으로 분리할 수 있다.
## 작업 컨텍스트
- 관련 경로: `packages/messaging_flutter/pubspec.yaml`, `packages/messaging_flutter/README.md`, `apps/flutter-test/README.md`
- 표준선(선택): Linux는 공통 플러그인의 지원 대상이며, 먼저 배포판/desktop environment, notification daemon, packaging/test 조건을 정리한 뒤 구현 단위를 확정한다
- 선행 작업: 알림 파이프라인 고도화
- 후속 작업: Linux native notification 구현 후보
- 확인 필요: Linux 배포판/desktop environment, native 연동 방식, package/runtime dependency, 진행 우선순위

View file

@ -0,0 +1,87 @@
# Milestone: macOS 알림 테스트
## 위치
- Roadmap: `agent-roadmap/ROADMAP.md`
- Phase: `agent-roadmap/phase/messaging-runtime/PHASE.md`
## 목표
macOS 환경에서 nexo 알림 계약을 어느 수준까지 검증할 수 있는지 확인한다.
현재 macOS plugin은 scaffold/stub 상태이므로 production-ready로 단정하지 않고, notification permission, display, click/open routing, app lifecycle 조건을 구현 gap과 smoke 기준으로 나누어 정리한다.
## 상태
[계획]
## 승격 조건
- 없음
## 구현 잠금
- 상태: 잠금
- 결정 필요:
- [ ] macOS smoke를 수행할 macOS 버전과 테스트 장비 책임을 정한다.
- [ ] Apple Developer Team, signing, notarization 필요 여부와 entitlement 관리 책임을 정한다.
- [ ] macOS notification smoke를 실제 OS UI 수동 검증으로 볼지, Flutter/widget/integration test와 어떤 경계로 나눌지 정한다.
- [ ] macOS에서 ACK, dismiss, inline reply를 같은 Milestone에서 gap 확인만 할지 후속 구현 후보까지 구체화할지 정한다.
## 범위
- macOS plugin scaffold/stub과 `apps/flutter-test/macos` host 설정의 현재 지원 상태 확인
- macOS notification permission, display, click/open routing, app lifecycle 조건 정리
- macOS에서 ACK, dismiss, inline reply를 Android와 같은 계약으로 다룰 수 있는지 gap 정리
- OS notification UI가 필요한 수동 검증과 headless 자동화 가능 항목의 경계 정리
## 기능
### Epic: [baseline] macOS 기준선
macOS 알림이 Android/iOS와 같은 계약으로 검증되기 전에 필요한 platform baseline을 확인한다.
- [ ] [platform-state] `packages/messaging_flutter/macos``apps/flutter-test/macos`의 scaffold, 등록 지점, no-op gap을 정리한다.
- [ ] [macos-host] app delegate, entitlement, permission/display 준비 조건을 확인한다.
- [ ] [device-limits] macOS 버전, signing/notarization, headless 환경에서 가능한 검증과 불가능한 검증을 구분한다.
### Epic: [contract] macOS 알림 계약
macOS notification event가 Dart API와 host routing callback으로 연결되기 위한 계약을 구체화한다.
- [ ] [display-open] macOS notification display와 click/open routing을 `NotificationOpenedEvent`와 channel/thread callback에 연결하기 위한 event shape를 정리한다.
- [ ] [lifecycle] foreground, background, minimized, terminated 상태에서 macOS notification 처리 기준과 제한을 정리한다.
- [ ] [ack-dismiss] macOS에서 ACK, dismiss, inline reply를 처리할 수 있는 platform hook과 후속 구현 gap을 분리한다.
### Epic: [smoke] macOS Smoke
구현 gap을 숨기지 않고 macOS에서 반복 가능한 수동/자동 smoke 기준을 만든다.
- [ ] [manual-smoke] macOS permission, display, click/open routing smoke checklist와 evidence 경로를 작성한다.
- [ ] [automation-boundary] OS notification UI 때문에 수동 확인이 필요한 항목과 Flutter integration test로 대체 가능한 항목을 분리한다.
- [ ] [follow-up] smoke 결과에 따라 macOS native bridge 구현, host 설정 보강, 문서 보강 중 후속 Milestone 후보를 정리한다.
## 완료 리뷰
- 상태: 없음
- 요청일: 없음
- 완료 근거: 없음
- 리뷰 필요:
- [ ] 사용자가 완료 결과를 확인했다
- [ ] archive 이동을 승인했다
- 리뷰 코멘트: 없음
## 범위 제외
- iOS/APNs 알림 검증은 iOS 알림 테스트 Milestone에서 다룬다.
- Android FCM 구현 변경은 이 Milestone에서 다루지 않는다.
- Windows/Linux desktop 알림 검증과 신규 native implementation은 각 OS별 Milestone에서 다룬다.
- 멀티앱 channel/tenant/server 분기 모델과 push credential 분리 정책은 멀티앱 채널 모델에서 결정한다.
## 작업 컨텍스트
- 관련 경로: `packages/messaging_flutter/macos/`, `packages/messaging_flutter/pubspec.yaml`, `packages/messaging_flutter/README.md`, `apps/flutter-test/macos/`, `apps/flutter-test/README.md`
- 표준선(선택): macOS scaffold/stub 상태를 먼저 검증하고, 가능한 smoke 기준과 후속 구현 gap을 분리한다
- 민감값 기준: Apple credential, team id, profile, private host 값은 tracked 문서에 쓰지 않고 책임 경계와 evidence 위치만 기록한다
- 선행 작업: 알림 파이프라인 고도화
- 후속 작업: Windows 알림 테스트, Linux 알림 테스트, 멀티앱 채널 모델
- 확인 필요: macOS 버전/장비, signing/notarization 필요 여부, 수동/자동 smoke 경계 결정

View file

@ -19,7 +19,8 @@ server/webapp/push-proxy는 upstream-followable runtime으로 두고, 앱별 내
- [ ] 첫 번째 외부 소비 앱 또는 내부 테스트 앱 후보를 정한다.
- [ ] iOS 알림 테스트 Milestone에서 iOS/APNs 알림 smoke 기준과 구현 gap을 확인한다.
- [ ] Desktop 알림 테스트 Milestone에서 macOS/Windows/Linux desktop 알림 smoke 기준과 구현 gap을 확인한다.
- [ ] macOS 알림 테스트 Milestone에서 macOS desktop 알림 smoke 기준과 구현 gap을 확인한다.
- [ ] Windows/Linux 알림 테스트 Milestone에서 각 OS의 native API, packaging/test 조건과 구현 단위를 확인한다.
- [ ] 앱별 channel namespace, team/server 분리, tenant 분리 중 어떤 모델을 쓸지 결정한다.
- [ ] 앱별 push credential과 routing callback 분리 기준을 정한다.
- [ ] 구현 가능한 후속 Milestone을 API, server config, client integration 중 하나 이상으로 나눈다.
@ -76,6 +77,6 @@ server/webapp/push-proxy는 upstream-followable runtime으로 두고, 앱별 내
- 관련 경로: `services/core/`, `packages/messaging_flutter/`, `apps/flutter-test/`
- 표준선(선택): 먼저 channel 기반 최소 모델을 검토하고, 운영 비용이 커질 때 tenant/server 분리를 검토한다
- 선행 작업: 메시징 계약 표준화, 알림 파이프라인 고도화, iOS 알림 테스트, Desktop 알림 테스트
- 선행 작업: 메시징 계약 표준화, 알림 파이프라인 고도화, iOS 알림 테스트, macOS 알림 테스트, Windows 알림 테스트, Linux 알림 테스트
- 후속 작업: 업스트림 런타임 운영화 Phase의 CI/CD와 운영 업데이트 루프
- 확인 필요: 앱별 분기 단위와 credential 분리 기준

View file

@ -0,0 +1,68 @@
# Milestone: Windows 알림 테스트
## 위치
- Roadmap: `agent-roadmap/ROADMAP.md`
- Phase: `agent-roadmap/phase/messaging-runtime/PHASE.md`
## 목표
Windows 환경에서 nexo 알림 계약을 공통 플러그인의 지원 대상으로 포함하기 위해 필요한 platform 등록, native notification API, packaging/test 조건을 정리한다.
지원 여부 자체가 아니라 Windows에서 같은 Dart 계약을 제공하기 위한 구현 방식, 테스트 환경, 후속 구현 단위를 확정한다.
## 상태
[계획]
## 승격 조건
- 없음
## 구현 잠금
- 상태: 잠금
- 결정 필요:
- [ ] Windows smoke 대상 OS 버전, 테스트 장비, 계정/권한 책임을 정한다.
- [ ] Windows native notification API와 app packaging 기준을 정한다.
- [ ] Windows 구현을 macOS 이후 순차 진행할지, iOS/macOS와 병렬로 baseline 조사할지 우선순위를 정한다.
## 범위
- Windows Flutter plugin platform 등록 여부와 필요한 native notification 구현 후보 확인
- Windows notification display, click/open routing, lifecycle 처리를 위한 구현 gap 정리
- Windows에서 ACK, dismiss, inline reply를 Android와 같은 계약으로 다룰 수 있는지 gap 정리
- 실제 OS UI 수동 검증과 자동화 가능 항목의 경계 초안 작성
## 기능
### Epic: [baseline] Windows 기준선
Windows 알림 지원에 필요한 platform baseline을 확인한다.
- [ ] [platform-state] Windows plugin platform 등록 여부와 host scaffold 필요 범위를 정리한다.
- [ ] [native-api] Windows native notification API 후보와 packaging 제약을 정리한다.
- [ ] [test-env] Windows 버전, 테스트 장비, 수동/자동 smoke 가능 범위를 정리한다.
## 완료 리뷰
- 상태: 없음
- 요청일: 없음
- 완료 근거: 없음
- 리뷰 필요:
- [ ] 사용자가 완료 결과를 확인했다
- [ ] archive 이동을 승인했다
- 리뷰 코멘트: 없음
## 범위 제외
- macOS scaffold/stub smoke는 macOS 알림 테스트 Milestone에서 다룬다.
- Linux 알림 지원은 Linux 알림 테스트 Milestone에서 다룬다.
- Windows native implementation 전체 완성은 baseline 확인 후 별도 구현 계획으로 분리할 수 있다.
## 작업 컨텍스트
- 관련 경로: `packages/messaging_flutter/pubspec.yaml`, `packages/messaging_flutter/README.md`, `apps/flutter-test/README.md`
- 표준선(선택): Windows는 공통 플러그인의 지원 대상이며, 먼저 platform 등록, native API, packaging/test 조건을 정리한 뒤 구현 단위를 확정한다
- 선행 작업: 알림 파이프라인 고도화
- 후속 작업: Windows native notification 구현 후보
- 확인 필요: Windows OS 버전/장비, native API, packaging/test 기준, 진행 우선순위