Skip to content

FCM 푸시 발송 초기 세팅 #76

Description

@tnals0924

어떤 기능인가요?

Firebase Admin SDK로 FCM 푸시 발송 포트와 구현체를 세운다. members.fcm_token과 member 모듈 notification 도메인은 이미 있지만 실제 발송 수단이 없었다. 이후 대여 승인·공지 등 기능은 PushNotificationClient 포트만 호출하면 된다.

  • push.type=fcm → FCM 구현체, 미설정(로컬) → 로그 구현체 (@ConditionalOnProperty 스위칭, coding-style.md 2-12절)
  • 발송 결과는 토큰별 상태(SUCCESS/INVALID_TOKEN/RETRYABLE/FAILED)로 반환해 호출 측이 무효 토큰 정리·재시도를 판단한다
  • 메시지는 notification(title/body) + data로 보내고 백그라운드 표시는 OS에 맡긴다 (앱은 포그라운드에서만 직접 표시)

📝 작업 상세 내용

  • firebase-admin 9.11.0 의존성 추가 (버전 카탈로그, infrastructure:client)
  • member notification 도메인에 발송 포트 PushNotificationClient, PushMessage/PushSendResult/PushSendOutcome, PushSendStatus 추가
  • infrastructure:client FCM 구현체: FcmProperties, FcmConfig(FirebaseApp·FirebaseMessaging 빈), FcmErrorClassifier, FcmPushNotificationClient
  • 로컬용 LogPushNotificationClient (발송 없이 로그만)
  • 설정: yml push 섹션, .env.example(PUSH_TYPE, FIREBASE_CREDENTIALS_BASE64), 서비스 계정 키 파일 .gitignore·.dockerignore 제외

📁 참고 자료 (선택)

  • 계획서: docs/plans/fcm-setup.md, docs/plans/fcm-push-client-refactor.md (로컬, gitignore 대상)
  • 미포함: FCM 토큰 등록 API, 기능별 발송 트리거·아웃박스 연동, 무효 토큰 정리 로직
  • 배포 시 Coolify dev/prod에 PUSH_TYPE=fcm, FIREBASE_CREDENTIALS_BASE64 등록 필요
  • 참고: firebase-admin 9.10.0부터 토큰 대상 발송이 deprecated(FID 전환 중). 종료일 공지 전까지는 토큰 방식 유지

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions