문자발송내역¶
라우트:
/patients/sms-history진입: 좌측 메뉴 환자관리 → 문자발송내역 권한: 전 직원 (level 1~5)
한 줄 요약
전 환자/전 채널 SMS 발송 이력 통합 검색. 발송 결과(성공/실패) 확인 + 실패 재발송.
화면 구성¶
[문자발송내역] [↻ 새로고침]
─────────────────────────────────────────────────────────────────────
[기간] [결과 ▾] [채널 ▾] [수신인 검색] [🔍 검색]
─────────────────────────────────────────────────────────────────────
┌ 발송시각 ┬ 수신인 ┬ 차트번호 ┬ 본문 ┬ 채널 ┬ 상태 ┬ 결과 ┬ 액션 ┐
│ 26-05-19(월) 09:00 │ 김보혜 │ 26000001 │ ... │ SMS │ 발송완료 │ 성공 │ [재발송] │
└─────────────────────────────────────────────────────────────────────┘
필터¶
| 필드 | 옵션 |
|---|---|
| 기간 | 시작일 ~ 종료일 (기본: 최근 1개월) |
| 결과 | 전체 / 성공 / 실패 / 발송전 / 취소 |
| 채널 | 전체 / SMS / LMS / MMS / 알림톡 / 친구톡 |
| 수신인 | 환자 이름 / 차트번호 / 전화번호 부분 매칭 |
결과 표 컬럼¶
| 컬럼 | 의미 |
|---|---|
| 발송시각 | sent_at (있으면) 또는 scheduled_at |
| 수신인 | 환자 이름 + 차트번호 + 전화번호 (4자리 마스킹) |
| 본문 미리보기 | 100자 이내 — 호버 시 전체 |
| 채널 | SMS/LMS/MMS / 알림톡 / 친구톡 |
| 상태 | sent / pending / failed / canceled |
| 결과 | 성공 / 실패 / 발송전 / 취소 (result_code 기반) |
| 발신자 | 발송한 직원 (created_by) |
| 액션 | [재발송] (실패 행만) / [상세] |
자주 쓰는 동작¶
시나리오 1 — 어제 자동 발송 결과 확인¶
- 기간: 어제 ~ 어제 / 결과: 전체
- 결과 컬럼에서 실패 건 카운트
- 실패 행 [재발송] 클릭 → 즉시 재발송 시도
시나리오 2 — 특정 환자 발송 이력 점검¶
- 수신인 검색에 환자 이름 또는 차트번호 입력 → 🔍
- 결과: 해당 환자의 전체 발송 이력
- 발송시각/본문/결과로 환자가 받은 안내 추적
시나리오 3 — 광고 메시지 발송 후 효과 분석¶
- 기간: 광고 발송일 ~ 1주일 후
- 채널: SMS (또는 알림톡)
- 발송 건수 + 성공률 확인
- 상세 환자 클릭 → 환자 상세 페이지 → 광고 후 예약/내원 추적
[재발송] 동작¶
실패한 SMS를 다시 시도. 알리고 API 즉시 재호출 + 새 sms_send_logs INSERT (재발송 표시).
제한: - 재발송은 운영자 트리거 (자동 재시도 없음) - 환자가 수신거부로 차단되면 재발송 차단 - 알리고 잔액 0원이면 또 실패
발송 결과 코드¶
result_code |
의미 | 비고 |
|---|---|---|
1 |
성공 | 알리고에서 발송 확인 |
2 |
발송중 | 알리고 큐에 적재됨 (1~3초 후 1로 전환) |
-101 |
실패 | 수신번호 형식 오류 |
-102 |
실패 | 발송번호 미인증 |
-103 |
실패 | 잔액 부족 |
-201 |
실패 | 알리고 API 호출 실패 |
| 기타 | 실패 | result_message 컬럼 참조 |
권한별 차이¶
| 기능 | 권한 |
|---|---|
| 이력 조회 (전체) | 🟢 모든 직원 |
| [재발송] | 🟢 모든 직원 |
| 환자 상세로 이동 | 🟢 모든 직원 |
| 발송 내용 삭제 | 🔴 권한 없음 (audit_logs 정책) |
자주 묻는 질문 / FAQ¶
Q. 발송완료인데 환자가 안 받았다고 해요
체크:
1. 결과 코드가 1(성공)인지 / 2(발송중)인지 — 발송중이면 1~3초 대기 후 1로 전환됨
2. 환자 전화번호가 최근 변경됐는지 (patients.mobile_phone)
3. 환자 폰의 SMS 차단 설정 (KISA 스팸 신고 등)
4. 환자가 통신사 차단 / 정지 상태
Q. 발송시각이 너무 늦었어요 (오후 11시 안내)
예약 발송(sms_reserve.send_at)을 늦은 시각으로 설정한 경우. 1분 cron이 send_at 도래 시점에 발송하므로 정확한 시각. 늦은 안내 방지하려면 예약 시 시간대 검토.
Q. 같은 환자에게 같은 SMS가 두 번 갔어요
원인 가능: 1. 운영자가 [재발송] 두 번 클릭 2. 자동 발송 룰 + 예약노트 발송이 같은 날 매칭 (각 별도 시스템) 3. 인메모리 가드 5초 차단을 우회한 빠른 재클릭
중복 발송된 건 환자에게 사과 안내 + 발송 로그 분석 후 룰 조건 재조정.
Q. 발송 내역에서 본문을 수정할 수 있나요?
아니요. 발송된 메시지는 변경 불가. sms_send_logs 는 audit 용도.
Q. 알림톡 발송 결과는 어디서 보나요?
동일한 본 페이지. 채널 필터 = 알림톡으로 좁히면 알림톡만 표시. (단, 알림톡은 현재 WI#19 진행 중이라 백엔드 미구현 상태일 수 있음)
Q. 광고 메시지로 환자가 컴플레인 했어요
환자 동의 정보 즉시 확인:
1. 환자관리 → 환자 상세 → sms_consent, ad_consent 값 점검
2. ad_consent=0 인데 광고 발송됐다면 정보통신망법 위반
3. 즉시 환자 동의 OFF + 사과 SMS + 사후 조치 (관리자 보고)
관련 페이지¶
- 단건 / 대량 SMS 발송 — 새 메시지 발송
- 자동 발송 (예약 안내 등) — 자동 룰 기반 발송
- 고객관리 상세 — 환자별 발송 이력
- 고객관리 리스트 — 자동 룰 발송 결과 검색
- 정합성 점검 — 발송 실패 패턴 분석