콘텐츠로 이동

고객관리 리스트

라우트: /crm/tasks 진입: 좌측 메뉴 CRM → 고객관리 리스트

한 줄 요약

SMS·알림톡·해피콜 큐의 발송/처리 이력 통합 리스트 — 기간/채널/상태 필터링 후 체크박스 다중 선택 → 일괄 발송 / 일괄 완료 처리.

신규 시스템 (2026-05-19 WI#100 Phase B)

crm_tasks 테이블 기반 리스트는 폐기되고 고객관리 시스템(crm_task_logs) 으로 통합되었습니다. 룰/템플릿이 자동 생성한 발송 로그를 한 곳에서 검색·발송·완료 처리합니다.


화면 구성

[고객관리 리스트]   [전체 / 내 담당]                       [↻ 새로고침]
─────────────────────────────────────────────────────────────────────
[발송완료 N]  [대기 N]  [실패 N]  [해피콜완료 N]  [총건수 N]
─────────────────────────────────────────────────────────────────────
[기간] [채널 ▾] [상태 ▾] [룰 전체 ▾] [템플릿 전체 ▾] [이름▾ 검색]
─────────────────────────────────────────────────────────────────────
(선택 시) N건 선택 [일괄 발송] [일괄 완료]            [선택 해제]
─────────────────────────────────────────────────────────────────────
┌ ☐ ┬ 처리시각 ┬ 환자 ┬ 채널 ┬ 룰 ┬ 템플릿 ┬ 상태 ┬ 미리보기 ┬ 액션 ┐
│ ☐ │ 5/19 09:00 │ 김보혜 │ SMS │ R1_한약_D+1 │ T1_안내 │ sent │ ... │ [상세보기] │
└─────────────────────────────────────────────────────────────────────┘

상단 KPI 5종

타일 의미
발송 완료 action='sent' 발송 성공 초록
대기 action='queued' 큐 대기 중 주황
실패 action='failed' aligo 오류 등 빨강 (0건이면 회색)
해피콜 완료 action='completed' 통화 성공/거절 처리 파랑
총 건수 필터 적용 후 전체 행 수 회색

→ 필터 적용 후 갱신되는 카운트입니다. 전체 DB 합계가 아닙니다.


필터

필터 옵션
기간 시작일 ~ 종료일 (기본 = 최근 3개월)
채널 전체 / SMS / 카카오 / 해피콜 / 메모
상태 전체 / 대기(queued) / 발송(sent) / 실패(failed) / 완료(completed) / 취소(cancelled)
전체 / 활성 룰 드롭다운 (R1_한약_해독_D+1 등)
템플릿 전체 / 활성 템플릿 드롭다운 (T1_안내, T2_재내원 등)
검색 이름 / 차트번호 — Enter 또는 🔍 클릭

전체 / 내 담당 토글 (헤더 오른쪽 배지): - 전체 = 모든 환자의 발송 로그 - 내 담당 = level 4(실장) 자동 + admin이 수동 토글 시 본인 매핑 환자만


결과 표 컬럼

컬럼 의미
체크박스 — 일괄 작업 선택
처리시각 performed_at (발송 시각 또는 큐 등록 시각)
환자 이름 · 차트번호 · 성별/생년월일
담당 환자별 매핑된 실장 칩 (level 1~3 화면에만)
채널 SMS / 카카오 / 해피콜 / 메모
어떤 자동 룰이 만든 큐인지 (예: R1_한약_해독_D+1)
템플릿 발송에 사용된 템플릿명
상태 queued / sent / failed / completed / cancelled — 색 배지
미리보기 본문 100자 미리보기 (호버 시 전체)
액션 [상세보기] 클릭 → 고객관리 상세 팝업 진입

자주 쓰는 동작

시나리오 1 — 오늘 자동 발송된 SMS 결과 확인

  1. 기간: 오늘 ~ 오늘 / 채널: SMS / 상태: 발송(sent)
  2. KPI 「발송 완료」 카운트 확인
  3. 실패가 있으면 상태 = 실패로 필터 → 각 행 [상세보기] → 재발송

시나리오 2 — 대기 큐 일괄 발송

수동 발송 정책 룰(auto_send=0)이 매칭한 큐를 한 번에 보내기

  1. 채널: SMS / 상태: 대기(queued)
  2. 발송할 행 체크박스 다중 선택 → 상단에 N건 선택 액션 바 출현
  3. [일괄 발송] 클릭 → 미리보기 모달
  4. 본문 / 수신자 명단 확인 → [확정]
  5. 5초 중복 차단 가드 + 백엔드 transaction → 발송 결과 alert

시나리오 3 — 해피콜 큐 일괄 완료 처리

운영 종료 / 일괄 정리 시

  1. 채널: 해피콜(call) / 상태: 대기(queued)
  2. 처리할 행 체크박스 다중 선택
  3. [일괄 완료] 클릭 → 결과 모달
  4. 결과: 성공 / 부재중 / 거절 / 재시도 선택 + 메모
  5. 성공/거절 → 완료 처리 + patient_calls 자동 INSERT
  6. 부재중/재시도 → 큐에 남음 + error_message 메모 누적

시나리오 4 — 환자별 상세 작업

각 행의 [상세보기] 버튼 → 고객관리 상세 팝업 (전체 화면)으로 이동. 환자별 문자/통화 이력 + 차트 이력 + 큐 카드 처리 가능. 자세한 내용: 고객관리 상세 페이지


일괄 액션 안전장치

항목 동작
체크박스 선택 시 검증 다른 채널 또는 다른 상태가 섞이면 액션 바에 ⚠️ ... 경고 + 버튼 비활성
중복 클릭 5초 차단 global.__inflightCrmSendNow 인메모리 가드 (단일 PM2 fork 모드)
DB UNIQUE (rule_id, patient_id, performed_date) 같은 일자 중복 INSERT 차단 (마이그레이션 071)
WHERE action='queued' 가드 일괄 완료가 이미 처리된 행에 재실행해도 영향 없음 (idempotent)
수신거부 자동 차단 patients.sms_consent / ad_consent 거부 환자는 발송 대상에서 제외

권한별 차이

기능 권한
리스트 조회 (전체) 🟢 admin / level 1~3
리스트 조회 (본인 담당) 🟢 level 4(실장) — 자동 필터
일괄 발송 🟢 모든 직원
일괄 완료 🟢 모든 직원
상세보기 → 큐 카드 처리 🟢 모든 직원
룰/템플릿 관리 🔴 고객관리 메인 > 룰/템플릿 + 메시지 템플릿 참조

자주 묻는 질문 / FAQ

Q. 옛 'TASK' 페이지의 안내 자동생성 / 안내 등록은 어디 갔어요?

WI#100 Phase B 통합으로 옛 crm_tasks 시스템은 폐기되고 고객관리 시스템으로 일원화되었습니다. 안내 자동 생성은 (/crm/customer-management/rules)에서, 직접 등록은 환자 컨텍스트 메뉴 → "특별숙제"로 옮겨졌습니다. 본 리스트는 발송/처리 결과 모니터링 전용입니다.

Q. 일괄 발송 클릭했는데 '⚠️ 다른 채널이 섞여있습니다'가 떠요

체크박스로 선택한 행 중 SMS와 해피콜이 섞여있으면 발송 불가합니다. 한 가지 채널만 선택하세요.

Q. 일괄 완료 처리 후 일부 건이 '대기'로 남아있어요

UPDATE WHERE 절에 action='queued' 조건이 있어 이미 처리된 행은 자동 skip 됩니다. alert에 표시된 완료 N / 스킵 M / 실패 K 숫자로 결과 확인하세요. 스킵 = 이미 처리된 건, 실패 = DB 오류 (드뭄).

Q. 룰 / 템플릿 드롭다운에 항목이 안 보여요

/crm/customer-management/rules / /templates 에서 활성(enabled=1) 룰·템플릿만 노출됩니다. 비활성/시드는 제외.

Q. 상세보기를 누르면 새 창이 떠야 하는데 메인 페이지가 바뀌어요

2026-05-19 hotfix로 차단됨 (item.path.startsWith('/popup/') 자동 팝업 오픈). 그래도 발생하면 브라우저 팝업 차단 설정 확인.

Q. 검색이 환자 한 명에 대해 정확히 동작 안 해요

검색 타입을 「이름」 또는 「차트번호」 중 정확한 항목으로 설정 후 Enter. 부분 일치이므로 차트번호는 전체 입력 권장.

Q. 발송 실패 사유는 어디서 봐요?

행의 상태 = 실패 → [상세보기] 진입 → 큐 카드의 error_message 영역에서 aligo 응답 메시지 확인.


관련 페이지