Flutter Web foreground 알림을 준비하기 위해 초기화 옵션과 token prefix 경계를 public API로 고정한다. 포트/환경 기준 문서와 로드맵 정리, agent-task 리뷰 산출물도 함께 반영한다.
82 lines
4 KiB
Markdown
82 lines
4 KiB
Markdown
# Milestone: Flutter Web 알림
|
|
|
|
## 위치
|
|
|
|
- Roadmap: `agent-roadmap/ROADMAP.md`
|
|
- Phase: `agent-roadmap/phase/messaging-runtime/PHASE.md`
|
|
|
|
## 목표
|
|
|
|
`packages/messaging_flutter`를 Flutter Web/Chrome 알림의 source of truth로 확장한다.
|
|
먼저 웹앱이 열려 있는 상태의 browser notification permission, 표시, click/open routing을 패키지 API로 제공하고, 브라우저가 닫힌 상태의 Full Web Push는 별도 후속 범위로 분리한다.
|
|
|
|
## 상태
|
|
|
|
[진행중]
|
|
|
|
## 승격 조건
|
|
|
|
- 없음
|
|
|
|
## 구현 잠금
|
|
|
|
- 상태: 해제
|
|
- 결정 필요: 없음
|
|
|
|
## 범위
|
|
|
|
- `packages/messaging_flutter`의 web platform 등록과 browser notification public API 추가
|
|
- Chrome/Flutter Web foreground 알림 permission, 표시, click/open event를 기존 `onNotification`, `onNotificationOpened`, channel/thread callback 계약에 연결
|
|
- `apps/flutter-test`에 Flutter Web 검증 host scaffold와 민감값 없는 smoke 기준 추가
|
|
- Full Web Push에 필요한 `web_rn-v2` token, service worker, VAPID, core/push-proxy platform 확장은 후속 작업으로 경계화
|
|
|
|
## 기능
|
|
|
|
### Epic: [web-baseline] Web 플랫폼 기준선
|
|
|
|
Flutter Web을 패키지 지원 플랫폼으로 올릴 때 기존 Android-first 계약을 깨지 않도록 기준선을 만든다.
|
|
|
|
- [ ] [plugin-web] `nexo_messaging`에 Flutter Web plugin 등록과 web 전용 구현 파일을 추가한다.
|
|
- [ ] [api-options] 기존 `initialize()` 호출을 깨지 않는 옵션 모델을 추가하고, web notification permission/display 정책과 token prefix 경계를 문서화한다.
|
|
- [ ] [interop] browser `Notification` API 연동은 `package:web` 기반으로 작성하고, Android/iOS/macOS import와 분리한다.
|
|
|
|
### Epic: [foreground] Chrome foreground 알림
|
|
|
|
웹앱이 열려 있는 상태에서 Chrome browser notification을 패키지 책임으로 표시하고 routing event를 재사용한다.
|
|
|
|
- [ ] [permission] Web notification 지원 여부와 permission 상태를 조회/요청하는 API를 제공한다.
|
|
- [ ] [display] foreground payload를 browser notification으로 표시하고 click 이벤트를 `NotificationOpenedEvent`와 host navigation callback으로 변환한다.
|
|
- [ ] [event-map] Firebase foreground message 또는 host-injected payload를 기존 `PushNotificationType` map으로 정규화한다.
|
|
|
|
### Epic: [smoke] Web Smoke
|
|
|
|
민감값 없이 반복 가능한 검증 기준을 만들고, Full Web Push는 별도 설계 항목으로 남긴다.
|
|
|
|
- [ ] [test-host] `apps/flutter-test`에서 Flutter Web smoke scaffold와 permission/display/click 상태 표시를 제공한다.
|
|
- [ ] [auto-test] web interop을 직접 띄우지 않는 Dart API/mapper 단위 테스트를 추가한다. 검증: `bin/test`
|
|
- [ ] [push-follow-up] service worker, VAPID, `web_rn-v2` device token, core/push-proxy platform 분기 설계를 후속 Milestone 후보로 정리한다.
|
|
|
|
## 완료 리뷰
|
|
|
|
- 상태: 없음
|
|
- 요청일: 없음
|
|
- 완료 근거: 없음
|
|
- 리뷰 필요:
|
|
- [ ] 사용자가 완료 결과를 확인했다
|
|
- [ ] archive 이동을 승인했다
|
|
- 리뷰 코멘트: 없음
|
|
|
|
## 범위 제외
|
|
|
|
- 브라우저가 닫힌 상태에서도 수신되는 Full Web Push 구현
|
|
- `services/core`의 push platform 상수 추가, session device id 마이그레이션, push-proxy web target 구현
|
|
- Mattermost webapp UI/Redux 알림 구현 복제
|
|
- 제품 앱 UI 또는 앱별 메시징 화면 구현
|
|
|
|
## 작업 컨텍스트
|
|
|
|
- 관련 경로: `packages/messaging_flutter/`, `apps/flutter-test/`, `services/core/server/public/model/push_notification.go`, `services/push-proxy/server/`
|
|
- 표준선(선택): 1차는 Flutter Web foreground browser notification으로 제한하고, Full Web Push는 `web_rn-v2` token 및 service worker 기반 후속 Milestone으로 분리한다.
|
|
- 선행 작업: 알림 파이프라인 고도화
|
|
- 후속 작업: Full Web Push platform 계약
|
|
- 확인 필요: 실제 Chrome smoke에 사용할 Firebase web config, VAPID key, private host 값은 tracked 문서에 기록하지 않고 host 환경 책임으로 둔다.
|