사이트픽 블로그
← 목록으로

개발일지 2026-07-19

개발일지 (2026-07-19)

개요

카카오 알림톡 템플릿 형식을 뿌리오 심사 규격([*N*])에 맞춰 전면 교체하고, DB 기본 템플릿과 뿌리오 키를 일괄 업데이트했다.


수정/생성 파일 목록

백엔드 (piano-backend)

  • PpurioService.java (수정) — [*N*] / [*이름*] 형식 변수 치환 추가
  • AcademyNotificationSender.java (수정) — 학원명([*1*]) 자동 주입, AcademyMapper 연동

프론트 — 학원 앱 (academy)

  • pages/NotificationTemplates.tsx (수정) — VAR_MAP을 [*N*] 형식으로 전면 교체, 제목 편집 TextField 추가, 뿌리오 카카오 키 입력/저장 필드 추가
  • api/notificationTemplates.ts (수정) — kakaoTemplateCode 필드 추가

DB

  • academy_notification_templates — kakao_template_code 컬럼 추가, 전체 템플릿 내용/키 업데이트

파일별 상세

1. 카카오 알림톡 변수 형식 통일

카카오 심사에서 {1} 형식이 반려되어 [*N*] / [*이름*] 형식으로 전면 교체했다.

반려 사유:

  1. 변수 형식 오류: {1} → [*변수*] 형태여야 함
  2. 수신자 액션 명시 필요: "신청하신", "예약하신" 등 문맥 추가

교체 결과:

유형뿌리오 키내용
레슨 확정ppur_2026071610295799285497030[*1*] 레슨이 확정되었습니다...
예약 알림ppur_2026071610530397693814438예약하신 수업이 [*4*]분 후 시작...
결제 완료ppur_2026071611015799285348251[*1*] 결제가 완료되었습니다...
환불 완료ppur_2026071611025699285305094[*1*] 환불이 처리되었습니다...
상담 예약ppur_2026071611034497693127571[*1*] 상담 예약이 확정되었습니다...
수강권 만료ppur_2026062514164015156435443수강권 만료일이 임박했습니다...
체험 레슨ppur_2026071610295799285497030[*1*] 체험 레슨이 확정되었습니다...

2. 발송기 변수 치환 확장

PpurioService.replaceVariables()에 [*N*] 형식 치환을 추가했다.

// [*N*] / [*이름*] 뿌리오 카카오 형식
result = result.replace("[*" + entry.getKey() + "*]", entry.getValue());

3가지 형식을 모두 지원: [*N*] (카카오), {N} (SMS), #{N} (레거시)

3. 알림 관리 UI 개선

  • 제목(알림 유형명) 편집 가능 (TextField)
  • 뿌리오 카카오 템플릿 코드 입력/저장 필드 추가
  • 발송 시점 셀렉트박스로 변경

4. 알림 발송 시점 정책 정리

학원별 발송 시점을 자유롭게 설정하면 스케줄러 부하가 증가하므로, "즉시" 또는 "사전 알림(고정)" 두 가지로 통일하는 정책을 수립했다.

  • 즉시 발송: 레슨 확정, 결제 완료, 환불, 상담 예약, 체험 레슨
  • 사전 알림(배치): 레슨 1시간 전 리마인더, 수강권 만료 7일 전

결론 / 배운 점

  • 카카오 알림톡 심사는 변수 형식에 엄격하다. [*변수내용*] 형태만 허용. 수신자 액션(신청/예약/결제 등)을 명시해야 정보성 메시지로 인정.
  • 발송 시점은 단순하게. 학원마다 다른 지연 발송은 스케줄러 복잡도를 기하급수적으로 높인다. "즉시" + "고정 사전 알림"이 운영 효율적.
  • 변수 치환은 한 곳에서. SMS/카카오/레거시 3가지 형식을 replaceVariables 한 메서드에서 처리하면 어떤 형식이든 대응 가능.

댓글 0

  • 첫 번째 댓글을 남겨보세요.