nexo/agent-ops/rules/project/domain/messaging-flutter/rules.md
toki 6ca7989169 feat: runtime image validation & domain rules update
- Add mattermost-app and push-proxy-service domain rules
- Add bin/publish-runtime-images script
- Add runtime-image-validation documentation
- Update agent-ops domain rules and project rules
- Remove outdated 01_image_publish task files
- Update docs/README.md
2026-05-28 10:41:06 +09:00

3.2 KiB

domain last_rule_review_commit last_rule_updated_at
messaging-flutter 4b0222479d 2026-05-28

messaging-flutter

목적 / 책임

nexo의 메인 산출물인 메시징/알림 Flutter 플러그인 패키지를 담당한다. FCM 수신, 알림 표시, tap/open 이벤트, inline reply, dismiss 처리, ACK 전달, token/key 저장을 앱별 구현으로 흩어지지 않게 모아 여러 Flutter 앱이 재사용할 수 있게 한다.

포함 경로

  • packages/messaging_flutter/lib/ — public Dart API와 Flutter-facing behavior
  • packages/messaging_flutter/android/ — Android native plugin implementation
  • packages/messaging_flutter/ios/, packages/messaging_flutter/macos/ — platform scaffold와 stub
  • packages/messaging_flutter/test/ — Dart API contract tests
  • packages/messaging_flutter/docs/ — plugin 개발 및 검증 문서
  • packages/messaging_flutter/pubspec.yaml — plugin package metadata

제외 경로

  • apps/flutter-test/ — plugin을 검증하는 테스트용 Flutter 앱 책임
  • apps/mattermost/ — 원래 Mattermost 앱 repository clone 책임
  • services/core/ — Mattermost 서버 repository clone 책임
  • services/push-proxy/ — Mattermost push-proxy repository clone 책임
  • root bin/ — workspace-level command entrypoint 책임

주요 구성 요소

  • plugin public API — singleton access, event stream, token/key action channel
  • NotificationOpenedEvent — notification open payload parsing
  • Android FCM service — Android FCM 수신 진입점
  • NotificationReplyBroadcastReceiver, NotificationDismissService — Android action handling
  • ReceiptDelivery — ACK delivery 책임

유지할 패턴

  • public package/import/native identifier는 nexo 계열 이름으로 전환하되, host app과 native 등록 지점을 같은 계획 안에서 함께 갱신한다.
  • Android가 production target이며 iOS/macOS는 stub 상태임을 명확히 보고한다.
  • host app이 해야 할 Firebase 초기화, token 등록, navigation 연결은 README의 Host App Responsibilities와 맞춘다.
  • 패키지를 이 저장소의 제품 중심으로 보고, 앱별 제품 UI나 business logic은 소비 앱 책임으로 둔다.
  • native event type은 Dart API의 PushNotificationType과 호환되게 유지한다.

다른 도메인과의 경계

  • client-app: apps/flutter-test는 plugin 검증용 테스트 앱이며 plugin 내부 push 처리 로직을 복제하지 않는다.
  • core-service: Mattermost 기반 runtime과의 계약은 payload, signing key, auth token, ACK/reply endpoint 수준으로 다룬다.
  • workspace-ops: 공통 bin/test, bin/lint가 plugin 검증을 호출하지만 plugin 세부 검증 기준은 이 도메인이 소유한다.

금지 사항

  • package rename이나 public API breaking change는 현재 마일스톤의 nexo 전환 결정과 계획에 맞춰 수행한다.
  • host app 전용 navigation, 화면 구성, 제품 UI 상태를 plugin 내부에 넣지 않는다.
  • 이 저장소 안에 nexo 제품 앱을 만들기 위해 plugin 책임을 앱 책임으로 옮기지 않는다.
  • iOS/macOS stub을 production-ready로 단정하지 않는다.