⚠️ Alert
성공률
{{ stats.success_rate }}%
SRQS 품질 지표
캠페인 평균 SRQS
{{ srqsSummary.avg_srqs }}
총 연결 건수
{{ srqsSummary.total_connected }}
우호도 추이
{{ srqsSummary.nfs_score }} {{ favorabilityLabel(srqsSummary.nfs_score) }}
파일: {{ custBulkResult.file_name }} ({{ (custBulkResult.file_size_bytes/1024).toFixed(1) }} KB) · 캠페인 #{{ custBulkResult.campaign_id }} · 회차 #{{ custBulkResult.round_id }} · 처리 {{ custBulkResult.processing_time_ms }} ms
📊 발견 번호
{{ custBulkResult.phone_numbers_found }}
✅ 신규 등록
{{ custBulkResult.inserted }}
🔁 파일내 중복
{{ custBulkResult.duplicates_in_file }}
📂 DB 기존 중복
{{ custBulkResult.duplicates_in_db }}
🚫 수신거부 (등록 거부)
{{ custBulkResult.blacklisted }}
※ 수신거부 목록에 등록된 번호 {{ custBulkResult.blacklisted }}건은 등록되지 않았습니다.
(해제하려면 [수신거부] 메뉴에서 해당 번호를 제거한 뒤 다시 업로드해 주세요.)
※ 이미 등록된 번호 {{ custBulkResult.duplicates_in_db }}건은 등록되지 않았습니다 (전체 캠페인 통틀어 중복 검사).
닫기
목록 새로고침
※ 이미 등록된 번호(전체 캠페인 기준)와 수신거부 번호는 추가할 수 없습니다.
취소
저장
고객 목록
선택 삭제 ({{ customerSelected.length }})
전체 삭제 ({{ customerTotal }})
전체 {{ customerTotal }}건
현재 필터 일괄 대기 초기화
되돌릴 수 없는 작업입니다
현재 필터 조건의 {{ customerTotal }}건 고객 데이터를 영구 삭제합니다.
통화 이력·성향 응답 등 연관된 데이터도 함께 삭제됩니다.
{{ (campaignList.find(c => String(c.campaign_id) === String(customerFilter.campaign_id)) || {}).project_name || '#' + customerFilter.campaign_id }}
전체 (필터 없음)
{{ customerStatusLabel(customerFilter.status) }} 만
모든 상태
{{ customerTotal }}건
실수 방지를 위해 본인 비밀번호를 다시 입력해야 합니다.
취소
전체 삭제 실행
{{ s.row.pseudonym }}
{{ s.row.name }}
-
{{ formatPhone(s.row.phone) }}
{{ customerStatusLabel(s.row.status) }}
{{ s.row.agent_code }} - {{ s.row.agent_name }}
미배정
{{ s.row.campaign_name }}
-
상세보기
수정
대기로
차단
차단해제
삭제
취소
저장
새 캠페인 생성
캠페인 생성
캠페인 목록
{{ s.row.is_active?'활성':'비활성' }}
수정
{{ s.row.is_active?'비활성':'활성' }}
삭제
1단계. 캠페인 선택
출발: 완료된 회차 · 도착: 준비중/진행중 회차. 각 상담원의 기존 활성 배정은 자동 해제됩니다.
취소
일괄 이동
매뉴얼 복사
적용
{{ idx+1 }}
▲
▼
✕
+ 단계 추가
저장
홍보대본 복사
적용
▲
▼
✕
+ 상황 추가
저장
이 회차에서 상담원이 선택할 수 있는 성향 버튼을 지정합니다.
전역 "성향 설정" 메뉴에서 등록한 성향 중 필요한 항목만 체크하세요.
선호도에 따라 버튼 색상과 위치가 자동 설정됩니다.
※ 상담원이 앱에서 성향을 선택하면, SMS 템플릿 메뉴에서 해당 성향에 연결된 문자가 자동 발송됩니다.
{{ group.label }}
{{ group.items.length }}개
{{ s.word }}
상담원 앱 미리보기
{{ b.label }}
선택된 성향이 없습니다.
저장
상담원이 통화 후 해당 성향 버튼을 선택하면 자동으로 SMS가 발송됩니다.
각 성향에 발송할 메시지를 라이브러리에서 선택하세요.
※ 메시지는 [SMS 템플릿] 메뉴에서 미리 작성해야 합니다. 선택하지 않으면 발송되지 않습니다.
먼저 [성향 선택] 탭에서 이 회차에 사용할 성향을 선택해주세요.
{{ b.label }}
assignSmsTemplate(b.sentiment_id, v)"
placeholder="발송 메시지 선택 (없으면 발송 안 함)"
clearable
style="flex:1;max-width:500px">
배정 해제
미리보기:
{{ (smsTplList.find(t => t.id === roundSmsAssignments[b.sentiment_id]) || {}).template_text }}
※ 선택 즉시 자동 저장됩니다.
이 회차에 배정된 상담원의 앱 로그인 시 자동으로 표시되는 공지입니다.
회차에 한정된 안내사항(예: 1차 조사 가이드, 보너스 안내 등)을 작성하세요.
+ 공지 작성
{{ s.row.start_dt }} ~ {{ s.row.end_dt }}
{{ {active:'활성',scheduled:'예정',expired:'만료'}[s.row.status] }}
수정
삭제
취소
저장
※ 회차 설정의 [자동 재시도 간격]에 따라 부재중/통화중 고객은 자동으로 [대기]로 복귀됩니다.
긴급히 즉시 재시도가 필요하면 아래 [일괄 재시도] 버튼을 사용하세요. 모든 통화 시도는 시각/상담원과 함께 기록됩니다.
새로고침
부재중/통화중 즉시 재시도
총 통화: {{ roundResults.summary.total || 0 }}
성공 {{ roundResults.summary.success || 0 }}
부재중 {{ roundResults.summary.no_answer || 0 }}
통화중 {{ roundResults.summary.busy || 0 }}
차단 {{ roundResults.summary.blacklist || 0 }}
{{ formatPhone(s.row.phone) }}
{{ s.row.status }}
{{ s.row.category }}
{{ s.row.agent_code }} {{ s.row.agent_name }}
{{ s.row.ring_time||0 }}s / {{ s.row.call_duration||0 }}s
{{ s.row.sms_status_label }}
—
이 회차에 전화번호를 추가로 일괄 등록합니다. 업로드 즉시 대기 상태로 등록되어,
회차에 배정된 상담원에게 자동 분배됩니다. [고객 목록] 페이지에도 함께 표시되어
다음 회차에서도 볼 수 있습니다.
※ 파일 내·DB 기존 중복은 자동 제외되며, 수신거부 등록 번호는 BLACKLIST 로 처리되어 발신에서 제외됩니다.
📄
.xlsx / .csv 파일을 끌어다 놓거나 클릭하여 선택
최대 50MB / 약 100만 건
업로드 시작
초기화
최근 업로드: {{ roundAddBulkResult.file_name }}
({{ (roundAddBulkResult.file_size_bytes/1024).toFixed(1) }} KB) · 처리 {{ roundAddBulkResult.processing_time_ms }} ms
📊 발견 번호
{{ roundAddBulkResult.phone_numbers_found }}
✅ 신규 등록
{{ roundAddBulkResult.inserted }}
🔁 파일내 중복
{{ roundAddBulkResult.duplicates_in_file }}
📂 DB 기존 중복
{{ roundAddBulkResult.duplicates_in_db }}
🚫 수신거부
{{ roundAddBulkResult.blacklisted }}
※ 수신거부 번호 {{ roundAddBulkResult.blacklisted }}건은 BLACKLIST 로 처리되어 발신 대상에서 제외됩니다.
현재 내용을 템플릿으로 저장
{{ s.row.template_type==='GUIDE'?'매뉴얼':'홍보대본' }}
🔒
삭제
기간 시작 전 준비중, 기간 중 진행중, 종료 후 완료. 종료일 비우면 무기한.
※ 부재중/통화중 고객은 마지막 통화 후 [재시도 간격] 분이 지나면 자동으로 [대기] 상태로 복귀하여 다른 상담원이 다시 시도할 수 있습니다. [최대 재시도 횟수]를 초과하면 자동 복귀가 중단됩니다. 모든 통화 시도는 [통화 결과] 탭에 시각/상담원과 함께 기록됩니다.
성향 입력시 자동 MMS/SMS 발송
상담원이 성향 버튼을 선택하면 [성향별 SMS 자동발송] 탭에서 해당 성향에 매핑한 메시지 템플릿이 단말에서 자동 발송됩니다.
매핑되지 않은 성향은 발송되지 않습니다. 상담원 단말이 "기본 SMS 앱"으로 지정되어 있어야 동작합니다.
취소
저장
이 회차에서 작업할 상담원을 선택하세요. 체크된 상담원은 로그인 시 이 회차의 전화번호를 자동으로 받아갑니다.
실명 노출 체크 시 해당 상담원은 가명 대신 원본 성명을 보게 됩니다 (PIPA 준수 여부 확인 필요).
기본은 다른 진행중 회차에 이미 배정된 상담원은 숨김 처리됩니다.
전체 선택
전체 해제
선택 반전
다른 진행중 회차 배정 상담원도 표시
({{ busyAgentCount }}명)
선택: {{ visibleRoundAgentRows.filter(r=>r.assigned).length }} / 표시 {{ visibleRoundAgentRows.length }}명
· 숨김 {{ busyAgentCount }}명
toggleAllRoundAgents(v)">
{{ s.row.agent_code }} - {{ s.row.agent_name }}
비활성
진행중 배정
↳ {{ s.row.busy_info }}
취소
저장
상담원 등록
상담원 등록
상담원 목록
캠페인/조사회차
삭제
배정 추가
※ 조사회차를 비워두면 캠페인 전체에 배정됩니다.
{{ s.row.round_number }}차 {{ s.row.round_name||'' }}
전체
해제
닫기
SIM 허용 목록 (사전 등록된 전화번호)
+ 전화번호 추가
Excel/CSV 일괄등록
선택 삭제 ({{ simSelected.length }})
여기에 등록된 SIM 번호를 사용하는 단말기는 앱에서 등록 요청 시 자동으로 승인됩니다.
사전 등록되지 않은 SIM 은 기존처럼 [대기] 상태로 저장되어 관리자가 확인 후 승인해야 합니다.
simSelected = rows">
{{ s.row.is_active?'사용':'비활성' }}
{{ s.row.used_at }}
미사용
이 번호로 단말기 수동 등록
취소
등록
취소
등록
단말기 목록
{{ s.row.device_type==='TABLET' ? '📱 태블릿' : '📞 폰' }}
{{ s.row.sim_phone_number_masked }}
-
{{ s.row.agent_code }} - {{ s.row.agent_name }}
미로그인
{{ {APPROVED:'승인',PENDING:'대기',REJECTED:'거부'}[s.row.status] || s.row.status }}
승인
거부
기간 수정
정보
삭제
※ 상담원은 지정하지 않습니다. 로그인 시 상담원 고유번호로 자동 인식되며, 날짜별로 다른 상담원이 로그인하면 자동 전환됩니다.
취소{{ deviceApproveForm.is_edit ? '저장' : '승인' }}
📞 휴대폰
📱 태블릿
※ SIM 번호는 AES-256 암호화되어 저장되며, 조회 시 마스킹 처리됩니다.
※ 휴대폰으로 설정하면 기존 SIM 번호는 삭제됩니다.
취소
저장
+ 새 메시지 작성
{{ s.row.message_type === 'MMS' ? '🖼 MMS' : '✉ SMS' }}
{{ s.row.title }}
※ {{ s.row.subject }}
{{ s.row.template_text }}
📎 있음
-
미사용
{{ s.row.usage_count }}건 사용 중
{{ u.campaign_name }} / {{ u.round_number }}차 {{ u.round_name||'' }}
{{ u.sentiment_word }}
수정
복제
삭제
✉ SMS (텍스트)
🖼 MMS (이미지+텍스트)
본문이 90바이트(한글 약 45자)를 초과하면 통신사가 자동으로 LMS로 전환합니다. 국내 규격상 이미지 첨부는 MMS에서만 지원.
{{ (smsTplForm.template_text || '').length }}자
{{ smsTplPendingFile.name }} · {{ (smsTplPendingFile.size/1024).toFixed(1) }} KB
선택 취소
{{ smsTplForm.attachment.width }} × {{ smsTplForm.attachment.height }} · {{ (smsTplForm.attachment.byte_size/1024).toFixed(1) }} KB
첨부 삭제
{{ (smsTplForm.attachment || smsTplPendingFile) ? '이미지 교체' : '이미지 선택' }}
JPEG/PNG/GIF · 저장 시 함께 업로드되며 서버에서 최대 1280×960, 1MB 이하로 자동 리사이즈됩니다.
취소
저장
수동 수신거부 등록
수신거부 등록
파일: {{ optoutResult.file_name }} ({{ (optoutResult.file_size_bytes/1024).toFixed(1) }} KB) · 처리 {{ optoutResult.processing_time_ms }} ms
📊 발견 번호
{{ optoutResult.phone_numbers_found }}
✅ 신규 등록
{{ optoutResult.inserted }}
🔁 파일내 중복
{{ optoutResult.duplicates_in_file }}
📂 DB 기존 중복
{{ optoutResult.duplicates_in_db }}
닫기
목록 새로고침
수신거부 목록
선택 삭제 ({{ optoutSelected.length }})
전체 {{ optoutTotal }}건
{{ s.row.method }}
삭제
도메인 등록
등록
도메인 목록
{{ s.row.is_active?'활성':'비활성' }}
{{ s.row.is_active?'비활성':'활성' }}
삭제
📥 Excel 다운로드
📄 PDF 다운로드
DB 유효율
{{ customerStats.db_valid_rate || 0 }}%
성공률
{{ customerStats.success_rate || 0 }}%
재시도 전환율
{{ customerStats.retry_conversion_rate || 0 }}%
수신거부율
{{ customerStats.optout_rate || 0 }}%
SRQS 품질 지표 (최근 30일)
평균 SRQS
{{ statsSrqs.avg_srqs }}
총 연결 통화
{{ statsSrqs.total_connected }}건
우호도 추이
{{ statsSrqs.nfs_score }} {{ favorabilityLabel(statsSrqs.nfs_score) }}
상담원별 SRQS 상세
{{ s.row.weeks[0].avg_srqs ?? '-' }}
-
{{ s.row.weeks[1].avg_srqs ?? '-' }}
-
{{ s.row.weeks[2].avg_srqs ?? '-' }}
-
{{ s.row.weeks[3].avg_srqs ?? '-' }}
-
하락
-
통화 성과
상담원별 성과
{{ s.row.success_rate }}%
{{ a.split(':')[0] }}
-
캠페인별 오버라이드
비어 있으면 위의 기본값이 적용됩니다. 값을 입력하면 해당 캠페인에만 적용됩니다.
{{ s.row.is_active ? '운영' : '중지' }}
건
건
저장
기본값 적용
{{ s.row.created_at }}
확인됨
확인필요
{{ s.row.notification_type_label || s.row.notification_type }}
{{ s.row.title }}
{{ s.row.message }}
{{ s.row.created_at }}
{{ s.row.action }}
{{ s.row.target_table }}#{{ s.row.target_id }}
-
{ auditPage=p; loadAuditLogs(); }"
@size-change="sz => { auditPageSize=sz; auditPage=1; loadAuditLogs(); }"
style="margin-top:16px">
관리자 계정 생성
생성
비밀번호 변경
비밀번호 변경
{{ isSuperAdmin ? '계정 목록' : '내 계정' }}
{{ s.row.is_super?'시스템 관리자':'관리자' }}
미사용
등록됨
등록 대기
{{ s.row.is_active?'활성':'비활성' }}
잠금
잠금해제
수정
삭제
9자 이상, 대/소문자/숫자/특수문자 포함. 변경 시 다음 로그인에서 비번 변경 강제
취소
저장
해당 관리자에게 이 QR 코드를 안내하세요. Google Authenticator / Authy 등으로 스캔 후,
아래 테스트 인증에 앱의 6자리 코드를 입력하면 등록이 확정됩니다.
수동 입력 Secret
{{ adminOtpData.secret }}
Issuer / 계정
{{ adminOtpData.issuer }} / {{ adminOtpData.username }}
연동 테스트 · 등록 확정
앱에 표시된 6자리 코드를 입력해 인증이 되면 OTP 등록이 확정됩니다.
테스트 인증
성공
불일치
Secret 복사
닫기
※ 서버가 5분마다 자동으로 성실도 이상 징후를 검사하여 아래 목록에 기록합니다.
일괄 확인
{{ s.row.alert_type_label || s.row.alert_type }}
{{ s.row.agent_name || ('#' + s.row.agent_id) }}
{{ s.row.detail_human || s.row.detail }}
읽음
취소저장
{{ customerDetail.pseudonym }}
{{ customerDetail.status }}
{{ customerDetail.call_count }}
{{ customerDetail.consent_status }}
{{ customerDetail.memo || '-' }}
통화 이력
CPU
{{ serverStatus.cpu?.usage_pct || 0 }}%
메모리
{{ serverStatus.memory?.usage_pct || 0 }}%
디스크
{{ serverStatus.disk?.usage_pct || 0 }}%
DB
{{ serverStatus.database?.status || '?' }}
{{ s.row.status_label || s.row.status }}
{{ s.row.latest_result_label }}
-
{{ s.row.latest_srqs_score }}
-
{csPage=p;loadCustomerSentiments()}">
총 {{ csTotal }}명
검색 필터
검색
초기화
{{ s.row.result_label || s.row.result_code }}
0 무효
{{ s.row.srqs_score }}
{{ s.row.srqs_score }}
{{ s.row.srqs_score }}
-
{callHistoryPage=p;loadCallHistory()}">
CSV 내보내기
{{ s.row.is_active?'활성':'비활성' }}
{{ s.row.success_rate }}%
{{ s.row.avg_srqs }}
-
{{ s.row.last_call_at.substring(0,16) }}
-
상세보기
기간:
~
조회
총 통화
{{ agentHistoryData.timeline.length }}
성공
{{ agentHistoryData.timeline.filter(e => ['SUCCESS','STRONG_POS','POSITIVE'].includes(e.result)).length }}
일별 평균
{{ agentHistoryData.daily_stats.length ? Math.round(agentHistoryData.daily_stats.reduce((s,d)=>s+d.count,0) / agentHistoryData.daily_stats.length) : 0 }}
공백(30분+) 건수
{{ agentHistoryData.timeline.filter(e => e.gap_alert).length }}
{{ s.row.avg_srqs }}
-
{{ s.row.week_start }} ~ {{ s.row.week_end }}
{{ s.row.avg_srqs }}
-
공백 {{ e.gap_minutes }}분
{{ e.result }}
Ring:{{ e.ring_time }}s 통화:{{ e.duration }}s 설문:{{ e.survey_input_time }}s
SRQS:{{ e.srqs_score }}
전체 고객: {{ dbDistSummary.total_customers }}명
배정: {{ dbDistSummary.assigned }}명
미배정: {{ dbDistSummary.unassigned }}명
{{ ag.agent_name }} ({{ ag.agent_code }})
{{ ag.is_online?'온라인':'오프라인' }}
배정: {{ ag.total }}건
SRQS {{ ag.avg_srqs }}
완료 {{ ag.completed_pct }}%
미통화 {{ ag.pending_pct }}%
수신거부 {{ ag.optout_pct }}%
배정된 고객 없음
기본 5단계 버튼 삽입
+ 버튼 추가
삭제
취소저장