nomadcode/agent-ops/rules/domain/mobile/push-notification/rules.md

51 lines
2.4 KiB
Markdown

---
name: push-notification
description: FCM 기반 푸시 알림 수신, 표시, ACK 처리 담당 (Core Domain)
type: core
---
# Push Notification
## 목적 / 책임
- Firebase Cloud Messaging(FCM) 메시지 수신 및 처리
- 포그라운드/백그라운드/종료 상태별 알림 표시
- 알림 수신 ACK를 Mattermost 서버로 전달
- Flutter ↔ Android 간 이벤트 채널 통신
## 포함 경로
- `android/app/src/main/java/com/tokilabs/mattermost/MattermostFirebaseMessagingService.kt`
- `android/app/src/main/java/com/tokilabs/mattermost/helpers/CustomPushNotificationHelper.java`
- `android/app/src/main/java/com/tokilabs/mattermost/helpers/NotificationHelper.kt`
- `android/app/src/main/java/com/tokilabs/mattermost/NotificationReplyBroadcastReceiver.java`
- `android/app/src/main/java/com/tokilabs/mattermost/NotificationDismissService.java`
- `android/app/src/main/java/com/tokilabs/mattermost/ReceiptDelivery.java`
- `lib/services/push_notification_service.dart`
- `lib/services/push_notification_background.dart`
## 제외 경로
- `lib/` 내 UI 화면 관련 코드 (flutter-app 도메인)
- `android/.../db/` (database 도메인)
- `android/.../helpers/Network.kt` (network 도메인)
## 주요 구성 요소
- `MattermostFirebaseMessagingService`: FCM 메시지 수신 진입점, 포그라운드/백그라운드 분기
- `CustomPushNotificationHelper`: 알림 UI 빌드, 아바타 이미지 처리
- `NotificationHelper`: 알림 ID, 그룹 요약 관리
- `ReceiptDelivery`: `/api/v4/notifications/ack` ACK 전송
- `PushNotificationService`: Flutter 싱글톤 서비스, EventChannel 수신
- `push_notification_background.dart`: 백그라운드 FCM 핸들러
## 유지할 패턴
- FCM 수신 → `MattermostFirebaseMessagingService``CustomPushNotificationHelper` 흐름
- EventChannel을 통한 Android → Flutter 이벤트 전달
- 알림 표시 전 반드시 ACK 전송 (`ReceiptDelivery`)
- Singleton 패턴: `PushNotificationService.instance`
## 다른 도메인과의 경계
- **database**: push-notification은 알림 데이터를 읽기만 하고, DB 스키마/쿼리 구현은 database 도메인
- **network**: HTTP 통신 구현은 network 도메인의 `Network.kt` 사용
- **flutter-app**: 알림 탭 시 화면 라우팅은 flutter-app 도메인
## 금지 사항
- DB 스키마 변경을 이 도메인에서 직접 하지 않는다.
- 알림 채널 설정은 `MainApplication.kt`(android-native 도메인)에서 한다.