콘텐츠로 이동

자동 발송 (예약 안내 등)

진입: 예약노트 좌측 "발송 설정" / CRM 고객관리 룰 관리 발송 엔진: 알리고 SMS

한 줄 요약

환자 수동 입력 없이 트리거(예약 / 결제 / 시술) 기반으로 자동 SMS 발송. 두 가지 시스템: 예약노트 발송설정 (즉시/예약) + 고객관리 자동 룰 (D+N 안내).


자동 발송 두 갈래 비교

구분 예약노트 발송설정 고객관리 자동 룰
트리거 예약 등록/수정 시 4종 버튼 매일 09:00 배치가 결제/시술 후 D+N 매칭
대상 한 환자 (현재 예약) 다수 환자 일괄
발송 시점 즉시 또는 운영자 지정 시각 매일 09:00 자동
수정 운영자가 본문 직접 입력 룰의 템플릿 사용 (변수 치환)
상세 예약노트 시술별 안내 자동 발송

예약노트 발송 설정 (WI#18 v2/v2.1)

4종 발송 항목

항목 트리거 본문
오시는길 즉시 병원 주소 + 카카오맵 링크
즉시 즉시 환자 맞춤 안내 (운영자 직접 작성)
전일 예약 D-1 (전일) 예약 안내 + 시간
당일 예약 D (당일 아침) 오늘 예약 안내

두 버튼 (즉시 / 예약)

각 항목마다 [즉시] [예약] 2개 버튼 (Phase v2.1):

버튼 동작
즉시 클릭 → 미리보기 모달 → [확정] → aligo 즉시 발송 + sms_reserve (status=sent)
예약 클릭 → datetime 입력 → 모달 → [확정] → sms_reserve (status=pending) → 1분 cron이 시각 도래 시 자동 발송

1분 cron 자동 발송

[1분마다 실행 cron (alpha-api/cron/smsReserveProcessor.js)]
SELECT * FROM sms_reserve WHERE status='pending' AND send_at <= NOW()
각 행 → 알리고 API 호출 → 성공 시 status='sent' / 실패 시 status='failed'

발송 시각 검증

  • 예약 시각은 현재로부터 1분 이상 미래여야 함
  • 과거 시각 입력 시 클라이언트 검증으로 차단

고객관리 자동 룰 (D+N 안내)

매일 09:00 배치가 룰에 매칭되는 환자에게 자동 SMS:

  • R1 한약 해독 D+1 — 해독 결제 다음날
  • R3 재내원 안내 — 결제 후 25/55/85/115/145/175일
  • R4 피코/브이레이저 D+7
  • R5 슈링크 D+30
  • 기타 운영자 추가 룰

상세: 시술별 안내 자동 발송


공통 안전장치

항목 동작
수신거부 자동 차단 sms_consent=0, ad_consent=0 환자 발송 제외
중복 발송 방지 예약노트 — 동일 항목 1회만 / 자동 룰 — UNIQUE(rule_id,patient_id,date) + 7일 lookback
빈 전화번호 차단 mobile_phone 빈 환자 자동 제외
알리고 API 실패 시 재시도 자동 재시도 없음 — 운영자가 발송이력에서 [재발송] 수동 처리

:material-flow-chart: 발송 흐름 상세

예약노트 [예약] 발송

1. 운영자가 예약노트에서 환자 예약 등록
2. 좌측 [발송 설정] 영역 → "전일" [예약] 클릭
3. datetime-local 입력 (예: 2026-05-25 10:00) → 미리보기 모달
4. [확정] → POST /api/sms/reserve
5. sms_reserve INSERT (status='pending', send_at='2026-05-25 10:00:00')
6. 1분 cron이 매분 SELECT — 시각 도래 시 알리고 발송 → status='sent'
7. 환자 수신

고객관리 자동 발송

1. (어제) 환자가 결제 (해독 한약)
2. (오늘 09:00) customerMgmtAutoBatch.js 실행
3. R1 룰 매칭 SELECT — 어제 결제 + 해독 키워드 환자 추출
4. UNIQUE(rule_id,patient_id,today) INSERT 시도 — 중복 차단 통과
5. auto_send=1 → 즉시 알리고 발송 + crm_task_logs INSERT (action='sent')
6. 환자 수신 — "해독 시작 1일차 안내"

발송 이력 조회

위치 표시
예약노트 좌측 "발송 이력" 해당 환자의 SMS 이력 (자동/수동 모두)
/crm/tasks 고객관리 리스트 자동 룰 발송 + 일괄 발송 통합
고객관리 상세 팝업 「문자」 탭 환자별 문자/통화 이력
sms_send_logs 테이블 모든 발송 (Direct DB 확인)

자주 묻는 질문 / FAQ

Q. 예약노트에서 '전일' 발송이 안 갔어요

체크 순서: 1. sms_reserve 에 INSERT 됐는지 (status='pending' or 'sent') 2. 예약일자가 미래인지 (이미 지난 예약은 발송 안 함) 3. 환자 전화번호/수신동의 정상인지 4. 1분 cron이 정상 동작 중인지 (pm2 list 에 cron 프로세스 확인) 5. 알리고 잔액 부족 시 발송 실패 — 알리고 계정 확인

Q. 자동 룰이 매일 09:00에 안 돌아요

PM2 cron job customerMgmtAutoBatch 또는 crontab 항목 확인. 시간이 맞지 않으면 서버 timezone 점검.

Q. 예약 시각이 1분 미만이라고 거부됐어요

클라이언트 검증으로 차단 (서버 시계와 다를 수 있어 안전 마진). 1분 이상 미래로 설정.

Q. 자동 발송된 SMS를 취소하고 싶어요

sms_reserve.status='pending' 상태에서만 취소 가능. 이미 발송된 (status='sent')는 알리고 발송 취소 불가. 예약노트 발송 이력에서 [취소] 버튼 (status='pending' 행만).

Q. 같은 환자에게 예약노트와 자동 룰이 동시 발송될 수 있나요?

예. 두 시스템은 독립적이라 동시 발송 가능 — 다만 트리거 조건이 다르므로 일반적으로 시점이 겹치지 않음. 의도된 중복(예약 안내 + 시술 후 안내)은 정상.

Q. 1분 cron이 지연되면 어떻게 되나요?

다음 cron 실행 시 누락된 항목 함께 처리. 1~2분 지연은 정상 범위. 10분 이상 지연 시 cron 프로세스 점검 필요.


관련 페이지