카카오 알림톡 백엔드 (서비스 + NotificationService 통합 + 테스트)

ID: de40ed9f-5d59-4407-8ee5-b4b03695a37b

높음 완료

## 목표
카카오 알림톡 API 클라이언트 서비스 + NotificationService 통합 + 테스트

## 구현 내용

### 1. KakaoAlimtalkSender 서비스 (`app/services/kakao_alimtalk_sender.rb`)
- Net::HTTP 기반 카카오 알림톡 API 클라이언트
- 초기화: `KakaoAlimtalkSender.new(phone:, template_code:, variables:)`
- `call` 메서드: API 호출 → `{ success: true/false, message_id:, error: }` 반환
- 환경변수: `KAKAO_ALIMTALK_API_KEY`, `KAKAO_SENDER_KEY`
- API 키가 없으면 graceful하게 skip

### 2. NotificationService 수정 (`app/services/notification_service.rb`)
- send_all에 kakao 채널 추가
- send_kakao private 메서드 추가

### 3. 테스트
- `test/services/kakao_alimtalk_sender_test.rb` (생성)
- `test/services/notification_service_test.rb` (수정)

## 파일 목록
- `app/services/kakao_alimtalk_sender.rb` (생성)
- `app/services/notification_service.rb` (수정)
- `test/services/kakao_alimtalk_sender_test.rb` (생성)
- `test/services/notification_service_test.rb` (수정)

부모 티켓: f5ebc8ae-a57c-4589-ae3a-dad0b64edd25

첨부 이미지

이미지 추가 (Ctrl+V로 붙여넣기 또는 클릭)

JPEG, PNG, GIF, WebP / 최대 10MB

담당자: kakao-backend
생성일: 2026년 03월 03일 05:51

활동 로그

  • 팀리드 상태 변경: 리뷰 → 완료

    2026년 03월 03일 06:04:50

  • K
    kakao-backend 카카오 알림톡 백엔드 구현 완료

    2026년 03월 03일 06:00:30

    상세 보기

    ## 변경 사항

    ### 신규 파일
    - `app/services/kakao_alimtalk_sender.rb` - 카카오 알림톡 API 클라이언트
    - TEMPLATES 상수 (qt_reminder, prayer_reminder)
    - Net::HTTP 기반 API 호출
    - 타임아웃/에러 graceful 처리
    - API 키 미설정 시 안전하게 skip

    - `test/services/kakao_alimtalk_sender_test.rb` - 10개 테스트
    - API 키 미설정 시 graceful skip
    - phone 없을 때 실패 처리
    - 성공/실패 응답 mock (FakeResponse 클래스)
    - 타임아웃 처리 (OpenTimeout, ReadTimeout)
    - request body 구조 검증 (하이픈 제거)

    ### 수정 파일
    - `app/services/notification_service.rb` - send_all에 kakao 채널 추가
    - send_kakao private 메서드 추가
    - @user.respond_to?(:phone) 안전 체크 (phone 컬럼 미존재 대응)
    - KakaoAlimtalkSender 호출 + 결과 변환

    - `test/services/notification_service_test.rb` - 3개 테스트 추가
    - kakao 활성화 시 결과 포함 확인
    - no_phone 반환 확인
    - push+email+kakao 전체 채널 동시 동작

    ## 테스트 결과
    - 내 테스트: 19 runs, 46 assertions, 0 failures, 0 errors
    - 전체: 551 runs, 1323 assertions, 2 failures (기존 PrayerPartners 이슈)

    ## 참고
    - User 모델에 phone 컬럼 없음 → respond_to? 안전 처리
    - ENV[KAKAO_ALIMTALK_API_KEY], ENV[KAKAO_SENDER_KEY] 필요
    - UserSetting에 kakao_enabled? 메서드 이미 존재

  • K
    kakao-backend 상태 변경: 할 일 → 리뷰

    2026년 03월 03일 06:00:17

  • K
    kakao-backend 카카오 알림톡 백엔드 구현 시작

    2026년 03월 03일 05:53:22

    상세 보기

    ## 작업 계획
    - `app/services/kakao_alimtalk_sender.rb` 생성
    - `app/services/notification_service.rb`에 kakao 채널 통합
    - 테스트 작성 (kakao_alimtalk_sender_test.rb + notification_service_test.rb 수정)
    - TDD 기반 구현