nexo/agent-roadmap/phase/messaging-runtime/milestones/flutter-web-notification.md
toki 098abcaa99 feat(messaging): Web 전경 알림 표시를 추가한다
브라우저 전경 알림 표시와 click routing의 첫 구현을 남기고, 리뷰에서 확인된 실제 web click bridge 보완 계획을 함께 기록한다.
2026-06-07 17:30:25 +09:00

4 KiB

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 환경 책임으로 둔다.