어떤 기능인가요?
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에 맡긴다 (앱은 포그라운드에서만 직접 표시)
📝 작업 상세 내용
📁 참고 자료 (선택)
- 계획서:
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 전환 중). 종료일 공지 전까지는 토큰 방식 유지
어떤 기능인가요?
Firebase Admin SDK로 FCM 푸시 발송 포트와 구현체를 세운다.
members.fcm_token과 member 모듈notification도메인은 이미 있지만 실제 발송 수단이 없었다. 이후 대여 승인·공지 등 기능은PushNotificationClient포트만 호출하면 된다.push.type=fcm→ FCM 구현체, 미설정(로컬) → 로그 구현체 (@ConditionalOnProperty스위칭,coding-style.md2-12절)SUCCESS/INVALID_TOKEN/RETRYABLE/FAILED)로 반환해 호출 측이 무효 토큰 정리·재시도를 판단한다notification(title/body) +data로 보내고 백그라운드 표시는 OS에 맡긴다 (앱은 포그라운드에서만 직접 표시)📝 작업 상세 내용
firebase-admin9.11.0 의존성 추가 (버전 카탈로그,infrastructure:client)notification도메인에 발송 포트PushNotificationClient,PushMessage/PushSendResult/PushSendOutcome,PushSendStatus추가infrastructure:clientFCM 구현체:FcmProperties,FcmConfig(FirebaseApp·FirebaseMessaging 빈),FcmErrorClassifier,FcmPushNotificationClientLogPushNotificationClient(발송 없이 로그만)push섹션,.env.example(PUSH_TYPE,FIREBASE_CREDENTIALS_BASE64), 서비스 계정 키 파일.gitignore·.dockerignore제외📁 참고 자료 (선택)
docs/plans/fcm-setup.md,docs/plans/fcm-push-client-refactor.md(로컬, gitignore 대상)PUSH_TYPE=fcm,FIREBASE_CREDENTIALS_BASE64등록 필요