{
  "release": {
    "available": "새 버전이 준비되었습니다. 작성 중인 일을 마친 뒤 적용할 수 있습니다.",
    "apply": "새 버전 적용",
    "confirmTitle": "새 버전을 적용할까요?",
    "confirmBody": "페이지를 새로고침합니다. 보관된 상담·메모 초안은 복원할 수 있습니다. 저장되지 않은 입력과 원본 첨부파일은 사라질 수 있으니 먼저 확인하거나 다운로드하세요. 초안 보관 실패가 있으면 새로고침 전에 다시 확인합니다.",
    "loadTitle": "이 화면을 불러오지 못했습니다",
    "loadBody": "앱이 업데이트되었거나 연결이 불안정할 수 있습니다. 이전 화면에서 작성 내용을 확인하거나, 보관되지 않은 입력과 첨부를 확인한 뒤 새로고침하세요.",
    "reload": "앱 새로고침",
    "back": "이전 화면"
  },
  "common": {
    "save": "저장",
    "cancel": "취소",
    "delete": "삭제",
    "edit": "수정",
    "add": "추가",
    "search": "검색",
    "darkMode": "다크 모드",
    "lightMode": "라이트 모드",
    "filter": "필터",
    "refresh": "새로고침",
    "loading": "불러오는 중...",
    "loadMore": "더 보기",
    "noData": "표시할 데이터가 없습니다",
    "noDescription": "설명이 없습니다",
    "noMessages": "아직 메시지가 없습니다",
    "active": "활성",
    "inactive": "비활성",
    "confirm": "확인",
    "close": "닫기",
    "submit": "제출",
    "back": "뒤로",
    "next": "다음",
    "previous": "이전",
    "yes": "예",
    "no": "아니오",
    "all": "전체",
    "select": "선택",
    "actions": "작업",
    "status": "상태",
    "date": "날짜",
    "name": "이름",
    "email": "이메일",
    "password": "비밀번호",
    "description": "설명",
    "settings": "설정",
    "language": "언어",
    "korean": "한국어",
    "english": "영어",
    "unknown": "알 수 없음",
    "unknownUser": "알 수 없는 사용자",
    "value": "값",
    "justNow": "방금 전",
    "minutesAgo": "{{count}}분 전",
    "hoursAgo": "{{count}}시간 전",
    "daysAgo": "{{count}}일 전",
    "customer": "고객",
    "online": "온라인",
    "offline": "오프라인",
    "owner": "소유자",
    "admin": "관리자",
    "member": "멤버",
    "confirmDelete": "정말 삭제하시겠습니까?",
    "invitationSent": "초대를 발송했습니다",
    "today": "오늘",
    "yesterday": "어제",
    "searchPlaceholder": "고객, 채팅, 캠페인 검색...",
    "phone": "전화번호",
    "copied": "복사됨!",
    "copy": "복사",
    "create": "생성",
    "update": "수정",
    "type": "유형",
    "title": "제목",
    "pause": "일시정지",
    "activate": "활성화",
    "allCategories": "전체 카테고리",
    "category": "카테고리",
    "color": "색상",
    "manager": "매니저",
    "none": "없음",
    "tags": "태그",
    "error": "오류가 발생했습니다. 잠시 후 다시 시도해 주세요",
    "clear": "지우기",
    "errorOccurred": "오류가 발생했습니다. 잠시 후 다시 시도해 주세요",
    "failed": "실패",
    "high": "높음",
    "low": "낮음",
    "navigate": "이동",
    "noResults": "결과 없음",
    "normal": "보통",
    "remove": "제거",
    "retry": "다시 시도",
    "role": "역할",
    "searching": "검색 중...",
    "success": "성공",
    "typeToSearch": "검색어를 입력하세요...",
    "urgent": "긴급",
    "visibility": "공개 설정",
    "created": "생성됨",
    "team": "팀",
    "updated": "수정됨",
    "undo": "되돌리기",
    "basicInfo": "기본 정보",
    "exportCsv": "CSV 내보내기",
    "exporting": "내보내는 중...",
    "skipToContent": "본문으로 건너뛰기",
    "createdAt": "등록일",
    "managerOnly": "관리자 또는 매니저만 변경할 수 있습니다",
    "adminOnly": "관리자만 삭제할 수 있습니다",
    "realtimeDown": "실시간 연결이 끊겼습니다. 다시 연결하는 중이며, 그동안 새 메시지가 표시되지 않을 수 있습니다",
    "increased": "증가",
    "decreased": "감소",
    "duplicate": "복제",
    "preview": "미리보기",
    "history": "기록",
    "attachFile": "파일 첨부",
    "moveUp": "위로",
    "moveDown": "아래로",
    "stats": "통계",
    "details": "상세",
    "approve": "승인",
    "notifications": "알림",
    "notificationsWithCount": "알림 — 읽지 않음 {{n}}건",
    "send": "보내기",
    "pagination": "페이지 이동",
    "goToPage": "{{n}}페이지",
    "openMenu": "메뉴 열기",
    "agent": "상담원",
    "priorityLow": "낮음",
    "priorityMedium": "보통",
    "priorityHigh": "높음",
    "priorityUrgent": "긴급",
    "pending": "대기 중",
    "approved": "승인됨",
    "executed": "실행됨",
    "rejected": "반려됨",
    "me": "나",
    "languageLoadError": "언어를 불러오지 못했습니다. 연결 상태를 확인한 뒤 다시 시도해주세요."
  },
  "auth": {
    "cleanup": {
      "title": "이 브라우저의 일부 개인 자료를 지우지 못했습니다",
      "blockedTitle": "이 계정의 이전 브라우저 자료 정리가 필요합니다",
      "body": "서버에서 로그아웃돼도 브라우저의 자료 정리는 남아 있을 수 있습니다. 삭제를 확인할 때까지 정리 중인 계정의 이전 초안과 원본 파일은 표시하지 않습니다. 브라우저 저장소 접근을 복구하고 재시도하거나 브라우저 설정에서 이 사이트의 데이터를 지워 주세요. 다른 계정의 초안은 유지합니다.",
      "memoryOnly": "이 브라우저에는 정리 요청을 새로고침 뒤에도 보관하지 못했습니다. 정리가 끝날 때까지 탭을 유지하거나 이동 전에 이 사이트의 데이터를 지워 주세요.",
      "retry": "개인 자료 정리 재시도",
      "otherAccount": "다른 계정으로 로그인"
    },
    "sessionUnavailable": "로그인 상태를 확인할 수 없습니다",
    "sessionUnavailableDescription": "연결이 잠시 끊겼습니다. 잠시 후 다시 시도해 주세요.",
    "login": "로그인",
    "logout": "로그아웃",
    "register": "회원가입",
    "welcomeBack": "다시 오신 것을 환영합니다",
    "createAccount": "계정 만들기",
    "signInContinue": "대시보드로 이동하려면 로그인하세요",
    "getStarted": "Trifrost 시작하기",
    "fullName": "이름",
    "namePlaceholder": "홍길동",
    "signUp": "회원가입",
    "noAccount": "계정이 없으신가요?",
    "hasAccount": "이미 계정이 있으신가요?",
    "pleaseWait": "잠시만 기다려 주세요...",
    "demoCredentials": "데모 계정",
    "signInWithGoogle": "Google로 로그인",
    "secureLogin": "안전한 로그인",
    "googleLoginInfo": "Google 계정으로 안전하게 로그인하세요. 별도의 비밀번호가 필요하지 않습니다",
    "authFailed": "로그인하지 못했습니다. 잠시 후 다시 시도해 주세요",
    "noToken": "인증 토큰을 받지 못했습니다",
    "authError": "인증 오류",
    "signingYouIn": "로그인 중...",
    "pleaseWaitAuth": "인증 완료까지 잠시 기다려주세요",
    "termsNotice": "계속 진행하면 서비스 약관 및 개인정보 처리방침에 동의하는 것으로 간주됩니다.",
    "email": "이메일",
    "password": "비밀번호",
    "sideTitle": "모든 고객 대화가 모이는 곳",
    "sideSubtitle": "카카오톡, LINE, 웹 위젯의 문의를 하나의 인박스로 모으는 옴니채널 플랫폼.",
    "sideBullet1": "카카오톡 · LINE · 웹 위젯을 하나의 인박스로",
    "sideBullet2": "지식베이스를 근거로 AI가 먼저 답변",
    "sideBullet3": "테넌트 격리 · 세션 무효화 · 웹훅 서명 검증",
    "sideQuote": "\"도입 한 달 만에 첫 응답 시간이 38% 줄었습니다. 이제 채널을 오가며 문의를 찾던 시간이 사라졌어요.\"",
    "sideQuoteAuthor": "박서연 · CX 리드, 마켓웨이브",
    "backToHome": "홈으로 돌아가기",
    "orUseEmail": "또는 이메일로 계속하기",
    "forgotPassword": "비밀번호를 잊으셨나요?",
    "forgotPasswordTitle": "비밀번호 재설정",
    "forgotPasswordSubtitle": "가입하신 이메일 주소를 입력하시면 재설정 링크를 보내 드립니다.",
    "sendResetLink": "재설정 링크 보내기",
    "checkYourInbox": "메일함을 확인해 주세요",
    "resetSent": "{{email}} 주소로 계정이 등록되어 있다면 비밀번호 재설정 링크를 보내 드렸습니다",
    "resetSentHint": "메일이 보이지 않으면 스팸함을 확인해 주세요. 링크는 1시간 후 만료됩니다.",
    "backToLogin": "로그인으로 돌아가기",
    "resetPasswordTitle": "새 비밀번호 설정",
    "resetPasswordSubtitle": "앞으로 사용할 비밀번호를 입력해 주세요",
    "resetPasswordAction": "비밀번호 변경하기",
    "newPassword": "새 비밀번호",
    "confirmPassword": "비밀번호 확인",
    "passwordMismatch": "비밀번호가 일치하지 않습니다",
    "passwordHint": "{{count}}자 이상 입력해 주세요",
    "resetLinkInvalid": "이 재설정 링크는 유효하지 않거나 만료되었습니다",
    "resetLinkInvalidTitle": "링크를 사용할 수 없습니다",
    "resetLinkMissing": "재설정 토큰이 없습니다. 메일의 링크를 다시 눌러 주세요",
    "requestNewLink": "새 링크 요청하기",
    "signupSubtitle": "몇 분이면 팀의 고객 응대를 시작할 수 있습니다",
    "signupFailed": "가입하지 못했습니다. 입력 내용을 확인해 주세요",
    "workspaceName": "워크스페이스 이름",
    "workspacePlaceholder": "우리 회사 고객지원",
    "workspaceHint": "비워 두면 이름을 따서 자동으로 만들어집니다.",
    "genericError": "요청을 처리하지 못했습니다. 잠시 후 다시 시도해 주세요",
    "sessionRevoked": "비밀번호가 변경되어 기존 로그인이 해제되었습니다. 다시 로그인해 주세요",
    "verifyRequired": "로그인하려면 이메일 인증이 필요합니다.",
    "resendVerification": "인증 메일 다시 보내기",
    "verificationResent": "인증 메일을 다시 보냈습니다",
    "verifying": "이메일 인증 중...",
    "verifiedTitle": "이메일 인증 완료",
    "verifiedBody": "인증이 완료되었습니다. 잠시 후 대시보드로 이동합니다.",
    "verifyFailed": "이메일을 인증하지 못했습니다",
    "verifyFailedTitle": "인증에 실패했습니다",
    "verifyFailedHint": "링크가 만료되었을 수 있습니다. 로그인 후 설정에서 인증 메일을 다시 받을 수 있습니다",
    "verifyTokenMissing": "인증 토큰이 없습니다. 메일의 링크를 다시 눌러 주세요",
    "verifyBannerTitle": "이메일 주소를 인증해 주세요",
    "verifyBannerBody": "{{email}} 주소로 보낸 메일의 링크를 눌러 인증을 완료해 주세요",
    "role": "권한",
    "roleAdmin": "관리자",
    "roleManager": "매니저",
    "roleAgent": "상담원",
    "inviteLoading": "초대 정보를 확인하는 중...",
    "inviteTitle": "{{workspace}}에 합류하기",
    "inviteSubtitle": "{{inviter}}님이 회원님을 초대했습니다. 계정을 만들어 합류하세요",
    "inviteSubtitleNoInviter": "계정을 만들어 워크스페이스에 합류하세요",
    "acceptInvite": "초대 수락하고 시작하기",
    "inviteInvalid": "이 초대는 유효하지 않거나 만료되었습니다",
    "inviteInvalidTitle": "초대를 사용할 수 없습니다",
    "inviteInvalidHint": "이미 사용했거나 만료된 초대일 수 있습니다. 워크스페이스 관리자에게 다시 초대를 요청해 주세요",
    "inviteAcceptFailed": "초대를 수락하지 못했습니다",
    "sessionExpired": "로그인 세션이 만료되어 자동으로 로그아웃되었습니다. 다시 로그인해 주세요",
    "googleOnlyNotice": "Google 또는 관리자가 설정한 조직 SSO로 로그인하세요.",
    "logoutTitle": "로그아웃하시겠어요?",
    "logoutHandover": "다른 기기에 연결이 없다면 담당 대화 {{count}}건이 다른 상담원에게 넘어갑니다.",
    "logoutHandoverAlone": "다른 기기에 연결이 없다면 담당 대화 {{count}}건이 미배정으로 돌아갑니다. 지금 접속 중인 다른 상담원은 없습니다.",
    "sessionChanged": "다른 탭에서 로그인 세션이 변경되었습니다. 앱을 다시 열어 현재 계정으로 계속해 주세요.",
    "retryLogout": "로그아웃 다시 확인",
    "logoutConfirmed": "서버에서 이 로그인 세션이 종료된 것을 확인했습니다.",
    "logoutUnconfirmed": "화면은 잠겼지만 서버의 로그아웃을 확인하지 못했습니다. 다시 연결한 뒤 재시도하거나 다른 로그인 장치에서 이 세션을 종료해 주세요.",
    "organizationSso": "조직 SSO",
    "workspaceSlug": "워크스페이스 주소 이름",
    "organizationSignIn": "조직 계정으로 로그인",
    "reauthRequired": "조직 계정으로 다시 로그인한 뒤 계속해 주세요."
  },
  "landing": {
    "nav": {
      "features": "기능",
      "how": "작동 방식",
      "channels": "채널",
      "login": "로그인",
      "start": "무료로 시작",
      "pricing": "요금제",
      "help": "도움말",
      "agentic": "AI 에이전트",
      "switch": "채널톡에서 옮기기",
      "label": "주요 메뉴",
      "experience": "활용 사례",
      "faq": "자주 묻는 질문",
      "open": "메뉴 열기",
      "close": "메뉴 닫기",
      "skip": "본문으로 건너뛰기"
    },
    "hero": {
      "badge": "회원제 서비스·SaaS·온라인 교육을 위한 고객 상담",
      "title1": "반복 문의는 AI에게,",
      "titleAccent": "중요한 상담은",
      "title2": " 팀에게",
      "subtitle": "우리 서비스의 FAQ로 답변하고, 로그인 회원의 상담 맥락을 이어가세요. 설치와 이전 가능 여부도 함께 확인해드립니다.",
      "ctaPrimary": "우리 사이트 도입 가능 여부 확인",
      "ctaSecondary": "데모 직접 체험",
      "note": "무료 플랜으로 직접 시작 가능 · 화면은 가상 상담 예시",
      "illustrationAlt": "여러 채널의 메시지가 Trifrost 인박스로 모여 AI 추천 답변과 함께 해결되는 모습",
      "online": "온라인",
      "msgCustomer1": "멤버십을 잠시 쉬고 싶어요",
      "msgAgent": "일시정지 절차를 안내할게요 🙂",
      "msgCustomer2": "빠른 답변 감사해요!",
      "listPreviewA": "수강 기간은 어디서 보나요?",
      "listPreviewB": "계정 관련 상담이 필요해요",
      "aiAnswerLine1": "마이페이지에서 일시정지를 신청할 수 있어요.",
      "aiAnswerLine2": "계정별 확인은 담당자에게 이어드릴게요.",
      "aiSourceLabel": "근거",
      "aiSourceA": "회원 FAQ",
      "aiSourceB": "일시정지 안내",
      "resolved": "상담 해결됨",
      "tagRepeat": "회원",
      "toastTitle": "가상 상담 예시",
      "toastDesc": "FAQ 답변 → 담당자 연결"
    },
    "channels": {
      "label": "웹 상담에서 시작해, 필요한 채널로 확장하세요",
      "soon": "준비 중",
      "webWidget": "웹 위젯",
      "phone": "전화",
      "note": "웹 위젯으로 시작할 수 있습니다. 카카오·LINE은 제공업체 계정과 연동 설정, 수신·발신 검증이 필요합니다. 준비 중인 채널은 아직 연결할 수 없습니다."
    },
    "features": {
      "title": "대화, 고객 정보, 다음 행동까지 이어지도록",
      "subtitle": "고객의 질문에 답하는 순간부터 담당자가 해결하는 순간까지. 팀에 필요한 도구를 하나의 흐름으로 연결합니다.",
      "inboxTitle": "옴니채널 인박스",
      "inboxDesc": "웹 위젯과 설정된 LINE·카카오 대화를 한 화면에서 관리합니다. 외부 채널은 제공업체 계정과 수신·발신 검증이 필요합니다.",
      "aiTitle": "AI 에이전트 & 챗봇",
      "aiDesc": "시나리오 챗봇과 AI 에이전트가 반복 문의를 먼저 해결하고, 확신이 낮은 건만 상담원에게 넘깁니다. 운영시간 밖에도 응대합니다.",
      "crmTitle": "고객 CRM & 세그먼트",
      "crmDesc": "모든 상호작용이 고객 프로필에 쌓입니다. 행동·구매·속성 기반 세그먼트로 정확한 타깃 그룹을 만드세요",
      "campaignTitle": "마케팅 캠페인",
      "campaignDesc": "세그먼트에 맞춘 멀티채널 캠페인과 A/B 테스트. 보낸 뒤 열람·클릭·전환까지 한 화면에서 확인합니다.",
      "analyticsTitle": "분석 & AI 품질",
      "analyticsDesc": "응답 시간, 해결률, 고객 만족도, 캠페인 성과에 더해 AI 답변 품질까지 대시보드에서 추적합니다.",
      "teamTitle": "팀 협업",
      "teamDesc": "내부 노트(귓속말), 상담 배정, 팀 채팅으로 팀 전체가 한 호흡으로 움직입니다. 상담원·관리자 권한도 분리됩니다.",
      "knowledgeTitle": "지식베이스 & 헬프센터",
      "knowledgeDesc": "등록한 문서를 AI 답변의 근거로 활용하고, 공개 헬프센터로도 제공하세요. 같은 지식을 고객과 상담팀이 함께 활용합니다.",
      "proactiveTitle": "선제 메시지 & 온사이트",
      "proactiveDesc": "특정 페이지, 특정 세그먼트, 특정 시점에 팝업·배너·선제 대화를 띄웁니다. 문의가 오기 전에 먼저 말을 겁니다.",
      "workflowTitle": "워크플로우 & SLA",
      "workflowDesc": "조건에 따라 자동 배정·태깅·에스컬레이션하고, 첫 응답과 해결 목표를 SLA로 관리합니다.",
      "i18nTitle": "한국어 · 영어 동시 운영",
      "i18nDesc": "방문자는 브라우저 언어로, 상담원은 자기가 고른 언어로 씁니다. 위젯·콘솔은 물론 안내 메일도 받는 사람의 언어로 나갑니다.",
      "securityTitle": "보안 · 데이터 주권",
      "securityDesc": "워크스페이스끼리 데이터가 격리되고, 누가 무엇을 열람·변경했는지 감사 기록에 남습니다. 고객 한 명 단위로도, 워크스페이스 전체로도 언제든 내보낼 수 있습니다.",
      "installTitle": "붙이기 쉬운 위젯",
      "installDesc": "스크립트 한 줄로 웹 상담을 시작합니다. 로그인 회원 연결은 서버 서명으로 본인을 확인하며, 사이트 정책에 맞는 설치 설정을 지원합니다.",
      "more": "캠페인·협업·보안 등 더 많은 기능 보기"
    },
    "how": {
      "title": "작게 시작하고, 우리 서비스에 맞게 연결하세요",
      "subtitle": "웹 위젯부터 지식베이스, 담당자 연결까지 세 단계로 준비합니다.",
      "step1Title": "위젯 설치",
      "step1Desc": "스크립트 한 줄을 사이트에 붙여넣으면 채팅 위젯이 바로 나타납니다.",
      "step2Title": "답변할 지식 준비",
      "step2Desc": "FAQ와 안내 문서를 등록하고, 공개할 내용과 AI가 참조할 내용을 확인하세요.",
      "step3Title": "팀과 함께 응대 시작",
      "step3Desc": "상담 담당자와 운영시간을 정하고 AI 답변을 검토하세요. 회원 식별과 외부 채널은 필요한 범위부터 연동합니다.",
      "code": "설치 코드 예시 보기",
      "help": "회원 연동이나 기존 상담 이력 이전이 필요한가요?",
      "review": "우리 사이트 연결 범위 확인"
    },
    "stats": {
      "freePlanValue": "₩0",
      "freePlan": "무료 플랜으로 시작",
      "freeAiValue": "50",
      "freeAi": "무료 플랜 월 AI 자동응답(건)",
      "alwaysValue": "24/7",
      "always": "운영시간 밖에도 AI 응대",
      "setupValue": "1줄",
      "setup": "웹 위젯 설치 스크립트"
    },
    "cta": {
      "title": "우리 서비스의 첫 상담 흐름을 만들어보세요",
      "subtitle": "직접 시작해도, 함께 검토해도 좋습니다. FAQ 응대부터 회원 연결과 상담 이력 이전까지 필요한 범위를 확인하세요.",
      "button": "우리 사이트 도입 검토",
      "secondary": "무료로 직접 시작하기",
      "note": "무료 플랜 월 AI 답변 50건 · 회원 식별과 외부 채널은 별도 연동 필요"
    },
    "footer": {
      "rights": "All rights reserved."
    },
    "agentic": {
      "title": "AI가 답하는 데서 멈추지 않습니다",
      "subtitle": "문의를 이해하는 것과 처리하는 것은 다른 일입니다. Trifrost의 AI는 우리 시스템을 직접 조회하고, 운영자를 대신해 플랫폼을 조작합니다 — 무엇을 자동으로 하고 무엇을 승인받을지는 우리가 정합니다.",
      "executeTitle": "고객 응대 액션",
      "executeDesc": "대화 도중 AI가 우리 API를 호출합니다. \"주문 어디쯤이에요?\"에 지식베이스 문장을 읊는 대신, 실제 주문을 조회해서 답합니다.",
      "executeChip1": "GET · POST · PUT · PATCH · DELETE",
      "executeChip2": "요청 본문·헤더 템플릿",
      "executeChip3": "응답을 근거로 답변 생성",
      "executeSafety": "액션마다 자동 실행 / 확인 후 실행을 고릅니다. 내부망 주소로 나가는 요청은 차단되고(SSRF 가드), 타임아웃과 응답 길이 상한이 걸립니다.",
      "operateTitle": "운영 에이전트",
      "operateDesc": "콘솔에서 말로 지시하면 AI가 플랫폼을 직접 조작합니다. 화면을 찾아다니며 클릭하는 대신 \"이번 주 미해결 문의 담당자 배정해줘\"라고 쓰면 됩니다.",
      "operateChip1": "대화·고객·세그먼트 조회",
      "operateChip2": "캠페인·팀·지식베이스 관리",
      "operateChip3": "위젯·챗봇·채널 설정 변경",
      "operateSafety": "민감한 작업은 바로 실행하지 않고 승인 대기로 남습니다. 운영자의 역할(role)로 쓸 수 있는 도구가 제한되고, 실행된 작업은 전부 기록됩니다."
    },
    "pricing": {
      "title": "규모에 맞춰 시작하세요",
      "subtitle": "무료 플랜으로 먼저 확인하세요. 상담 규모에 맞는 시트·월 활성 고객·AI 답변 한도를 비교할 수 있습니다.",
      "popular": "팀 운영에 추천",
      "perMonth": "/월",
      "freeLine": "시트 2석 · 월 활성 고객 1,000명 · AI 50건",
      "starterLine": "시트 3석 · 월 활성 고객 3,000명 · AI 200건",
      "growthLine": "시트 8석 · 월 활성 고객 20,000명 · AI 600건",
      "scaleLine": "시트 20석 · 월 활성 고객 100,000명 · AI 1,700건",
      "compare": "플랜 전체 비교하기",
      "note": "연 결제 시 20% 할인 · 표시 가격에 지역별 세금(VAT 등)은 포함되지 않습니다"
    },
    "experience": {
      "eyebrow": "우리 팀에 맞는 상담 흐름",
      "title": "고객이 묻고, AI가 돕고, 팀이 이어받습니다",
      "subtitle": "서비스 유형을 선택하고 FAQ 답변부터 담당자 연결까지 살펴보세요.",
      "choose": "서비스 유형 선택",
      "demo": "데모에서 흐름 이어보기",
      "preview": "상담 흐름 미리보기",
      "example": "가상 예시",
      "handoff": "담당자에게 이어지는 맥락",
      "note": "이 미리보기는 가상 데이터로 구성한 흐름 설명이며 실제 AI나 상담 연결을 실행하지 않습니다. 회원 정보 확인은 서버 연동이 필요합니다.",
      "membership": {
        "label": "회원제 서비스",
        "title": "매번 같은 이용 안내, 더 자연스럽게",
        "description": "멤버십 이용 방법은 등록한 FAQ로 안내하고, 계정별 확인이 필요한 문의는 앞선 대화와 함께 팀에 전달하세요.",
        "benefit1": "정책 문서를 근거로 반복 질문에 응대",
        "benefit2": "회원 문의의 맥락을 유지하며 담당자 연결",
        "question": "멤버십을 잠시 쉬고 싶어요",
        "answer": "마이페이지에서 다음 결제일 전까지 일시정지를 신청할 수 있어요. 계정별 적용 여부는 담당자에게 확인을 요청할게요.",
        "source": "회원 FAQ · 일시정지 안내",
        "handoff": "일시정지 문의, 참조한 이용 정책, 계정 확인 필요 여부를 함께 확인합니다."
      },
      "saas": {
        "label": "SaaS",
        "title": "설정 질문부터 계정 확인까지 한 흐름으로",
        "description": "제품 사용법은 지식베이스에서 안내하고, 워크스페이스별 설정이나 권한 확인이 필요한 건은 담당자가 이어받습니다.",
        "benefit1": "도움말과 사용 가이드를 답변 근거로 활용",
        "benefit2": "팀 배정과 내부 노트로 필요한 확인을 연결",
        "question": "새 팀원을 초대하려면 어떻게 하나요?",
        "answer": "설정의 팀 관리에서 이메일로 초대할 수 있어요. 초대 권한이나 이용 한도 확인이 필요하면 담당자가 이어서 도와드릴게요.",
        "source": "제품 가이드 · 팀원 초대",
        "handoff": "팀원 초대 질문과 안내한 문서, 추가 권한 확인 필요 여부를 전달합니다."
      },
      "education": {
        "label": "온라인 교육",
        "title": "수강 안내는 빠르게, 개별 상담은 꼼꼼하게",
        "description": "수강 기간과 이용 방법은 먼저 안내하고, 개인별 수강 이력이나 결제 확인이 필요한 문의는 상담팀과 연결하세요.",
        "benefit1": "수강 안내와 자주 묻는 질문을 한곳에서 관리",
        "benefit2": "담당자가 앞선 대화와 안내 내용을 함께 확인",
        "question": "내 강의 이용 기간은 어디서 보나요?",
        "answer": "내 강의실에서 강의별 이용 기간을 확인할 수 있어요. 표시된 기간에 확인이 필요하면 담당자에게 이어드릴게요.",
        "source": "수강 FAQ · 이용 기간",
        "handoff": "수강 기간 문의, 참조한 안내 문서, 개별 이력 확인 요청을 함께 살펴봅니다."
      }
    },
    "faq": {
      "eyebrow": "도입 전에 궁금한 것들",
      "title": "처음 시작하는 팀도, 옮겨오는 팀도",
      "subtitle": "설치, AI 답변, 채널 연결과 비용까지. 검토할 내용을 먼저 확인하세요.",
      "contact": "도입 관련 문의하기",
      "estimate": "요금과 예상 비용 보기",
      "switch": "채널톡 이전 절차 보기",
      "startQuestion": "어디서부터 시작하면 좋을까요?",
      "startAnswer": "무료 워크스페이스를 만든 뒤 사이트에 웹 위젯을 설치하고 FAQ를 등록해보세요. 실제 고객에게 공개하기 전에 답변과 담당자 연결을 확인할 수 있습니다. 로그인 회원을 연결하려면 고객사 서버에서 회원 서명을 생성하는 연동이 필요합니다.",
      "aiQuestion": "AI가 답하기 어려운 문의는 어떻게 하나요?",
      "aiAnswer": "등록한 지식베이스를 답변 근거로 활용하고, 응답 기준에 따라 담당자에게 연결하도록 설정할 수 있습니다. AI 답변의 정확성을 보장하는 것은 아니므로 실제 질문으로 검토하고, 민감한 작업은 승인 절차를 적용하세요.",
      "channelsQuestion": "카카오톡과 LINE도 바로 연결되나요?",
      "channelsAnswer": "웹 위젯부터 사용할 수 있습니다. LINE은 공식 계정 설정이 필요하며, 카카오는 호환되는 딜러사 게이트웨이 계약과 연동이 필요합니다. 실제 수신·발신은 고객사 계정에서 검증해야 합니다. Instagram, 네이버 톡톡, 전화는 준비 중입니다.",
      "migrationQuestion": "채널톡을 사용 중인데 상담 이력을 옮길 수 있나요?",
      "migrationAnswer": "고객 정보와 상담 이력의 지원 형식을 확인하고 미리보기 후 가져올 수 있습니다. 가져온 상담은 조회용 보관 이력이며 진행 중인 대화로 재개되지는 않습니다. 첨부파일과 회원 매핑을 포함한 이전 범위는 원본 자료를 기준으로 확인합니다.",
      "costQuestion": "월 비용과 AI 초과 사용량을 확인할 수 있나요?",
      "costAnswer": "요금제 페이지에서 시트와 월 AI 답변 수에 따른 예상 비용을 계산할 수 있습니다. 관리자 설정에서 AI 답변 초과요금 상한도 지정할 수 있습니다. 이 상한은 기본 구독료·추가 시트·외부 채널 비용·세금을 포함하지 않습니다."
    }
  },
  "consent": {
    "title": "쿠키 사용 선택",
    "description": "Trifrost는 사이트 운영에 꼭 필요한 저장소만 기본으로 사용합니다. 동의하시면 이용 통계(분석)와 광고 성과 측정·리마케팅(광고)에 쿠키와 추적 스크립트를 사용합니다. 선택은 언제든 사이트 하단의 쿠키 설정에서 바꿀 수 있습니다.",
    "policyLink": "개인정보처리방침",
    "purposesLegend": "목적별 선택",
    "necessary": "필수",
    "necessaryDetail": "로그인 유지, 보안, 언어와 이 쿠키 선택 저장. 끌 수 없습니다.",
    "analytics": "분석",
    "analyticsDetail": "Google Analytics, HawkEyeOps, Cloudflare Web Analytics로 방문·이용 통계를 집계해 사이트를 개선합니다.",
    "accountDescription": "모두 허용에는 관리자 로그인 후 해당 워크스페이스의 구독 통계 분석도 포함됩니다. 목적별 설정에서 따로 선택할 수 있습니다.",
    "accountAnalytics": "계정 구독 분석",
    "accountAnalyticsDetail": "관리자로 로그인한 워크스페이스의 구독 가입·활성화·결제·갱신·해지 통계를 Google Analytics로 분석하는 데 동의합니다. 분석 선택이 필요하며, 철회하면 이후 전송을 중단합니다.",
    "accountSyncPending": "계정의 분석 선택을 저장하는 중입니다. 연결이 끊기면 다음 로그인이나 연결 복구 시 다시 시도합니다.",
    "accountSyncFailed": "브라우저 선택은 적용됐지만 계정의 분석 선택 저장은 확인하지 못했습니다. 연결 후 쿠키 설정에서 다시 저장해 주세요. 서버에 저장될 때까지 이전 계정 선택이 남을 수 있습니다.",
    "advertising": "광고",
    "advertisingDetail": "Google Ads로 광고 성과(전환)를 측정하고, 이 사이트 방문 기록을 바탕으로 다른 사이트에서 Trifrost 광고를 보여 줍니다(리마케팅).",
    "acceptAll": "모두 허용",
    "rejectAll": "모두 거부",
    "customize": "목적별 설정",
    "save": "선택 저장",
    "settingsLink": "쿠키 설정"
  },
  "workspaceDeletion": {
    "title": "워크스페이스 삭제 요청",
    "description": "워크스페이스와 그 안의 대화·고객·문서를 삭제해 달라고 운영자에게 요청합니다. 요청하는 즉시 삭제되지는 않습니다. 결제와 데이터 내보내기를 확인한 뒤 처리하며, 늦어도 요청일로부터 30일 이내에 처리 결과를 알려 드립니다. 삭제 전에 데이터를 내보내 두세요.",
    "open": "삭제 요청",
    "confirmLabel": "확인을 위해 워크스페이스 이름 \"{{name}}\"을(를) 입력하세요",
    "confirm": "삭제 요청 보내기",
    "requested": "삭제 요청을 접수했습니다.",
    "pending": "{{requested}}에 삭제를 요청했습니다. {{respondBy}}까지 처리 결과를 알려 드립니다."
  },
  "notFound": {
    "title": "페이지를 찾을 수 없습니다",
    "body": "주소가 바뀌었거나 없는 페이지입니다. 아래에서 원하는 곳으로 이동하세요.",
    "linksLabel": "주요 페이지",
    "home": "홈으로",
    "pricing": "요금제",
    "contact": "문의하기"
  },
  "siteFooter": {
    "brandName": "제로투원플로우 (021flow)",
    "brandDescription": "AI 기반 디지털 제품과 자동화 서비스를 제공하는 개인사업자 브랜드입니다",
    "pending": "준비 중",
    "languageLabel": "언어",
    "langKo": "한국어",
    "langEn": "English",
    "product": {
      "heading": "Product",
      "overview": "서비스 소개",
      "features": "주요 기능",
      "pricing": "요금제",
      "help": "도움말"
    },
    "legal": {
      "heading": "Legal",
      "terms": "이용약관",
      "privacy": "개인정보처리방침",
      "dpa": "개인정보 처리위탁 부속합의서 (초안)",
      "refund": "환불 및 해지 정책",
      "subscription": "구독 약관"
    },
    "support": {
      "heading": "Support",
      "emailLabel": "문의",
      "phoneLabel": "고객지원 전화",
      "billingLabel": "결제/청구/환불 문의",
      "xsollaBuyerSupport": "Xsolla Support"
    },
    "business": {
      "heading": "사업자 정보",
      "tradeName": "상호",
      "representative": "대표자",
      "registrationNo": "사업자등록번호",
      "ecommerceRegNo": "통신판매업 신고번호",
      "address": "주소",
      "email": "이메일",
      "hostingProvider": "호스팅 제공자",
      "verification": "사업자정보 확인",
      "verificationLink": "확인하기"
    },
    "paymentNoticeHeading": "결제 안내",
    "paymentNotice": "웹 결제는 Xsolla 결제창에서 진행됩니다. 구매 전 판매자, 최종 금액·세금, 자동 갱신과 환불 조건을 확인해 주세요.",
    "copyright": "© 2026 Zero to One Flow. All rights reserved.",
    "ariaLabel": "사이트 푸터"
  },
  "checkoutConsent": {
    "xsollaNotice": "웹 결제는 Xsolla 결제창에서 진행됩니다. 구매 전 판매자, 최종 금액·세금, 자동 갱신과 환불 조건을 확인해 주세요.",
    "autoRenewNotice": "구독 플랜은 해지 전까지 자동 갱신될 수 있습니다",
    "merchantNotice": "카드번호와 CVC는 Xsolla 결제창에 입력하며 Trifrost 서버에 저장되지 않습니다.",
    "agreeIntro": "결제를 진행하면 이용약관, 개인정보처리방침, 환불 및 해지 정책에 동의한 것으로 간주됩니다.",
    "agreeTerms": "이용약관에 동의합니다.",
    "agreePrivacy": "개인정보처리방침을 확인했습니다",
    "agreeRefund": "환불 및 해지 정책을 확인했습니다",
    "linkSuffix": "보기",
    "error": "결제를 진행하려면 필수 약관에 모두 동의해야 합니다.",
    "summaryHeading": "결제 정보 확인",
    "planLabel": "플랜",
    "priceLabel": "가격",
    "intervalLabel": "결제 주기",
    "featuresLabel": "포함 기능"
  },
  "pricingPage": {
    "title": "요금제",
    "subtitle": "필요에 맞는 플랜을 선택하세요. 웹 결제는 Xsolla를 통해 안전하게 처리됩니다.",
    "perMonth": "/월",
    "perYear": "/년",
    "loginToSubscribe": "로그인하고 구독 시작",
    "manageInApp": "구독은 로그인 후 결제 페이지에서 시작·관리할 수 있습니다",
    "trialNote": "무료 체험이 있는 경우, 체험 종료 전 취소하지 않으면 과금될 수 있습니다",
    "vatNote": "표시 가격에는 지역별 세금(VAT/GST 등)이 포함되지 않을 수 있으며, Xsolla가 결제 시 계산·징수합니다.",
    "contactSales": "문의하기",
    "subtitleNotReady": "필요에 맞는 플랜을 선택하세요. 무료 플랜은 바로 시작할 수 있고, 유료 플랜은 도입 상담으로 안내해 드립니다.",
    "startFree": "무료로 시작",
    "contactOnboarding": "도입 상담 문의",
    "paymentsComingSoon": "온라인 결제는 준비 중입니다. 유료 플랜이 필요한 파일럿 고객사는 도입 상담 후 별도 청구서로 이용할 수 있습니다.",
    "vatNoteManual": "표시 가격에는 세금이 포함되지 않을 수 있습니다. 최종 금액은 견적서와 청구서에서 확인해 주세요.",
    "mauPolicy": "MAU는 UTC 기준 월별로 활동한 고객 기록을 중복 제거해 계산합니다. 채널별로 별도 생성된 기록은 각각 계산되며, 고객 기록을 연결하거나 연결을 해제해도 이미 집계된 사용량은 바뀌지 않습니다. 연결은 동의나 채널 자격 증명을 합치지 않습니다.",
    "offerVersionNotice": "새 구독 요금과 기존 계약은 구분합니다. 기존 구독의 기본료와 확정된 청구서는 자동 변경하지 않습니다. 인하된 초과 단가는 2026년 10월 사용분부터 적용됩니다."
  },
  "contactPage": {
    "title": "고객지원 / 문의",
    "subtitle": "도움이 필요하신가요? 아래 채널로 문의해 주세요",
    "generalHeading": "일반 문의",
    "generalEmail": "이메일",
    "phone": "고객지원 전화",
    "billingHeading": "결제 · 청구 · 환불 문의",
    "billingDesc": "결제, 청구, 환불, 지불거절 관련 문의는 Merchant of Record인 Xsolla Support를 통해 처리됩니다.",
    "xsollaBuyerSupport": "Xsolla Support",
    "hoursHeading": "운영 시간",
    "businessHours": "운영 시간",
    "responseTime": "응답 시간",
    "businessInfoHeading": "사업자 정보"
  },
  "legalPage": {
    "backToHome": "홈으로",
    "effectiveDate": "시행일",
    "draftDate": "초안 기준일",
    "revisionHistory": "정책 개정 이력",
    "revisionDate": "날짜",
    "revisionSummary": "변경 내용",
    "lastUpdated": "최종 수정일",
    "tableOfContents": "목차",
    "businessInfoHeading": "사업자 정보"
  },
  "sidebar": {
    "adoption": "도입 및 운영 준비",
    "dashboard": "대시보드",
    "chats": "채팅",
    "customers": "고객",
    "campaigns": "캠페인",
    "segments": "세그먼트",
    "chatbot": "시나리오 챗봇",
    "aiAgent": "AI 자동응답",
    "aiDashboard": "AI 대시보드",
    "aiQuality": "AI 품질",
    "aiActions": "AI 액션",
    "knowledgeBase": "지식베이스",
    "helpCenter": "도움말 센터",
    "workflows": "워크플로우",
    "sla": "SLA 관리",
    "proactive": "선제 메시지",
    "teamChat": "팀 채팅",
    "analytics": "분석",
    "marketing": "팝업·배너",
    "settings": "설정",
    "workspaces": "워크스페이스",
    "billing": "결제 및 구독",
    "platform": "배포·운영 구조",
    "workspace": "워크스페이스",
    "targetProduct": "대상 제품",
    "mainMenu": "메인",
    "marketingMenu": "마케팅",
    "aiMenu": "AI 및 자동화",
    "analyticsMenu": "분석 및 팀",
    "expand": "사이드바 펼치기",
    "collapse": "사이드바 접기",
    "serviceAdmin": "서비스 전체 관리",
    "hint": {
      "aiActions": "AI가 실행할 수 있는 작업",
      "aiAgent": "AI가 지식베이스를 근거로 답하는 설정",
      "aiDashboard": "AI 사용량과 비용",
      "aiQuality": "AI 답변 품질 평가",
      "analytics": "상담·응답·만족도 리포트",
      "billing": "요금제·시트·인보이스",
      "campaigns": "고객에게 보내는 마케팅 메시지",
      "chatbot": "키워드 규칙으로 답하는 챗봇",
      "chats": "모든 채널의 고객 대화",
      "customers": "고객 프로필과 상담 이력",
      "dashboard": "오늘의 상담 현황 요약",
      "helpCenter": "고객에게 공개되는 도움말 문서",
      "knowledgeBase": "AI가 학습하는 내부 문서",
      "marketing": "사이트에 노출하는 팝업·배너·툴팁",
      "platform": "배포·비용 구조 점검",
      "proactive": "방문자에게 먼저 보내는 메시지",
      "segments": "조건으로 고객을 자동 분류",
      "serviceAdmin": "모든 워크스페이스를 운영",
      "settings": "위젯·알림·계정 설정",
      "sla": "응답 목표 시간과 위반 알림",
      "teamChat": "팀 내부 대화",
      "workflows": "조건에 따른 작업 자동화 규칙",
      "workspaces": "워크스페이스와 팀원 관리"
    },
    "aiReviews": "AI 답변 검토"
  },
  "dashboard": {
    "title": "대시보드",
    "welcome": "환영합니다",
    "overview": "개요",
    "totalCustomers": "전체 고객",
    "activeChats": "진행 중인 채팅",
    "pendingChats": "대기 중인 채팅",
    "resolvedToday": "오늘 해결된 채팅",
    "avgResponseTime": "평균 응답 시간",
    "customerSatisfaction": "고객 만족도",
    "recentActivity": "최근 활동",
    "quickStats": "빠른 통계",
    "todayStats": "오늘의 통계",
    "weeklyTrend": "주간 추이",
    "newCustomers": "신규 고객",
    "messagesSent": "발송된 메시지",
    "messagesReceived": "수신된 메시지",
    "last7Days": "최근 7일",
    "lastNDays": "최근 {{count}}일",
    "channelDistribution": "채널 분포",
    "channelPlanned": "{{label}} (예정)",
    "bySource": "소스별",
    "distribution": "분포",
    "subtitle": "비즈니스 성과를 한눈에 확인하세요",
    "loadingData": "데이터를 불러오는 중...",
    "fetchError": "대시보드 데이터를 불러오지 못했습니다. 잠시 후 다시 시도해 주세요",
    "realtimeSnapshot": "실시간 스냅샷",
    "liveChatsCount": "진행 중 채팅 {{count}}",
    "newCustomersCount": "신규 고객 {{count}}",
    "activeCampaignsCount": "활성 캠페인 {{count}}",
    "noChartData": "아직 표시할 대화가 없습니다",
    "noChannelData": "아직 채널별 데이터가 없습니다",
    "noResponseData": "아직 응답 시간 데이터가 없습니다",
    "chartLoadFailed": "데이터를 불러오지 못했습니다",
    "responseDistributionUnit": "분 단위 분포",
    "unassigned": "미배정 대화",
    "unassignedCaption": "담당자가 없는 진행 중 대화",
    "unassignedNoAutoTeam": "자동 배정 팀이 없습니다. 팀을 설정하거나 직접 배정하세요.",
    "unassignedNoActiveMembers": "자동 배정 팀에 활성 상담원이 없습니다. 멤버를 확인하세요.",
    "unassignedAllOffline": "자동 배정 팀 상담원이 모두 오프라인입니다. 접속하거나 직접 배정하세요.",
    "unassignedAtCapacity": "배정 가능한 수용량이 없습니다. 상담원 수용량을 확인하세요.",
    "unassignedAvailable": "배정 가능한 상담원이 있습니다. 자동 복구 상태를 확인하세요.",
    "slaAttention": "SLA 주의",
    "slaAttentionCaption": "위반 {{breached}} · 임박 {{atRisk}}",
    "newInPeriod": "최근 {{count}}일 신규",
    "newCustomersLabel": "최근 {{count}}일 신규 고객 {{n}}명",
    "assignedToMe": "내 담당",
    "assignedToMeCaption": "내가 맡고 있는 진행 중 대화",
    "waitingOnMe": "아직 첫 응답 전 {{count}}건",
    "sinceLastLogin": "지난 접속({{when}}) 이후 새 문의 {{count}}건",
    "quiet": "조용한 대화",
    "quietCaption": "{{n}}일 넘게 아무 움직임이 없는 진행 중 대화",
    "needsReply": "답변 차례",
    "needsReplyCaption": "고객 질문·상담원 이관·전달 문제로 조치가 필요한 내 대화"
  },
  "chats": {
    "deliveryPending": "전송 대기 중",
    "deliveryUncertain": "전달 확인 필요",
    "deliveryUncertainHint": "외부 채널에서 결과를 확인해야 합니다. 확인 전까지 이 상담의 다음 메시지는 전송 대기합니다.",
    "deliveryUncertainParts": "{{total}}개 중 {{confirmed}}개 조각은 채널 전송이 확인됐습니다. 나머지 결과를 외부 채널에서 확인해야 합니다. 확인 전까지 다음 메시지는 대기합니다.",
    "deliveryUncertainAttachments": "{{total}}개 중 {{confirmed}}개 첨부는 채널 전송이 확인됐습니다. 나머지 결과를 확인해야 합니다. 확인 전까지 다음 메시지는 대기합니다.",
    "deliveryUncertainBodyAttachment": "본문은 채널 전송이 확인됐지만 첨부 결과는 불분명합니다. 외부 채널에서 확인해야 합니다.",
    "deliveryReviewParts": "미확인 텍스트 {{count}}개 조각 보기",
    "deliveryReviewUncertainWarning": "첫 미확인 조각은 실제로 도착했을 수도 있습니다. 외부 채널에서 확인한 뒤 필요한 부분만 보내세요.",
    "deliveryReviewRejectedWarning": "거절된 조각부터 남은 내용입니다. 외부 채널에서 확인한 뒤 필요한 부분만 보내세요.",
    "deliveryPartNumber": "{{number}} / {{total}} 조각",
    "deliveryReviewCopy": "미확인 텍스트 복사",
    "deliveryReviewCopied": "복사됨",
    "deliveryReviewCopyFailed": "복사할 수 없습니다. 아래 텍스트를 선택해 복사해 주세요.",
    "deliveryConfirmSent": "전달됨 확인",
    "deliveryConfirmPartial": "나머지 처리 완료",
    "deliveryConfirmPartialTitle": "남은 내용을 외부 채널에서 처리했나요?",
    "deliveryConfirmPartialWarning": "이미 접수된 부분은 이 앱에서 다시 보내지 않습니다. 누락된 내용을 외부 채널에서 직접 보내거나 필요 없음을 확인한 뒤에만 선택하세요. 이 답변을 일부 전송으로 기록하고 다음 대기 메시지를 보냅니다. 결정은 감사 기록에 남습니다.",
    "deliveryConfirmNotSent": "미전달 확인 후 종료",
    "deliveryConfirmNotSentTitle": "외부 채널에서 미전달을 확인했나요?",
    "deliveryConfirmNotSentWarning": "원문을 다시 보내지 않고 전송 실패로 기록합니다. 외부 채널에서 도착하지 않은 것을 확인한 경우에만 선택하세요. 다음 대기 메시지가 발송되고 결정은 감사 기록에 남습니다.",
    "deliveryConfirmNotSentPlaceholder": "외부 채널에서 확인한 미전달 근거 (10자 이상)",
    "deliveryRetry": "미전달 확인 후 재시도",
    "deliveryConfirmTitle": "외부 채널에서 전달을 확인했나요?",
    "deliveryConfirmWarning": "고객에게 실제 도착한 것을 채널에서 확인한 경우에만 선택하세요. 전달 완료로 기록하고 다음 대기 메시지를 보냅니다. 결정은 감사 기록에 남습니다.",
    "deliveryRetryTitle": "도착하지 않은 것을 확인했나요?",
    "deliveryRetryWarning": "외부 채널에서 이 메시지가 도착하지 않았음을 확인한 경우에만 선택하세요. 원문을 다시 보내며, 잘못 확인하면 고객에게 중복 발송될 수 있습니다. 결정은 감사 기록에 남습니다.",
    "deliveryResolveError": "전달 결과를 처리하지 못했습니다. 상태를 새로고침한 뒤 다시 확인해 주세요.",
    "deliveryAttentionEvidence": "새 사실 {{n}}건",
    "deliveryEvidencePending": "원래 발신 시도의 권한 상실 뒤 응답이 도착했습니다. 요청 이력과 현재 전달 판단을 검토하고 후속 조치를 확인해 주세요.",
    "deliveryEvidenceAcknowledge": "새 제공자 사실 검토",
    "deliveryEvidenceTitle": "새 제공자 사실을 검토했나요?",
    "deliveryEvidenceWarning": "현재 전달 판단을 유지하면서 검토 근거와 후속 조치를 기록합니다. 이 확인으로 메시지를 보내거나 보류된 발신을 재개하지 않습니다. 이후 응답이 도착하면 새 검토가 필요합니다.",
    "deliveryEvidenceRecorded": "{{date}}에 새 제공자 사실을 검토했습니다. 전달 판단은 유지했습니다.",
    "deliveryEvidenceAssignTitle": "누가 이 새 사실을 검토하나요?",
    "deliveryEvidenceAssignWarning": "현재 활성 관리자·매니저와 인계 근거를 기록합니다. 본인 지정은 담당 인수이며 다른 담당자는 직접 인수해야 합니다. 검토는 열린 상태로 남고 전달 판단은 유지됩니다.",
    "deliveryEvidenceAssignConfirm": "검토 담당 지정 기록",
    "deliveryEvidenceAcceptTitle": "이 검토의 담당을 인수하나요?",
    "deliveryEvidenceAcceptWarning": "배정된 본인이 인수를 확인합니다. 새 사실 검토는 계속 열려 있으며 메시지를 발송하거나 보류를 해제하지 않습니다. 미해결 검토는 하루마다 다시 알립니다.",
    "deliveryEvidenceAcceptConfirm": "검토 담당 인수",
    "deliveryEvidenceNoteTitle": "어떤 후속 조치를 했나요?",
    "deliveryEvidenceNoteWarning": "확인한 근거와 고객 후속 조치를 기록합니다. 검토는 열린 상태로 남고 메시지를 발송하지 않습니다. 기록을 남겨도 미해결 재알림 시각은 미뤄지지 않습니다.",
    "deliveryEvidenceNoteConfirm": "검토 조치 기록",
    "deliveryEvidenceFollowup": {
      "title": "새 사실 검토 담당",
      "help": "담당 인수는 검토를 종료하거나 메시지를 발송하지 않습니다. 미배정·미인수 검토는 1시간마다, 인수한 미해결 검토는 하루마다 다시 알립니다. 조치 기록을 남겨도 재알림 시각은 미뤄지지 않습니다.",
      "refresh": "검토 담당 새로고침",
      "unavailable": "검토 담당과 조치 이력을 가져오지 못했습니다. 새로고침 후 조치해 주세요.",
      "owner": "검토 담당: {{name}}",
      "unassigned": "검토 담당 미배정",
      "ownerUnavailable": "선택한 담당자가 현재 조직의 활성 관리자·매니저가 아닙니다. 현재 담당자를 다시 선택해 주세요.",
      "accepted": "담당 인수: {{date}}",
      "unaccepted": "배정된 담당자가 아직 이 검토를 인수하지 않았습니다.",
      "nextReminder": "미해결 검토의 다음 재알림: {{date}}",
      "reminded": "최근 재알림: {{date}}",
      "take": "이 검토 담당하기",
      "accept": "검토 인수 확인",
      "assign": "검토 담당 지정",
      "cancelAssignment": "담당 선택 취소",
      "note": "검토 조치 기록",
      "search": "활성 관리자·매니저 검색",
      "managersUnavailable": "담당자 목록을 가져오지 못했습니다. 선택을 새로고침해 주세요.",
      "searchMore": "첫 25명만 표시됩니다. 검색어로 대상을 좁혀 주세요.",
      "assignee": "지정할 검토 담당",
      "draftChanged": "담당 선택 이후 검토가 변경됐습니다. 선택을 취소하고 현재 상태를 다시 확인해 주세요.",
      "reviewAssignment": "선택한 담당 지정 검토",
      "requestedOwner": "요청한 검토 담당: {{name}}",
      "you": "본인",
      "formerMember": "이전 구성원 또는 확인 불가",
      "history": "검토 조치 이력",
      "hideHistory": "검토 조치 이력 닫기",
      "noHistory": "보관 중인 조치 이력이 없습니다. 조치하지 않았다는 증거는 아닙니다.",
      "earlier": "이전 새 사실 발생",
      "more": "이전 조치 이력 더 보기",
      "events": {
        "opened": "새 제공자 사실 검토 시작",
        "superseded": "이후 응답으로 새 검토가 필요해졌습니다",
        "assigned": "{{actor}}님이 검토 담당을 {{assignee}}(으)로 지정했습니다",
        "accepted": "{{actor}}님이 검토를 인수했습니다",
        "noted": "{{actor}}님이 검토 조치를 기록했습니다",
        "closed": "{{actor}}님이 새 사실 검토를 완료했습니다. 전달 판단은 유지됐습니다",
        "reminded": "미해결 검토 재알림 예약",
        "owner_unavailable": "기존 담당자를 사용할 수 없어 새 담당이 필요합니다"
      }
    },
    "deliveryObservations": {
      "title": "제공자 요청 관측 이력",
      "help": "요청 사실은 90일 보관합니다. API 접수는 고객의 수신·읽음 증명이 아닙니다. 과거 요청에는 기록이 없을 수 있습니다.",
      "refresh": "요청 관측 이력 새로고침",
      "empty": "보관 중인 요청 관측 이력이 없습니다. 미발송을 증명하지는 않습니다.",
      "error": "요청 관측 이력을 불러오지 못했습니다. 전송 문제를 조치하기 전에 다시 확인해 주세요.",
      "more": "이전 요청 더 보기",
      "request": "{{provider}} · {{kind}} {{part}}번째 · {{date}}",
      "attempt": "발신 시도 시작: {{date}}",
      "attachment": "{{index}}번째 첨부",
      "observed": "응답 관측: {{date}}",
      "late": "이 시도의 권한 상실 후 관측한 응답입니다. 현재 전달 판단은 유지했습니다.",
      "http": "HTTP {{status}}",
      "requestId": "제공자 요청: {{id}}",
      "acceptedRequestId": "기존에 접수된 요청: {{id}}",
      "kinds": {
        "body": "답변 본문",
        "image": "이미지",
        "attachment_link": "첨부 링크"
      },
      "outcomes": {
        "pending": "요청 준비 기록 · 응답 기록 없음",
        "accepted": "API 접수 관측 · 고객 수신 미확인",
        "rejected": "이 요청은 거절됨 · 이전 요청의 접수 가능성은 남음",
        "unknown": "요청 결과 미확인",
        "not_started": "네트워크 호출 허가 전에 이 요청 중단"
      }
    },
    "deliveryReview": {
      "reviewedState": "검토 당시 전달 상태: {{status}} · {{date}}",
      "recoveryTitle": "저장된 전달 조치",
      "preparedNotice": "확인을 기다리는 전달 조치가 있습니다. 원래 검토를 열어 적용하거나 취소해 주세요.",
      "resultNotice": "아직 확인하지 않은 전달 조치의 저장 결과가 있습니다.",
      "recoveryError": "저장된 전달 조치를 조회하지 못했습니다. 새로 조회해 상태를 확인해 주세요.",
      "inspectStored": "저장된 조치 검토",
      "refreshRequest": "저장된 조치 확인",
      "closeReview": "검토 닫기",
      "cancelRequest": "저장된 조치 취소",
      "dismissResult": "이 결과 확인",
      "resultExplanation": "원래 조치의 저장된 결과입니다. 아래 메시지는 현재 전달 상태를 보여 줍니다. 결과 확인은 전달 상태를 바꾸지 않습니다.",
      "originalResult": "원래 전달 결과: {{status}} · {{date}}",
      "superseded": "이 조치 이후 전달 상태가 바뀌었습니다. 원래 결과는 이후 상태를 대체하지 않습니다.",
      "frozen": "이 요청은 원래 근거와 검토한 전달 상태를 보관합니다. 재시도는 같은 요청을 적용합니다. 검토 닫기는 요청 취소가 아니며, 서버가 이미 접수한 적용은 완료될 수 있습니다.",
      "readError": "메시지 또는 저장된 요청을 조회하지 못했습니다. 이전 조치 버튼은 사용할 수 없습니다. 새로 조회해 현재 상태를 확인해 주세요.",
      "changed": "검토한 전달 상태 또는 저장된 요청이 바뀌었습니다. 이 조치를 새로운 발생에 적용할 수 없습니다. 저장된 요청을 확인하거나 취소한 뒤 새로 검토해 주세요.",
      "unknown": "요청의 처리 결과를 확인하지 못했습니다. 재시도하거나 취소하기 전에 저장된 조치를 확인해 주세요.",
      "states": {
        "prepared": "조치 저장됨 · 아직 적용하지 않음",
        "applied": "원래 조치 적용됨",
        "cancelled": "요청 취소됨 · 이 요청은 적용할 수 없음"
      },
      "statuses": {
        "pending": "전송 대기",
        "sending": "전송 중",
        "sent": "전송됨",
        "failed": "실패",
        "skipped": "미전송",
        "partial": "일부 전송",
        "uncertain": "전달 미확인",
        "none": "전달 변경 없음"
      }
    },
    "deliveryQueue": {
      "title": "전달 후속 조치 대기열",
      "help": "오래된 항목부터 표시합니다. 상태를 선택하고 원래 메시지를 확인하세요. 목록 조회로 메시지를 발송하거나 재시도하지 않습니다. 조치 뒤 새로 조회해 주세요.",
      "filter": "전달 상태",
      "show": "전달 대기열 보기",
      "hide": "전달 대기열 닫기",
      "refresh": "전달 대기열 새로 조회",
      "checked": "확인 시각: {{date}}",
      "unavailable": "대기열을 조회하지 못했습니다. 새로 조회해 주세요. 조회 실패가 대기열이 비었다는 뜻은 아닙니다.",
      "empty": "이 상태에 해당하는 현재 조치 대상이 없습니다.",
      "pageCleared": "조회한 항목의 조치 대상이 사라졌습니다. 다음 대상을 더 보거나 대기열을 새로 조회해 주세요.",
      "untitled": "상담",
      "noText": "텍스트가 없는 메시지",
      "open": "이 메시지 확인",
      "more": "다음 조치 대상 더 보기",
      "focusTitle": "전달 확인 대상으로 선택한 메시지",
      "focusHelp": "최근 대화 이력과 별도로 원래 메시지를 표시합니다. 전달 결과를 기록하기 전에 외부 채널을 직접 확인하세요.",
      "closeFocus": "선택한 메시지 닫기",
      "messageUnavailable": "메시지를 조회하지 못했습니다. 삭제됐거나 접근 상태가 바뀌었을 수 있습니다. 새로 조회해 현재 상태를 확인해 주세요.",
      "kinds": {
        "all": "전체 전달 문제",
        "uncertain": "전달 결과 미확인",
        "delayed": "5분 이상 발송 대기",
        "expired": "전송 작업 임대 만료",
        "failed": "전송 실패",
        "skipped": "미발송",
        "partial": "일부 전송",
        "evidence": "새 제공자 사실"
      },
      "evidenceCurrent": "현재 전달 판단: {{status}}"
    },
    "deliveryAttentionTitle": "외부 채널 전달 확인이 필요합니다",
    "deliveryAttentionPreview": "전달 상태 확인 필요",
    "deliveryHandledPreview": "전달 문제 조치 기록",
    "deliveryAttentionHint": "결과 미확인은 다음 발송을 멈춥니다. 실패·미발송·일부 전송도 확인하고 후속 조치를 기록해 주세요.",
    "deliveryAttentionUncertain": "결과 미확인 {{n}}건",
    "deliveryAttentionFailed": "전송 실패 {{n}}건",
    "deliveryAttentionSkipped": "미발송 {{n}}건",
    "deliveryAttentionPartial": "일부 전송 {{n}}건",
    "deliveryAttentionDelayed": "전송 지연 {{n}}건",
    "deliveryAcknowledge": "처리 기록",
    "deliveryAcknowledgeTitle": "이 전송 문제를 어떻게 처리했나요?",
    "deliveryAcknowledgeWarning": "실제 전달 상태는 바뀌지 않습니다. 고객에게 다시 보내거나 외부 채널에서 처리한 내용 등 확인 근거를 남기면 중앙 대기열에서 제외됩니다. 결정은 감사 기록에 남습니다.",
    "deliveryAcknowledgePlaceholder": "확인한 채널 결과와 고객 안내 또는 후속 조치 (10자 이상)",
    "deliveryAttentionHandled": "관리자 처리 기록됨",
    "deliveryAttentionOpen": "첫 상담 열기",
    "deliveryAttentionUnavailable": "외부 채널 전달 대기열 상태를 확인하지 못했습니다.",
    "title": "채팅",
    "allChats": "전체 대화",
    "myChats": "내 대화",
    "unassigned": "미배정",
    "active": "진행 중",
    "pending": "대기 중",
    "resolved": "해결됨",
    "closed": "종료됨",
    "typeMessage": "메시지를 입력하세요...",
    "send": "전송",
    "assignTo": "담당자 지정",
    "resolve": "해결",
    "reopen": "다시 열기",
    "internalNote": "내부 메모",
    "addNote": "메모 추가",
    "noChats": "아직 진행 중인 대화가 없습니다",
    "selectChat": "대화를 선택하세요",
    "customerInfo": "고객 정보",
    "chatHistory": "대화 기록",
    "attachFile": "파일 첨부",
    "conversations": "대화",
    "searchConversations": "대화 검색...",
    "loadingChats": "대화를 불러오는 중...",
    "loadingMessages": "메시지를 불러오는 중...",
    "selectConversation": "{{name}}님과의 대화 선택",
    "selectConversationDesc": "왼쪽 목록에서 대화를 고르면 여기에 표시됩니다",
    "noMessagesYet": "아직 메시지가 없습니다",
    "searchInChat": "대화 내 검색...",
    "newMessageNotificationBody": "인박스에서 확인하세요",
    "messagesWillAppear": "대화가 시작되면 메시지가 여기에 표시됩니다",
    "fetchError": "대화를 불러오지 못했습니다. 잠시 후 다시 시도해 주세요",
    "messagesError": "메시지를 불러오지 못했습니다. 잠시 후 다시 시도해 주세요",
    "noMessages": "아직 메시지가 없습니다",
    "sendError": "메시지를 전송하지 못했습니다. 잠시 후 다시 시도해 주세요",
    "attachmentExpired": "첨부파일의 임시 업로드가 만료되었습니다. 파일을 다시 업로드하려면 전송을 한 번 더 눌러 주세요",
    "uploadError": "첨부파일을 업로드하지 못했습니다. 잠시 후 다시 시도해 주세요",
    "someoneTyping": "상대방이 입력 중입니다...",
    "subtitle": "모든 채널에서 고객과 소통하세요",
    "status": {
      "open": "진행 중",
      "pending": "대기 중",
      "closed": "종료됨",
      "waiting": "고객 응답 대기"
    },
    "multipleTyping": "여러 명이 입력 중...",
    "selectedCount": "{{count}}개 선택됨",
    "bulkClose": "일괄 닫기",
    "bulkAssign": "일괄 배정",
    "bulkError": "일괄 작업을 처리하지 못했습니다. 잠시 후 다시 시도해 주세요",
    "channels": {
      "website": "웹사이트",
      "kakao": "카카오톡",
      "naver": "네이버",
      "line": "LINE",
      "instagram": "Instagram",
      "phone": "전화"
    },
    "channel": "채널",
    "messageCount": "메시지 수",
    "newMessageNotification": "새 고객 메시지",
    "selectConversationEmpty": "대화를 선택하세요",
    "attachmentOnly": "📎 첨부파일",
    "lastFromUs": "나",
    "composerHint": "Enter 전송 · Shift+Enter 줄바꿈 · / 빠른 답변",
    "alsoViewing": "{{names}}님도 보는 중",
    "bulkCloseTitle": "선택한 대화를 모두 종료할까요?",
    "bulkCloseWarning": "{{n}}개 대화가 종료되고, 각 고객에게 만족도 평가 요청이 발송됩니다. 발송은 되돌릴 수 없습니다",
    "newMessageAnnounce": "새 메시지: {{text}}",
    "newMessageFrom": "{{name}}님의 새 메시지",
    "conversationList": "대화 목록",
    "loadOlder": "이전 메시지 더 보기",
    "attachment": "첨부 이미지",
    "retractMessage": "메시지 회수",
    "messageRetracted": "삭제된 메시지입니다",
    "retractTitle": "이 메시지를 회수할까요?",
    "retractWarning": "내용이 영구히 삭제되고 웹 상담 화면에는 \"삭제된 메시지입니다\"로 바뀝니다. 고객이 이미 읽었을 수 있으며, 외부 채널에 도착한 메시지는 상대방 화면에서 삭제되지 않습니다",
    "retractConfirm": "회수",
    "retractError": "메시지를 회수하지 못했습니다",
    "retractInProgress": "외부 채널로 발송 중입니다. 발송 결과가 확인된 뒤 다시 회수해 주세요",
    "retractUnconfirmed": "전달 결과가 미확인 상태입니다. 관리자가 결과를 확인하고 처리한 뒤 회수해 주세요",
    "visitorContext": "접속 정보",
    "device": "기기·브라우저",
    "lastPage": "보던 페이지",
    "referrer": "유입 경로",
    "hostData": "사이트 제공 정보",
    "hostDataUnverified": "고객사 사이트가 보낸 값입니다 (검증되지 않음)",
    "slaDueIn": "응답 {{duration}} 남음",
    "slaOverdue": "응답 {{duration}} 초과",
    "customerTyping": "{{name}}님이 입력 중입니다...",
    "theCustomer": "고객",
    "previousChats": "이전 대화",
    "firstContact": "첫 문의입니다",
    "previousChatsFailed": "이전 대화를 불러오지 못했습니다",
    "previousChatsRetry": "이전 대화 다시 조회",
    "conversationLoading": "대화를 불러오는 중입니다…",
    "conversationUnavailable": "이 대화는 더 이상 없거나 접근 권한이 없습니다.",
    "conversationLoadFailed": "대화를 불러오지 못했습니다. 다시 시도해 확인하세요.",
    "conversationRefreshFailed": "대화 정보를 갱신하지 못해 이전에 읽은 정보를 표시하고 있습니다. 다시 시도해 최신 정보를 확인하세요.",
    "customerContextLoading": "구매·연락처 이력을 불러오는 중…",
    "customerContextFailed": "구매·연락처 이력을 불러오지 못했습니다.",
    "customerContextRetry": "구매·연락처 이력 다시 조회",
    "thisConversation": "이 대화",
    "startedAt": "시작 시각",
    "andNMore": "외 {{count}}건",
    "willSplit": "{{limit}}자를 넘어 {{count}}개 메시지로 나뉘어 전송됩니다",
    "askedForHuman": "상담원 요청",
    "answeredByBot": "봇이 응답",
    "answeredByAi": "AI가 응답",
    "pagesPinned": "{{time}} 이후 새 활동이 생긴 대화는 첫 페이지에서 확인하세요",
    "pageIndicator": "{{page}}페이지",
    "liveInbox": "최신 목록",
    "newArrivals": "새 활동 {{n}}건 — 목록 갱신",
    "newActivityOlderPage": "새 활동 {{n}}건 — 첫 페이지 확인",
    "inboxCatchUp": "연결 복구 — 최신 목록 확인",
    "inboxCatchUpOlderPage": "연결 복구 — 첫 페이지에서 최신 문의 확인",
    "scopeUnassigned": "미배정 대화만",
    "scopeSla": "SLA 주의 대화만",
    "queueSlaAttention": "SLA 주의",
    "scopeSlaUncovered": "SLA 미적용 열린 상담만",
    "scopeSlaPending": "SLA 배정 재시도 대기만",
    "slaAssignmentPending": "SLA 배정 재시도",
    "slaHistoryNeedsReview": "SLA 이력 확인 필요",
    "scopeClear": "전체 보기",
    "typeMessageWithCanned": "메시지를 입력하세요…  ( / 로 상용구)",
    "needsCare": "주의 필요",
    "sameContactRecords": "같은 연락처의 다른 기록 {{count}}건 (병합되지 않음)",
    "howItWent": "고객 평가",
    "scopeRating": "낮은 평가를 받은 대화만",
    "answerSource": "근거",
    "searchTruncated": "검색이 오래 걸려 일부만 찾았습니다. 검색어를 좀 더 좁혀 주세요",
    "deliveryFailed": "전송 실패",
    "deliveryFailedHint": "고객에게 전달되지 않았습니다",
    "deliveryTooLongHint": "채널의 분할 전송 한도를 초과해 고객에게 전달되지 않았습니다. 답변을 짧게 나눠 보내 주세요.",
    "attachmentUnavailable": "첨부 받지 못함",
    "deliveryPartial": "첨부 미발송",
    "deliveryPartialHint": "메시지는 전달됐지만 첨부 파일은 이 채널로 보내지 못했습니다",
    "deliveryPartialText": "답변 일부 전송",
    "deliveryPartialTextHint": "{{total}}개 중 {{confirmed}}개 조각만 채널 전송이 확인됐습니다. 남은 내용을 확인해 보내 주세요.",
    "deliveryPartialAttachmentsHint": "{{total}}개 중 {{confirmed}}개 첨부만 채널 전송이 확인됐습니다. 나머지를 확인해 보내 주세요.",
    "deliveryPartialResolvedHint": "일부만 앱에서 전송됐습니다. 관리자가 남은 내용을 외부 채널에서 처리했다고 기록했습니다.",
    "deliverySkipped": "미발송",
    "deliveryInactive": "채널 연동이 꺼져 있습니다",
    "deliveryTargetChanged": "채널 연결 또는 수신 주소가 변경되어 추가 발송을 중단했습니다. 조치하기 전에 전송 결과를 확인해 주세요.",
    "deliveryNoChannelId": "이 고객의 채널 아이디가 없습니다",
    "deliveryUnsupportedChannel": "이 채널은 앱에서 메시지 발송을 지원하지 않습니다",
    "systemNote": "자동 생성",
    "handoffs": "거쳐온 담당자",
    "unassignedShort": "미배정",
    "scopeTeam": "{{name}} 대화만",
    "scopeChannel": "{{channel}} 채널만",
    "teamScopeLabel": "팀으로 보기",
    "teamScopeAll": "모든 팀",
    "teamScopeNone": "팀 없음",
    "senderAutomation": "자동 발송",
    "senderAI": "AI",
    "senderBot": "챗봇",
    "appliedAutomation": "적용된 자동화",
    "deletedRule": "삭제된 규칙",
    "scopeMine": "내 담당만",
    "customerLanguage": "고객 언어",
    "product": "대상 제품",
    "productUnspecified": "미지정 · 공통 지식만 자동응답",
    "langEn": "English",
    "langKo": "한국어",
    "sourceKb": "지식베이스",
    "sourceArticle": "도움말 문서",
    "noKnowledge": "자료 없음",
    "lowConfidence": "AI 확신 낮음",
    "noAnswer": "AI 답변 실패",
    "aiQuotaGone": "AI 한도 소진",
    "excludedIntent": "자동응답 제외",
    "maxAutoReplies": "자동응답 한도",
    "sensitiveInformation": "민감정보 포함",
    "urgentRequest": "긴급 문의",
    "intentNotEligible": "자동응답 부적합",
    "providerUnavailable": "AI 제공자 확인 필요",
    "aiUnavailable": "AI 설정 확인 필요",
    "emptyResponse": "AI 응답 비어 있음",
    "maxAttempts": "AI 시도 한도",
    "humanReview": "AI 검토 대기",
    "agentRejected": "상담원 반려",
    "noKnowledgeSource": "근거 자료 없음",
    "unsupportedNumericClaim": "자료 밖 숫자",
    "unverifiedActionClaim": "작업 확인 필요",
    "unsupportedLink": "링크 확인 필요",
    "aiInterrupted": "AI 처리 중단",
    "aiGenerationFailed": "AI 생성 실패",
    "scopeQuiet": "{{n}}일 이상 조용한 대화만",
    "channelScopeLabel": "채널로 좁히기",
    "channelScopeAll": "모든 채널",
    "fileTooLarge": "{{name}}: 파일이 너무 큽니다 (최대 {{max}}MB)",
    "fileTypeNotAllowed": "{{name}}: 지원하지 않는 형식입니다",
    "tooManyFiles": "첨부는 최대 {{n}}개까지 가능합니다",
    "dropToAttach": "여기에 놓으면 첨부됩니다",
    "setStatusTo": "상태를 {{status}}(으)로 변경",
    "filterByTag": "{{tag}} 태그가 달린 대화 보기",
    "scopeTags": "{{tag}} 태그",
    "scopeNeedsReply": "답변 차례",
    "recentPurchases": "최근 구매 {{count}}건",
    "customerSince": "{{date}}부터 고객",
    "handoff": {
      "pending": "인수인계 브리핑 생성을 기다리고 있습니다.",
      "running": "인수인계 브리핑을 만들고 있습니다.",
      "paused": "워크스페이스의 자동화가 일시 중지되어 브리핑 생성을 기다리고 있습니다.",
      "failed": "인수인계 브리핑을 만들지 못했습니다. 담당자를 확인한 뒤 다시 시도해 주세요.",
      "done": "인수인계 브리핑이 내부 메모에 준비되었습니다.",
      "deleted": "인수인계 브리핑 메모가 삭제되었습니다.",
      "unavailable": "인수인계 브리핑 상태를 확인하지 못했습니다.",
      "retryUnavailable": "브리핑 재시도를 확인하지 못했습니다. 상태를 다시 확인해 주세요.",
      "retry": "브리핑 다시 만들기",
      "retrying": "재시도 요청 중…",
      "open": "브리핑 보기"
    },
    "conversationDeleted": "고객이 삭제되어 이 대화를 더 이상 열 수 없습니다.",
    "unavailableDrafts": "작성 중이던 답변과 메모는 남아 있습니다. 아래 내용을 복사할 수 있으며, 이 대화로 전송하거나 저장할 수는 없습니다.",
    "unsentReply": "작성 중이던 답변",
    "unsavedNote": "작성 중이던 메모",
    "draftBadge": "작성 중",
    "draftConflictBadge": "초안 충돌"
  },
  "customers": {
    "phoneCountry": {
      "label": "전화번호 국가",
      "unset": "국가 미지정",
      "help": "국내 표기 번호를 해석할 국가를 선택하세요. +로 시작하는 번호는 해당 국가 코드를 사용합니다. 기본 국가는 지정하지 않습니다.",
      "csvHelp": "선택 사항인 Phone Country(전화번호 국가) 열에 KR·US·GB 등 두 글자 코드를 입력하세요. 빈칸은 기존 국가를 유지합니다. 번호 국가를 알 수 없는 연락처는 검토가 필요합니다.",
      "restoreContext": "현재 전화번호와 국가를 함께 확인하세요. 선택한 이력 필드만 복원합니다."
    },
    "listChanged": "고객 목록이 변경됐습니다 · 최신 목록 확인",
    "latestList": "최신 고객 목록",
    "pageIndicator": "{{page}}페이지",
    "noSearchResults": "검색 조건에 맞는 고객이 없습니다",
    "noSearchResultsDescription": "다른 이름, 이메일 주소 또는 전화번호로 검색하세요.",
    "clearSearch": "검색어 지우기",
    "pageEmpty": "이 페이지에 남은 고객이 없습니다",
    "countUnavailable": "고객 수를 확인하지 못했습니다",
    "readSlow": "고객 정보를 불러오는 데 시간이 오래 걸렸습니다. 검색 범위를 좁히거나 다시 시도해 주세요.",
    "profileRefreshFailed": "고객 상세 정보를 갱신하지 못했습니다. 이전에 조회한 정보가 표시됩니다.",
    "profileUnavailable": "고객을 찾을 수 없거나 접근 권한이 없습니다.",
    "profileLoading": "고객 상세 정보를 확인하는 중…",
    "profileLoadFailed": "고객 상세 정보를 불러오지 못했습니다. 다시 시도해 확인하세요.",
    "profileLinkInvalid": "고객 링크가 올바르지 않습니다.",
    "marketing": {
      "title": "마케팅 이메일 수신 동의",
      "description": "이메일 주소별로 적용됩니다. 명시적 동의의 원본·일시를 근거에 기록해야 발송할 수 있습니다. 수신 거부 후 재동의도 새 근거가 필요합니다.",
      "status": {
        "unknown": "동의 기록 없음 · 발송 차단",
        "granted": "동의 기록됨",
        "withdrawn": "수신 거부 · 발송 차단",
        "suppressed": "제공자 반송·신고로 발송 차단"
      },
      "sourceLabel": "동의 경로",
      "sources": {
        "web_form": "웹 양식",
        "checkout": "결제 과정",
        "documented_offline": "문서화된 오프라인 동의",
        "staff_request": "담당자 기록",
        "email_unsubscribe": "이메일 수신 거부",
        "customer_erased": "고객 삭제 후 수신 차단",
        "ses_complaint": "SES 스팸 신고",
        "ses_permanent_bounce": "SES 영구 반송"
      },
      "evidence": "동의 근거 또는 수신 거부 요청 내용",
      "evidencePlaceholder": "동의 문구·원본 위치·동의 일시를 기록하세요 (10자 이상)",
      "consentTime": "실제 동의 일시",
      "recordConsent": "동의 기록",
      "recordOptOut": "수신 거부 기록",
      "fetchError": "마케팅 수신 상태를 불러오지 못했습니다.",
      "saveError": "마케팅 수신 상태를 저장하지 못했습니다.",
      "loading": "마케팅 수신 상태 확인 중…",
      "saved": "마케팅 수신 상태를 저장했습니다."
    },
    "links": {
      "title": "연결된 고객 기록",
      "description": "관리자가 두 고객의 최신 정보를 확인한 뒤 관계를 연결하고, 연결된 상담 기록을 함께 조회합니다. 잘못된 연결은 해제할 수 있습니다. 채널 로그인과 수신 동의는 각각 유지되며, MAU는 월별 고객 기록 단위로 집계되어 연결·해제로 바뀌지 않습니다.",
      "empty": "이 기록에 확인된 연결이 없습니다.",
      "loadFailed": "고객 연결을 확인하지 못했습니다.",
      "conversations": "상담 {{count}}건",
      "formerActor": "이전 직원",
      "unlink": "연결 해제 검토",
      "openProfile": "고객 상세 열기",
      "add": "다른 기록 연결",
      "searchHelp": "연락처 일치는 후보 근거이며 연결 전 고객을 확인해야 합니다.",
      "search": "연결할 고객 검색",
      "searchFailed": "고객 검색을 완료하지 못했습니다. 다시 검색해 주세요.",
      "noResults": "일치하는 다른 기록이 없습니다. 검색어를 조정해 주세요.",
      "previewFailed": "최신 기록을 검토하지 못했습니다. 두 기록을 조회할 수 있을 때 다시 시도하세요.",
      "reviewAgain": "최신 정보를 검토한 뒤 선택을 다시 확인해 주세요.",
      "laterChange": "원래 요청의 결과를 확인했습니다. 이후 다른 변경도 있어 목록에는 현재 관계를 표시합니다.",
      "confirmed": "검토한 변경이 확인됐습니다.",
      "checkingDrafts": "이 브라우저의 연결 초안을 확인하는 중…",
      "unreadableDrafts": "일부 연결 초안을 확인하지 못했습니다. 열린 편집기를 유지하고 다시 확인해 주세요.",
      "pendingDraft": "결과 미확인 · 복구해 같은 요청을 확인하세요.",
      "unsentDraft": "완료하지 않은 관계 검토",
      "discardWarning": "브라우저 초안을 버려도 서버에 이미 저장된 연결은 되돌아가지 않습니다.",
      "restoreDraft": "연결 초안 복구",
      "discardDraft": "연결 초안 버리기",
      "reviewTitle": "두 고객 기록 검토",
      "unlinkTitle": "이 관계의 해제 검토",
      "ownership": "각 기록의 상담·방문자 접근 권한·채널 주소·수신 동의는 별도로 유지됩니다. 연결하면 직원이 관련 기록을 함께 조회할 수 있습니다.",
      "reason": "이 판단의 근거와 확인 내용",
      "verified": "두 기록이 동일한 고객의 기록임을 확인했습니다.",
      "unlinkVerified": "이 연결의 해제를 검토했습니다.",
      "saving": "이 브라우저에 검토 내용을 보관하는 중…",
      "saved": "이 계정의 검토 내용을 브라우저에 보관했습니다. 로그아웃하면 초안을 정리합니다.",
      "unsaved": "이 검토는 현재 탭에만 있습니다. 떠나기 전에 탭을 유지하거나 사본을 다운로드하세요.",
      "cleanupFailed": "편집기는 닫혔지만 브라우저의 초안을 지우지 못했습니다. 다시 나타날 수 있습니다.",
      "retryOriginal": "원래 요청 확인",
      "confirm": "고객 연결 확인",
      "confirmUnlink": "연결 해제 확인",
      "reviewLatest": "최신 기록 검토",
      "retryStorage": "검토 내용 보관 재시도",
      "downloadDraft": "검토 초안 다운로드",
      "history": "연결된 상담 이력 보기",
      "historyFailed": "연결된 이력을 조회하지 못했거나 관계가 바뀌었습니다. 다시 조회해 주세요.",
      "historyOrder": "연결된 모든 기록의 상담을 시작 시각 최신순으로 표시합니다.",
      "noHistory": "이 범위에 상담이 없습니다.",
      "more": "더 불러오기",
      "changes": "연결 변경 이력 보기",
      "changesFailed": "연결 변경 이력을 조회하지 못했습니다.",
      "changesRetention": "최근 90일의 연결 변경을 표시합니다.",
      "noChanges": "최근 90일의 연결 변경이 없습니다.",
      "linked": "연결 확인",
      "unlinked": "연결 해제",
      "errors": {
        "unconfirmed": "결과를 확인하지 못했습니다. 원래 요청을 유지하고 다시 확인해 주세요.",
        "conflict": "검토 후 기록이나 관계가 바뀌었습니다. 최신 기록을 불러와 다시 판단하세요.",
        "deleted": "두 고객 기록 중 하나를 더 이상 조회할 수 없습니다.",
        "forbidden": "현재 계정에 이 관계를 확인할 권한이 없습니다.",
        "invalid": "검토 내용을 확인하고 최신 기록을 불러온 뒤 확인하세요.",
        "requestConflict": "이 요청은 다른 변경에 사용됐습니다. 최신 기록을 검토한 뒤 새로 판단하세요.",
        "limit": "연결 그룹은 최대 100개 기록, 기록별 직접 연결은 최대 20개입니다. 기존 관계를 검토해 주세요."
      }
    },
    "profileDraft": {
      "title": "프로필 초안",
      "memoryOnly": "이 탭에만 남아 있습니다. 이동 전에 복구하고 사본을 다운로드하세요.",
      "loading": "이 브라우저의 초안을 확인하는 중…",
      "unreadable": "일부 초안을 확인하지 못했습니다. 현재 편집기는 계속 사용할 수 있습니다.",
      "description": "이 계정으로 이 브라우저에 보관한 초안입니다. 복구 후 내용을 확인하고 저장하세요. 로그아웃하면 삭제됩니다.",
      "checkAgain": "초안 다시 확인",
      "pending": "저장 결과 미확인",
      "discardPending": "초안을 버려도 이미 고객 정보에 저장된 변경은 취소되지 않습니다.",
      "unsent": "고객 정보에 미반영",
      "restore": "초안 복구",
      "discard": "초안 버리기",
      "saving": "이 브라우저에 초안을 보관하는 중…",
      "saved": "이 계정의 초안을 이 브라우저에 보관했습니다. 고객 정보에 반영하려면 저장하세요. 로그아웃하면 초안이 삭제됩니다.",
      "unsaved": "이 브라우저에 초안을 보관하지 못했습니다. 페이지를 열어 두거나 이동 전에 초안을 다운로드하세요.",
      "cleanupFailed": "편집은 끝났지만 보관된 로컬 초안을 지우지 못했습니다. 이전 초안이 다시 표시될 수 있습니다.",
      "retryStorage": "초안 보관 재시도",
      "download": "초안 다운로드"
    },
    "editRecovery": {
      "conflict": "수정하는 동안 고객 정보가 변경되었습니다. 항목별로 비교해 사용할 값을 선택한 뒤 다시 저장하세요. 다른 수정 내용은 유지됩니다.",
      "unconfirmed": "저장 결과를 확인하지 못했습니다. 같은 변경을 재시도해 결과를 확인하세요.",
      "deleted": "이 고객은 삭제되었습니다. 작성한 내용을 복사할 수 있도록 유지했지만 삭제된 고객에게 저장할 수는 없습니다.",
      "invalid": "입력 내용을 확인한 뒤 다시 저장하세요.",
      "current": "최근 저장된 값",
      "mine": "내 수정 내용",
      "useCurrent": "최근 값 사용",
      "keepMine": "내 수정 유지"
    },
    "changeHistory": {
      "title": "프로필 변경 이력",
      "description": "직원·태그·운영자 AI·CSV·위젯 연락처 수정을 보여줍니다. 새 변경의 전후 값은 90일 보관합니다. 다른 자동화 변경은 포함하지 않습니다.",
      "loadError": "변경 이력을 불러오지 못했습니다.",
      "empty": "표시할 프로필·태그 변경 기록이 없습니다.",
      "formerActor": "이전 팀원",
      "csvImport": "CSV 가져오기",
      "operatorAgent": "운영 AI",
      "widgetVisitor": "위젯 방문자",
      "more": "이전 변경 더 보기",
      "fields": {
        "phoneCountry": "전화번호 국가",
        "name": "이름",
        "email": "이메일",
        "phone": "전화번호",
        "company": "회사",
        "notes": "메모",
        "status": "상태",
        "tags": "태그",
        "other": "기타 항목"
      }
    },
    "profileRestore": {
      "legacyValue": "이전 값이 현재 수정 기준을 충족하지 않아 적용할 수 없습니다. 값은 검토할 수 있습니다.",
      "viewValues": "이전 값 검토",
      "valuesUnavailable": "이전 값이 기록되지 않았거나 보존 기간이 지났습니다.",
      "reviewTitle": "선택한 프로필 값 검토",
      "reviewDescription": "기록된 변경과 현재 값을 비교하세요. 선택한 항목만 변경 이전 값으로 돌아갑니다. 다른 항목과 고객 식별 정보는 유지됩니다.",
      "before": "이 변경 이전",
      "after": "이 변경 이후",
      "current": "현재 값",
      "emptyValue": "빈 값",
      "reason": "선택한 값으로 돌아가는 이유",
      "approval": "현재 값과 선택한 항목을 검토했습니다.",
      "confirm": "선택한 이전 값 적용",
      "retryOriginal": "원래 적용 요청 재시도",
      "reviewLatest": "최신 값 다시 검토",
      "conflict": "선택한 항목이 바뀌었습니다. 최신 값을 검토하고 다시 확인하세요.",
      "unconfirmed": "결과를 확인하지 못했습니다. 원래 요청을 재시도해 결과를 확인하거나 적용을 마치세요.",
      "unavailable": "고객이나 기록된 값을 더 이상 사용할 수 없습니다. 검토 자료는 다운로드할 수 있습니다.",
      "invalid": "선택한 값을 적용할 수 없습니다. 최신 값을 다시 검토하세요.",
      "forbidden": "현재 계정은 이 값을 적용할 수 없습니다.",
      "requestConflict": "이 요청 식별값은 다른 작업에 사용되었습니다. 다시 검토한 뒤 새 요청을 만드세요.",
      "confirmed": "선택한 값을 적용했습니다. 결과와 확인 근거가 새 변경 이력에 기록됩니다.",
      "readFailed": "기록된 값과 현재 값을 불러오지 못했습니다. 이력에서 다시 시도하세요.",
      "reviewAgain": "최신 값을 검토한 뒤 항목을 선택하고 다시 확인하세요.",
      "draftTitle": "저장된 프로필 적용 검토",
      "recover": "적용 검토 복구",
      "discard": "적용 검토 버리기",
      "noReason": "아직 확인 근거가 없습니다",
      "draftsUnreadable": "저장된 적용 검토를 확인하지 못했습니다. 화면을 유지하고 다시 시도하세요.",
      "discardWarning": "개인 검토 초안을 버려도 서버가 이미 접수한 요청은 취소되지 않습니다.",
      "restorationRecorded": "이전 변경의 값 적용",
      "recordedReason": "기록된 적용 근거",
      "expires": "기록된 값은 {{at}}까지 확인할 수 있습니다."
    },
    "creation": {
      "matchPhoneCountryUnknown": "전화번호 일치 가능 · 번호 국가 확인 필요",
      "checking": "이전 고객 저장 요청을 확인하는 중…",
      "recoveryFailed": "이전 요청을 확인하지 못했습니다. 창을 닫고 다시 열어 재시도하세요.",
      "saved": "{{name}} 고객이 저장되었습니다. 저장된 고객을 열어 계속하세요.",
      "viewSaved": "저장된 고객 보기",
      "reenter": "이전 요청의 저장 결과가 확인되지 않았습니다. 같은 정보를 입력하면 동일한 요청으로 안전하게 재시도합니다.",
      "resume": "이전 요청 재시도",
      "sameDetails": "재시도에는 원래 이름, 이메일, 전화번호, 회사 정보를 입력하세요. 정보가 기억나지 않으면 고객 목록에서 먼저 확인하세요.",
      "unconfirmed": "저장 결과를 확인하지 못했습니다. 이 정보로 재시도하면 동일한 요청의 결과를 확인하거나 저장을 완료합니다.",
      "deleted": "이 요청으로 저장한 고객은 삭제되었습니다. 재시도해도 다시 생성하지 않습니다.",
      "storageWarning": "이 브라우저에 복구 요청을 저장하지 못했습니다. 페이지를 열어 둔 채 여기서 재시도하세요. 새로고침 후에는 복구하지 못할 수 있습니다.",
      "reviewTitle": "고객 저장 완료 · 후속 작업 확인 필요",
      "reviewDescription": "후속 자동화의 완료 결과를 확인하지 못했습니다. 고객에게 영향을 주는 작업을 다시 실행하기 전에 실행 이력을 확인하세요.",
      "viewWorkflows": "워크플로 보기",
      "existingTitle": "연락처가 일치하는 기존 기록",
      "matchDescription": "같은 이메일 또는 전화번호를 가진 기록입니다. 별도 고객을 만들기 전에 검토하세요. 연락처 일치만으로 같은 사람임이 확인되지는 않습니다.",
      "matchEmail": "이메일 일치",
      "matchPhone": "전화번호 숫자 일치",
      "openExisting": "기존 고객 열기",
      "separateReason": "별도 고객을 만드는 근거",
      "separateApproval": "기존 기록을 검토했으며 별도 고객을 만들겠습니다.",
      "createSeparate": "별도 고객 만들기",
      "matchLimit": "여기서 후보를 모두 검토할 수 없습니다. 기존 기록을 열거나 연락처를 구체화한 뒤 새 기록을 만드세요.",
      "reviewChanged": "입력 또는 기존 기록이 바뀌었거나 검토가 만료됐습니다. 별도 고객을 만들기 전에 다시 확인하세요.",
      "checkFailed": "기존 연락처를 확인하지 못했습니다. 생성 요청은 제출하지 않았으며 다시 시도할 수 있습니다.",
      "existingUnavailable": "기존 고객을 열지 못했습니다. 최신 기록을 다시 확인하세요.",
      "savedUnavailable": "저장된 고객이 현재도 있는지 확인하지 못했습니다. 복구 요청은 보존했으며 창을 닫고 다시 열어 확인할 수 있습니다.",
      "preservedReason": "원래 별도 생성 근거: {{reason}}"
    },
    "title": "고객",
    "allCustomers": "전체 고객",
    "addCustomer": "고객 추가",
    "customerDetails": "고객 상세",
    "contactInfo": "연락처 정보",
    "recentChats": "최근 채팅",
    "tags": "태그",
    "notes": "메모",
    "createdAt": "가입일",
    "lastSeen": "마지막 접속",
    "totalChats": "전체 채팅 수",
    "segment": "세그먼트",
    "customFields": "사용자 정의 필드",
    "exportCustomers": "고객 내보내기",
    "importCustomers": "고객 가져오기",
    "searchCustomers": "고객 검색...",
    "addNewCustomer": "새 고객 추가",
    "createCustomer": "고객 생성",
    "noCustomers": "아직 등록된 고객이 없습니다",
    "totalSpent": "총 구매액",
    "purchaseCount": "구매 횟수",
    "company": "회사",
    "noNotes": "메모 없음",
    "addTagPlaceholder": "태그 추가...",
    "status": {
      "active": "활성",
      "inactive": "비활성",
      "pending": "대기 중",
      "vip": "VIP",
      "atRisk": "이탈 위험"
    },
    "addFirstCustomer": "첫 고객을 추가해 보세요",
    "companyPlaceholder": "회사명을 입력하세요",
    "createError": "고객을 추가하지 못했습니다. 잠시 후 다시 시도해 주세요",
    "customerCreated": "고객을 추가했습니다",
    "customerUpdated": "고객 정보를 수정했습니다",
    "customers": "명",
    "emailPlaceholder": "이메일을 입력하세요",
    "fetchError": "고객을 불러오지 못했습니다. 잠시 후 다시 시도해 주세요",
    "namePlaceholder": "이름을 입력하세요",
    "phonePlaceholder": "전화번호를 입력하세요",
    "selectCustomer": "고객을 선택하세요",
    "selectCustomerDesc": "목록에서 고객을 선택하여 상세 정보를 확인하세요",
    "subtitle": "고객 관계를 효과적으로 관리하세요",
    "tagExists": "이미 추가된 태그입니다",
    "tagLimit": "고객당 태그는 최대 20개까지 추가할 수 있습니다.",
    "tagInvalid": "태그는 1~64자로 입력해 주세요.",
    "updateError": "고객 정보를 수정하지 못했습니다. 잠시 후 다시 시도해 주세요",
    "lastContact": "최근 문의",
    "chatCount": "문의 {{count}}건",
    "source": {
      "widget": "웹 위젯",
      "website": "웹 위젯",
      "kakao": "카카오",
      "line": "LINE",
      "naver": "네이버",
      "instagram": "Instagram",
      "email": "이메일",
      "manual": "직접 등록",
      "import": "가져오기"
    },
    "sourceColumn": "유입 채널",
    "email": "이메일",
    "exportError": "내보내기에 실패했습니다",
    "exportTruncated": "내보내기 상한(5,000명)에 도달해 일부만 저장되었습니다",
    "lastInteraction": "최근 접촉",
    "name": "이름",
    "phone": "전화번호",
    "listAria": "고객 목록",
    "switchDraftTitle": "저장하지 않은 변경사항이 있습니다",
    "switchDraftMessage": "다른 고객을 열면 이 편집기는 닫히고 초안은 유지됩니다. 이 고객으로 돌아와 복구할 수 있습니다. 이 탭에만 남은 초안은 탭을 닫기 전에 사본을 다운로드하세요. 이미 요청한 저장은 이후 완료될 수 있습니다.",
    "switchDraftConfirm": "초안 유지하고 이동",
    "switchChecking": "이동하기 전에 선택한 고객을 확인하고 있습니다…",
    "switchUnavailable": "선택한 고객을 열 수 없습니다. 현재 편집기와 초안은 그대로 유지됩니다. 다시 확인하거나 취소하세요.",
    "showBrowsers": "문의 전 방문자 {{count}}명 포함",
    "hideBrowsers": "문의한 고객만 보기",
    "exportOne": "데이터 내보내기",
    "deleteTitle": "이 고객을 삭제할까요?",
    "deleteMessage": "{{name}} 님과 이 고객의 대화·메시지·내부 메모·평가가 지워집니다. 다른 기록이 참조하지 않는 첨부 파일은 안전하게 삭제하며, 예약 중인 파일은 삭제를 재시도합니다. 되돌릴 수 없으니 필요하면 먼저 내보내기로 사본을 받아두세요.",
    "deleteError": "고객을 삭제하지 못했습니다",
    "deletePending": "고객 삭제는 접수됐지만 데이터 정리가 아직 끝나지 않았습니다. 관리자에게 삭제 작업 ID {{id}}의 상태 확인을 요청하세요.",
    "deleteFilesShared": "첨부 파일 {{count}}개는 다른 기록도 참조해 보존했습니다",
    "deleteFilesDeferred": "첨부 파일 {{count}}개는 삭제 대기 중이며 자동으로 재시도합니다",
    "deleteFilesFailed": "첨부 파일 {{count}}개를 삭제하지 못했습니다. 감사 기록을 확인해 주세요",
    "blocked": "차단됨",
    "import": {
      "button": "가져오기",
      "title": "고객 가져오기",
      "help": "CSV 파일을 올리거나 내용을 붙여넣으세요. 첫 줄은 열 제목이어야 합니다 (이름, 이메일, 전화번호, 회사, 태그, 회원ID). 회원ID를 넣으면 그 회원이 위젯에 로그인했을 때 이 기록으로 바로 연결됩니다.",
      "tagsFormat": "공백이나 쉼표가 있는 태그는 JSON 배열로 입력하세요. 예: [\"VIP 고객\",\"환불 문의\"]. 새로 내보낸 CSV는 이 형식을 사용합니다. 기존 고객을 업데이트할 때 []는 태그를 모두 지웁니다.",
      "chooseFile": "CSV 파일 선택",
      "draftHelp": "창을 닫아도 이 페이지에는 CSV가 남습니다. 페이지를 떠나거나 새로고침한 뒤 같은 파일을 다시 올리면 검토 선택과 사유를 복구합니다. 현재 연락처를 다시 검토하고 확인해야 합니다.",
      "draftSaved": "검토 선택과 사유를 이 탭에 저장했습니다. CSV 원문은 저장하지 않습니다.",
      "draftRestored": "검토 초안을 복구했습니다. 현재 연락처를 확인하고 각 결정을 다시 확인해 주세요.",
      "draftUnsaved": "검토 선택과 사유는 이 페이지에 남아 있지만 저장하지 못했습니다. 페이지를 떠나거나 새로고침하기 전에 저장을 다시 시도해 주세요.",
      "draftCleanupFailed": "저장된 검토 초안을 지우지 못했습니다. 현재 입력은 남아 있습니다. 페이지를 떠나기 전에 초안 버리기를 다시 시도해 주세요.",
      "retryDraftStorage": "검토 초안 저장 다시 시도",
      "discardDraft": "가져오기 초안 버리기",
      "discardDraftBody": "현재 파일과 중복 처리 방식의 CSV 입력, 검토 선택과 사유를 버릴까요? 고객 정보는 변경하지 않습니다.",
      "discardDraftConfirm": "초안 버리기",
      "pasteLabel": "CSV 내용",
      "check": "미리보기",
      "checking": "확인 중…",
      "confirm": "{{n}}명 가져오기",
      "importing": "가져오는 중…",
      "done": "{{created}}명 추가 · {{updated}}명 갱신",
      "failed": "가져오기에 실패했습니다",
      "previewFailed": "미리보기에 실패했습니다",
      "willCreate": "신규",
      "willUpdate": "갱신",
      "willSkip": "건너뜀",
      "hasError": "오류",
      "duplicates": "이미 등록된 이메일·전화번호는",
      "skipThem": "건너뛰기",
      "updateThem": "덮어쓰기",
      "ignoredColumns": "가져오지 않는 열",
      "truncated": "{{max}}행을 넘는 파일은 나눠서 가져와 주세요.",
      "showingFirst": "전체 {{total}}행 중 {{shown}}행 표시 · 오류 우선",
      "showingRange": "전체 {{total}}행 중 {{start}}–{{end}}행 표시 · 오류와 미검토 행 우선",
      "previousPage": "이전 행",
      "nextPage": "다음 행",
      "changesHeading": "예정된 변경",
      "changeLine": "CSV {{line}}행의 변경 {{count}}개 비교",
      "targetContact": "기존 고객: {{name}} · {{email}} · {{phone}}",
      "emailKept": "기존 이메일 {{email}}은 그대로 유지됩니다.",
      "field": "항목",
      "before": "현재 값",
      "after": "가져온 후",
      "emptyValue": "(빈 값)",
      "onlyChanges": "여기에 표시한 항목만 바뀝니다. 빈 CSV 셀은 현재 값을 유지하고, []는 태그를 비웁니다.",
      "invalidCsv": "CSV 형식이 올바르지 않습니다. 따옴표가 닫혀 있고 올바르게 이스케이프되어 있는지 확인해 주세요.",
      "empty": "열 제목과 고객 데이터가 한 행 이상 필요합니다.",
      "tooLarge": "5 MB 이하의 CSV 파일을 사용해 주세요.",
      "tooManyRows": "파일당 고객은 최대 5,000행입니다. 파일을 나눠서 가져와 주세요.",
      "missingHeaders": "첫 행에 이름 또는 이메일 열을 포함해 주세요.",
      "fixErrors": "모든 오류를 수정한 뒤 가져와 주세요. 파일이 유효해질 때까지 고객 정보는 변경되지 않습니다.",
      "previewChanged": "고객 정보 또는 파일이 바뀌었거나 미리보기가 만료됐습니다. 미리보기를 다시 확인해 주세요.",
      "requestConflict": "다른 가져오기에 사용된 요청입니다. 파일을 다시 확인해 주세요.",
      "readFailed": "파일을 읽지 못했습니다. 다시 선택해 주세요.",
      "line": "CSV 행",
      "needsReview": "검토 필요",
      "reviewRequired": "충돌하는 모든 행의 조치를 검토하고 확인한 뒤 가져와 주세요. 오류와 미완료 검토를 먼저 표시하며, 확인하면 다음 행이 나타납니다.",
      "readSlow": "가져오기 조회 시간이 초과되었습니다. CSV 내용은 그대로 유지됩니다. 다시 확인하거나 파일 크기를 줄여 주세요.",
      "matchLimit": "일치하는 고객 자료가 조회 한도를 초과했습니다. 파일 크기를 줄이거나 관리자에게 기존 고객 자료 점검을 요청해 주세요.",
      "reviewLine": "{{line}}행 검토",
      "fileMatch": "앞선 CSV {{line}}행",
      "sharedContact": "같은 이메일이나 전화번호가 동일인이라는 증명은 아닙니다. 연락처를 비교한 뒤 조치를 선택해 주세요.",
      "reviewAction": "이 행의 조치",
      "reviewActionFor": "CSV {{line}}행 조치",
      "updateSelected": "이 기존 고객 갱신",
      "createSeparate": "별도 고객 생성",
      "skipRow": "이 행 건너뛰기",
      "keepEmail": "선택한 고객의 원래 이메일은 유지합니다. 입력한 이름·전화번호·회사·태그만 갱신하며 빈 값은 현재 값을 유지합니다. []는 태그를 모두 지웁니다.",
      "reviewReason": "이 조치를 선택한 근거를 기록해 주세요",
      "reasonFor": "CSV {{line}}행 사유",
      "reviewConfirm": "이 연락처를 비교했으며 선택한 조치를 확인합니다",
      "applyReview": "선택한 조치 검토",
      "pendingRecovery": "원래 가져오기 결과를 확인해야 합니다. 결과를 복구하는 동안 파일·처리 방식·검토 조치를 유지합니다.",
      "memoryRecovery": "이 브라우저에 원래 요청을 저장하지 못했습니다. 페이지를 열어 둔 채 여기에서 결과를 복구해 주세요. 새로고침 후 복구는 보장하지 않습니다.",
      "recoverResult": "원래 가져오기 결과 확인",
      "recoveredDone": "원래 가져오기를 확인했습니다: 당시 {{created}}명 추가 · {{updated}}명 갱신. 이후 수정과 삭제는 그대로 유지합니다.",
      "match": {
        "phoneCountryUnknown": "전화번호 일치 가능 · 국가 미확인",
        "email": "같은 이메일",
        "phone": "같은 전화번호 숫자"
      },
      "reasons": {
        "invalidPhoneCountry": "KR·US·GB 등 지원되는 두 글자 전화번호 국가 코드를 입력하세요.",
        "phoneCountryUnknown": "일치할 수 있는 전화번호에 국가 정보가 없습니다. 번호 국가를 확인한 뒤 기존 고객 또는 별도 고객을 선택하세요.",
        "extraCells": "열 제목보다 값이 많습니다. 쉼표와 따옴표를 확인해 주세요.",
        "missingIdentity": "이름 또는 이메일이 필요합니다.",
        "invalidEmail": "올바른 이메일 주소를 입력해 주세요.",
        "fieldLength": "이름 256자, 이메일 254자, 전화번호 64자, 회사 512자 이내로 입력해 주세요.",
        "tagLimit": "태그는 각각 64자 이내로 최대 20개까지 사용할 수 있습니다.",
        "invalidTags": "태그는 문자열 JSON 배열로 입력하세요. 예: [\"VIP 고객\",\"환불 문의\"].",
        "fileDuplicate": "이 파일 안에서 중복된 고객입니다.",
        "ambiguous": "일치하는 고객이 여러 명입니다. 기존 중복 고객을 먼저 정리해 주세요.",
        "update": "기존 고객을 갱신합니다. 빈 값은 기존 정보를 유지합니다.",
        "exists": "이미 등록된 고객입니다.",
        "unchanged": "기존 고객 정보와 같습니다.",
        "noIdentity": "이메일·전화번호가 없습니다. 새로 가져오면 고객이 추가될 수 있습니다.",
        "phoneEmailMismatch": "이 전화번호는 이메일이 다른 기존 고객과 일치합니다.",
        "identifierConflict": "이메일과 전화번호가 서로 다른 기존 고객을 가리킵니다.",
        "fileCollision": "앞선 다른 CSV 행과 이메일 또는 전화번호가 겹칩니다.",
        "repeatedTarget": "앞선 행이 이미 이 고객을 갱신합니다. 이 행을 건너뛰거나 검토 후 별도 고객을 생성해 주세요.",
        "identityLimit": "일치 건수가 너무 많거나 과거 연락처 값이 너무 깁니다. 이 행을 수정하거나 나눠서 가져와 주세요.",
        "changePreviewLimit": "기존 프로필 값을 가져오기 한도 내에서 온전히 검토할 수 없습니다. 해당 고객 프로필을 먼저 교정하세요. 어떤 행도 적용되지 않습니다.",
        "reviewedSkip": "검토 완료: 이 행을 건너뜁니다.",
        "reviewedSeparate": "검토 완료: 별도 고객을 생성합니다.",
        "invalidMemberId": "회원 ID는 앞뒤 공백 없이 1~128자여야 합니다",
        "memberDuplicate": "같은 회원 ID가 파일의 앞 줄에 이미 있습니다",
        "memberExists": "이 회원 ID의 고객이 이미 있습니다",
        "memberConflict": "이 회원 ID는 이 줄이 가리키는 고객이 아닌 다른 고객에 연결돼 있습니다. 두 기록을 확인하세요",
        "memberUnavailable": "이 회원 ID는 볼 수 없는 고객에 연결돼 있습니다"
      },
      "unconfirmed": "가져오기 결과를 확인하지 못했습니다. 같은 내용으로 다시 시도하면 중복 생성 없이 결과를 확인할 수 있습니다.",
      "willLinkMembers": "회원 연결 {{count}}",
      "linkedMembers": "기존 고객 {{count}}명 회원 연결"
    },
    "vip": "VIP",
    "atRisk": "이탈 위험"
  },
  "campaigns": {
    "title": "캠페인",
    "allCampaigns": "전체 캠페인",
    "createCampaign": "캠페인 만들기",
    "editCampaign": "캠페인 수정",
    "deleteCampaign": "캠페인 삭제",
    "campaignName": "캠페인 이름",
    "campaignType": "캠페인 유형",
    "targetSegment": "대상 세그먼트",
    "schedule": "예약",
    "draft": "임시저장",
    "scheduled": "예약됨",
    "sent": "발송됨",
    "smtpAccepted": "SMTP 접수",
    "measurementNote": "발송 수는 수신자별 SMTP 접수 기록으로 확인된 이메일만 집계합니다. 과거 근거 없는 합계는 —로 표시하며, 열람·클릭·전환은 아직 측정되지 않습니다.",
    "openNotMeasured": "열람 이벤트 미측정",
    "completed": "완료됨",
    "emailCampaign": "이메일 캠페인",
    "pushCampaign": "푸시 캠페인",
    "inAppCampaign": "인앱 캠페인",
    "stats": "통계",
    "openRate": "오픈율",
    "clickRate": "클릭률",
    "conversionRate": "전환율",
    "messageBody": "메시지 본문",
    "opened": "오픈",
    "campaignUpdated": "캠페인을 수정했습니다",
    "campaignDeleted": "캠페인을 삭제했습니다",
    "updateError": "캠페인을 수정하지 못했습니다. 잠시 후 다시 시도해 주세요",
    "deleteError": "캠페인을 삭제하지 못했습니다. 잠시 후 다시 시도해 주세요",
    "deleteConfirmation": "\"{{name}}\"을(를) 삭제하시겠습니까? 이 작업은 되돌릴 수 없습니다",
    "launch": "시작",
    "pause": "일시정지",
    "statusChanged": "캠페인 상태를 변경했습니다",
    "statusError": "캠페인 상태를 변경하지 못했습니다. 잠시 후 다시 시도해 주세요",
    "deliveryReview": "수신자별 발송 내역",
    "deliveryRun": "발송 회차",
    "olderRuns": "이전 회차 더 보기",
    "runStatus": {
      "running": "진행 중",
      "paused": "검토 필요",
      "completed": "완료",
      "reviewed": "검토 후 종결",
      "cancelled": "중지",
      "expired": "기한 만료"
    },
    "currentRun": "현재 회차",
    "nextRunAt": "다음 예약",
    "scheduleTitle": "발송 예약",
    "saveDraft": "초안으로 저장",
    "scheduleSend": "예약 발송",
    "scheduleZone": "시간대",
    "scheduleZoneHelp": "예: Asia/Seoul, America/New_York (IANA 시간대)",
    "scheduleStart": "첫 발송 시각",
    "scheduleFrequency": "반복 주기",
    "scheduleOnce": "한 번만",
    "scheduleDaily": "매일",
    "scheduleWeekly": "매주",
    "scheduleMonthly": "매월",
    "scheduleInterval": "주기 간격 (1–12)",
    "scheduleEnd": "마지막 발송 기한 (선택)",
    "scheduleEndHelp": "비워 두면 중지할 때까지 반복합니다. 밀린 회차는 한꺼번에 발송하지 않습니다.",
    "scheduleInvalid": "시간대와 미래 발송 시각, 종료 기한을 확인해 주세요.",
    "scheduleTargetRequired": "예약 발송 전에 대상 세그먼트를 하나 이상 선택해 주세요.",
    "stopSchedule": "예약 중지",
    "stopScheduleConfirm": "{{name}}의 다음 예약과 이후 반복 발송을 중지합니다. 기존 발송 내역은 남습니다.",
    "stopScheduleReason": "중지 사유를 10자 이상 기록하세요",
    "stopScheduleSuccess": "예약 발송을 중지했습니다",
    "stopScheduleError": "예약을 중지하지 못했습니다. 최신 상태를 확인해 주세요.",
    "closeRun": "검토 후 회차 마감",
    "closeRunSafety": "이번 회차의 실패·미발송·결과 미확인 수신자는 자동 재발송하지 않습니다. 검토 근거를 남기면 다음 회차를 예약합니다. 반복 종료일이 지났다면 캠페인을 완료합니다.",
    "closeRunSuccess": "이번 회차를 마감했습니다",
    "closeRunError": "회차를 마감하지 못했습니다. 내역을 다시 확인해 주세요.",
    "resume": "남은 수신자 발송 재개",
    "resumeTitle": "일시정지된 발송 재개",
    "resumeCounts": "대기 {{pending}}명 · 결과 미확인 {{unknown}}명 · 처리 중 {{sending}}명",
    "resumeSafety": "아직 시도하지 않은 대기 수신자에게만 발송합니다. 이미 시도한 수신자는 자동으로 다시 보내지 않습니다.",
    "resumeAcknowledge": "결과 미확인 수신자의 내역을 검토했고, 이들에게 자동 재발송하지 않는 데 동의합니다.",
    "resumeNote": "검토 근거와 재개 사유를 10자 이상 기록하세요",
    "resumeWait": "진행 중인 시도가 끝나야 재개할 수 있습니다. 작업이 중단됐다면 재개를 시도한 뒤 내역을 새로 확인하세요.",
    "resumeSuccess": "대기 수신자 발송을 재개했습니다",
    "resumeError": "발송을 재개하지 못했습니다. 내역을 새로 확인해 주세요.",
    "providerTitle": "SES 후속 결과",
    "providerNotConfigured": "SES 이벤트 연결이 설정되지 않아 실제 전달·반송 결과를 확인할 수 없습니다.",
    "providerSetupWarning": "발송 후 전달·반송·스팸 신고 결과를 받을 수 있도록 이메일 제공자 연동이 필요합니다. 현재는 SMTP 접수 이후의 결과를 확인할 수 없습니다.",
    "providerWaiting": "SES 이벤트를 기다리고 있습니다. 아직 실제 전달 여부는 확인되지 않았습니다.",
    "providerNote": "각 수신자의 최신 SES 결과입니다. 전달은 수신 서버 접수를 뜻하며 열람을 뜻하지 않습니다.",
    "providerMetrics": {
      "observed": "결과 수신",
      "delivered": "서버 전달",
      "bounced": "반송",
      "complained": "스팸 신고",
      "rejected": "SES 거부",
      "delayed": "전달 지연"
    },
    "providerStates": {
      "sent": "SES 접수",
      "delayed": "전달 지연",
      "delivered": "수신 서버 전달",
      "bounced": "반송",
      "complained": "스팸 신고",
      "rejected": "SES 거부"
    },
    "deliveryLoadError": "발송 내역을 불러오지 못했습니다. 다시 시도해 주세요",
    "noDeliveryHistory": "저장된 발송 내역이 없습니다",
    "deliveryMetrics": {
      "targeted": "대상",
      "totalSent": "SMTP 접수",
      "failed": "실패",
      "skipped": "미발송",
      "unknown": "결과 미확인"
    },
    "deliveryStatus": {
      "pending": "대기",
      "sending": "발송 시도 중",
      "sent": "SMTP 접수",
      "failed": "실패",
      "skipped": "미발송",
      "unknown": "결과 미확인"
    },
    "deliveryReasons": {
      "empty_audience": "발송 대상이 0명이라 캠페인을 멈췄습니다. 대상 조건을 확인한 뒤 이 회차를 종결해 주세요.",
      "uncertain_delivery": "발송 결과를 확인할 수 없어 캠페인이 멈췄습니다. 수신자별 내역을 검토해 주세요.",
      "failed_recipients": "일부 수신자의 발송이 실패했습니다.",
      "skipped_recipients": "일부 수신자에게 발송하지 못했습니다.",
      "invalid_target": "대상 세그먼트가 없어졌거나 조건이 올바르지 않습니다.",
      "schedule_expired": "예약 종료 기한이 지나 발송하지 않았습니다.",
      "invalid_schedule": "반복 예약 설정이 올바르지 않아 발송을 멈췄습니다.",
      "interrupted_after_attempt": "발송 시도 후 결과 저장 전에 작업이 중단됐습니다.",
      "provider_call_threw": "제공자 호출 결과를 확인할 수 없습니다.",
      "provider_outcome_missing": "제공자가 접수 여부를 반환하지 않았습니다.",
      "not_delivered": "이메일이 전송되지 않았습니다.",
      "provider_rejected": "이메일 제공자가 요청을 거절했습니다.",
      "campaign_stopped": "관리자가 캠페인을 중지해 보내지 않았습니다.",
      "smtp_unconfigured": "SMTP가 설정되지 않아 보내지 않았습니다.",
      "marketing_consent_missing": "명시적 마케팅 수신 동의 기록이 없어 보내지 않았습니다.",
      "marketing_unsubscribed": "수신 거부한 이메일 주소라 보내지 않았습니다.",
      "marketing_suppressed": "SES 반송·신고로 발송이 차단된 주소라 보내지 않았습니다.",
      "marketing_preference_unavailable": "수신 상태를 확인할 수 없어 보내지 않았습니다.",
      "unsubscribe_url_unavailable": "수신 거부 링크를 만들 수 없어 보내지 않았습니다.",
      "recipient_changed_or_deleted": "고객의 이메일이 바뀌었거나 고객이 삭제되어 보내지 않았습니다."
    },
    "types": {
      "sms": "SMS",
      "push": "푸시 알림",
      "email": "이메일",
      "inApp": "인앱",
      "chat": "채팅"
    },
    "selectedSegments": "{{count}}개 세그먼트 선택됨",
    "campaignCreated": "캠페인을 만들었습니다",
    "campaigns": "개 캠페인",
    "createError": "캠페인을 만들지 못했습니다. 잠시 후 다시 시도해 주세요",
    "createFirstCampaign": "첫 캠페인을 만들어 보세요",
    "fetchError": "캠페인을 불러오지 못했습니다. 잠시 후 다시 시도해 주세요",
    "noCampaigns": "아직 만든 캠페인이 없습니다",
    "selectTargetSegments": "대상 세그먼트를 선택하세요",
    "subtitle": "고객에게 효과적인 마케팅 메시지를 전달하세요",
    "status": {
      "draft": "임시저장",
      "scheduled": "예약됨",
      "running": "진행 중",
      "paused": "일시정지",
      "completed": "완료됨",
      "cancelled": "취소됨"
    },
    "clicked": "클릭",
    "converted": "전환",
    "running": "발송 중",
    "paused": "일시중지",
    "failed": "실패",
    "cancelled": "취소됨",
    "launchStarted": "발송을 시작했습니다",
    "launchConfirmTitle": "캠페인 발송",
    "launchConfirmBody": "‘{{name}}’ 이메일을 지금 아래 대상에게 보냅니다.",
    "launchSegmentLine": "{{name}} · 약 {{count}}명",
    "launchNoAudience": "대상 세그먼트가 없어 보낼 수 없습니다. 캠페인을 수정해 대상 세그먼트를 선택해 주세요.",
    "launchConfirmNote": "보낸 이메일은 되돌릴 수 없습니다. 수신 동의한 고객에게만 발송됩니다.",
    "launchEditAudience": "대상 선택하기",
    "launchNow": "지금 발송",
    "active": "노출 중",
    "ended": "종료됨"
  },
  "segments": {
    "title": "세그먼트",
    "allSegments": "전체 세그먼트",
    "createSegment": "세그먼트 만들기",
    "segmentName": "세그먼트 이름",
    "conditions": "조건",
    "addCondition": "조건 추가",
    "matchAll": "모든 조건 일치",
    "matchAny": "하나 이상 일치",
    "customerCount": "고객 수",
    "lastUpdated": "마지막 업데이트",
    "noSegments": "아직 만든 세그먼트가 없습니다",
    "preview": "프리뷰",
    "previewCustomers": "매칭 고객 미리보기",
    "matchingCustomers": "매칭 고객",
    "noMatchingCustomers": "조건에 맞는 고객이 없습니다",
    "commaSeparatedValues": "쉼표로 구분하여 입력",
    "existsValue": "존재함",
    "missingValue": "존재하지 않음",
    "operators": {
      "equals": "같음",
      "contains": "포함",
      "greaterThan": "보다 큼",
      "greaterThanOrEqual": "이상",
      "lessThan": "보다 작음",
      "lessThanOrEqual": "이하",
      "in": "포함 (여러 값)",
      "notIn": "미포함 (여러 값)",
      "exists": "존재함"
    },
    "fields": {
      "status": "상태",
      "tags": "태그",
      "email": "이메일",
      "company": "회사",
      "name": "이름",
      "phone": "전화번호",
      "totalSpent": "총 구매액",
      "purchaseCount": "구매 횟수",
      "lastPurchaseDate": "마지막 구매일",
      "createdAt": "생성일",
      "lastInteractionDate": "마지막 연락일"
    },
    "createSuccess": "세그먼트를 만들었습니다",
    "updateSuccess": "세그먼트를 수정했습니다",
    "deleteSuccess": "세그먼트를 삭제했습니다",
    "fetchError": "세그먼트를 불러오지 못했습니다. 잠시 후 다시 시도해 주세요",
    "saveError": "세그먼트를 저장하지 못했습니다. 잠시 후 다시 시도해 주세요",
    "invalidFilters": "각 조건의 필드, 연산자, 값을 확인한 뒤 다시 저장해 주세요.",
    "deleteError": "세그먼트를 삭제하지 못했습니다. 잠시 후 다시 시도해 주세요",
    "subtitle": "고객 그룹을 정의하고 관리하세요",
    "createFirst": "첫 세그먼트를 만들어 보세요",
    "deleteConfirmation": "이 세그먼트를 삭제하시겠습니까?",
    "deleteSegment": "세그먼트 삭제",
    "previewError": "미리보기를 불러오지 못했습니다. 잠시 후 다시 시도해 주세요",
    "selectField": "필드 선택",
    "selectOperator": "연산자 선택",
    "showingFirst10": "처음 10명만 표시됩니다",
    "nameRequired": "세그먼트 이름을 입력해 주세요",
    "filtersRequired": "조건을 하나 이상 추가해 주세요",
    "removeFilter": "조건 {{n}} 삭제"
  },
  "chatbot": {
    "title": "챗봇",
    "allChatbots": "전체 챗봇",
    "createChatbot": "챗봇 만들기",
    "chatbotName": "챗봇 이름",
    "scenarios": "시나리오",
    "createScenario": "시나리오 만들기",
    "scenarioName": "시나리오 이름",
    "trigger": "트리거",
    "response": "응답",
    "active": "활성화",
    "inactive": "비활성화",
    "testBot": "봇 테스트",
    "analytics": "분석",
    "conversations": "대화 수",
    "handoffRate": "상담원 전환율",
    "type": "유형",
    "scenarioBased": "시나리오 기반",
    "aiAgent": "AI 에이전트",
    "successRate": "성공률",
    "activateImmediately": "즉시 활성화",
    "triggerType": "트리거 유형",
    "keyword": "키워드",
    "intent": "의도",
    "messageContains": "메시지 포함",
    "responseType": "응답 유형",
    "text": "텍스트",
    "buttons": "버튼",
    "handoff": "상담원 연결",
    "addResponse": "응답 추가",
    "deleteScenario": "시나리오 삭제",
    "scenarioSettings": "시나리오 설정",
    "triggerConditions": "트리거 조건",
    "responses": "응답",
    "testScenario": "시나리오 테스트",
    "scenarioEditor": "시나리오 편집기",
    "triggerValue": "트리거 값",
    "addScenario": "시나리오 추가",
    "timeBased": "시간 기반",
    "fetchError": "챗봇을 불러오지 못했습니다. 잠시 후 다시 시도해 주세요",
    "createSuccess": "챗봇을 만들었습니다",
    "updateSuccess": "챗봇을 수정했습니다",
    "saveError": "챗봇을 저장하지 못했습니다. 잠시 후 다시 시도해 주세요",
    "deleteSuccess": "챗봇을 삭제했습니다",
    "deleteError": "챗봇을 삭제하지 못했습니다. 잠시 후 다시 시도해 주세요",
    "activated": "챗봇을 활성화했습니다",
    "deactivated": "챗봇을 비활성화했습니다",
    "toggleError": "챗봇 상태를 변경하지 못했습니다. 잠시 후 다시 시도해 주세요",
    "manageScenarios": "시나리오 관리",
    "noScenarios": "아직 만든 시나리오가 없습니다",
    "editScenario": "시나리오 수정",
    "scenarioDeleted": "시나리오를 삭제했습니다",
    "scenarioAdded": "시나리오를 추가했습니다",
    "scenarioUpdated": "시나리오를 수정했습니다",
    "deleteChatbot": "챗봇 삭제",
    "noChatbots": "아직 만든 챗봇이 없습니다",
    "createFirst": "첫 챗봇을 만들어 보세요",
    "subtitle": "AI 챗봇으로 고객 응대를 자동화하세요",
    "deleteConfirmation": "이 챗봇을 삭제하시겠습니까?",
    "emptyTitle": "아직 만든 챗봇이 없습니다",
    "emptyDescription": "키워드에 맞춰 자주 묻는 질문에 자동으로 답하는 대화 흐름을 만들어 보세요."
  },
  "analytics": {
    "title": "분석",
    "overview": "개요",
    "performance": "성과",
    "customerInsights": "고객 인사이트",
    "teamPerformance": "팀 성과",
    "dateRange": "기간 선택",
    "today": "오늘",
    "yesterday": "어제",
    "last7Days": "최근 7일",
    "last30Days": "최근 30일",
    "custom": "사용자 정의",
    "export": "내보내기",
    "chatAnalytics": "채팅 분석",
    "totalChats": "기간 내 채팅",
    "totalSent": "기간 내 발송",
    "agentPerformance": "상담원 성과",
    "chatsHandled": "처리한 채팅",
    "satisfaction": "만족도",
    "avgResponseTime": "평균 응답 시간",
    "resolutionRate": "해결률",
    "chatVolume": "채팅 볼륨",
    "responseTime": "응답 시간",
    "customerSatisfaction": "고객 만족도",
    "dailyChats": "일별 채팅",
    "responseTimeDistribution": "응답시간 분포",
    "conversionRate": "전환율",
    "totalConverted": "전환 수",
    "customerAnalytics": "고객 분석",
    "totalCustomers": "전체 고객",
    "newCustomers": "신규 고객",
    "activeCustomers": "활성 고객",
    "vipCustomers": "VIP 고객",
    "atRiskCustomers": "이탈 위험 고객",
    "churnRate": "이탈률",
    "channelAnalytics": "채널별 분석",
    "channel": "채널",
    "chatsCount": "채팅 수",
    "fetchError": "분석 데이터를 불러오지 못했습니다. 잠시 후 다시 시도해 주세요",
    "endDate": "종료일",
    "loadingData": "데이터를 불러오는 중...",
    "noAgentData": "표시할 상담원 데이터가 없습니다",
    "noChannelData": "표시할 채널 데이터가 없습니다",
    "startDate": "시작일",
    "subtitle": "비즈니스 성과를 분석하고 인사이트를 얻으세요",
    "channelMetrics": "채널 지표",
    "firstResponseTime": "첫 응답 시간",
    "onlineTime": "온라인 시간",
    "pending": "대기 중",
    "performanceMetrics": "성과 지표",
    "resolved": "해결됨",
    "exportCsv": "CSV 내보내기",
    "presetToday": "오늘",
    "preset7d": "최근 7일",
    "preset30d": "최근 30일",
    "preset90d": "최근 90일",
    "responseBuckets": {
      "0-1m": "1분 미만",
      "1-5m": "1~5분",
      "5-15m": "5~15분",
      "15-30m": "15~30분",
      "30m+": "30분 이상"
    },
    "overNConversations": "대화 {{count}}건 기준",
    "overNRatings": "평가 {{count}}건 기준",
    "viewLowRated": "낮은 평가 {{count}}건 보기",
    "campaignReceiptNote": "선택 기간에 SMTP가 접수한 {{n}}개 캠페인의 확인된 발송입니다. 과거 근거 없는 합계는 제외하며, 열람·클릭·전환은 아직 측정되지 않습니다.",
    "unassignedNote": "현재 배정 상담과 만족도에는 담당자 없는 대화 {{n}}건이 포함되지 않습니다.",
    "unattributedResponses": "선택 기간에 시작한 대화 중 첫 인간 응답 {{n}}건은 응답자 근거가 없어 상담원별 응답 시간에서 제외됩니다.",
    "unattributedClosures": "선택 기간에 종료되었고 현재도 닫힌 상담 {{n}}건은 종료 실행자 근거가 없어 상담원별 직접 종료 횟수에서 제외됩니다.",
    "undatedClosures": "종료 날짜가 없는 과거 상담 {{n}}건은 기간별 종료 집계에 넣을 수 없습니다.",
    "assignedConversations": "현재 배정 상담",
    "manualClosures": "직접 종료 횟수",
    "closureAttribution": "직접 종료 횟수는 선택한 기간에 종료 처리한 사람에게 귀속합니다. 재개 후 다시 종료하면 별도 종료로 집계합니다. 자동화·AI 도구와 종료 근거가 없는 과거 기록은 제외합니다.",
    "agentAttribution": "상담 수와 만족도는 현재 배정 기준입니다. 응답 시간은 재배정 이후에도 최초로 답한 상담원 기준이며, 응답 근거가 없는 기록은 제외됩니다."
  },
  "marketing": {
    "title": "마케팅",
    "campaigns": "캠페인",
    "popups": "팝업",
    "banners": "배너",
    "announcements": "공지사항",
    "createNew": "새로 만들기",
    "targeting": "타겟팅",
    "display": "표시 설정",
    "preview": "미리보기",
    "noPopups": "아직 만든 팝업이 없습니다",
    "noBanners": "아직 만든 배너가 없습니다",
    "noAnnouncements": "아직 등록한 공지사항이 없습니다",
    "messagePreview": "캠페인 메시지 미리보기",
    "noItemsYet": "아직 등록된 {{type}} 항목이 없습니다",
    "createFirst": "첫 {{type}} 항목을 만들어 방문자와 소통을 시작하세요",
    "createItem": "{{type}} 만들기",
    "impressions": "노출수",
    "clicks": "클릭수",
    "loadingCampaigns": "캠페인을 불러오는 중...",
    "subtitle": "팝업, 배너, 캠페인으로 방문자와 소통하세요",
    "campaignName": "캠페인 이름",
    "content": "내용",
    "buttonText": "버튼 텍스트",
    "buttonUrl": "버튼 URL",
    "message": "메시지",
    "backgroundColor": "배경색",
    "textColor": "텍스트 색상",
    "position": "위치",
    "frequency": "빈도",
    "displaySettings": "표시 설정",
    "editCampaign": "캠페인 수정",
    "createCampaign": "캠페인 만들기",
    "targetPages": "타겟 페이지",
    "targetPagesPlaceholder": "/home, /products, /pricing",
    "targetPagesHelp": "정확한 페이지 경로나 전체 URL을 쉼표로 나눠 입력하세요. 비워 두면 모든 페이지에 적용합니다.",
    "showOnPageLoad": "페이지 로드 시 표시",
    "showAfterDelay": "지연 후 표시",
    "seconds": "초",
    "positions": {
      "center": "중앙",
      "top": "상단",
      "bottom": "하단",
      "topLeft": "좌상단",
      "topRight": "우상단",
      "bottomLeft": "좌하단",
      "bottomRight": "우하단"
    },
    "frequencies": {
      "always": "항상",
      "oncePerSession": "세션당 1회",
      "oncePerDay": "1일 1회",
      "oncePerWeek": "주 1회",
      "onceEver": "최초 1회",
      "once": "한 번만"
    },
    "types": {
      "popup": "팝업",
      "banner": "배너",
      "tooltip": "툴팁",
      "notification": "알림"
    },
    "size": "크기",
    "sizes": {
      "small": "작게",
      "medium": "보통",
      "large": "크게",
      "fullscreen": "전체 화면"
    },
    "animation": "애니메이션",
    "animations": {
      "fade": "페이드",
      "slide": "슬라이드",
      "zoom": "줌",
      "none": "없음"
    },
    "imageUrl": "이미지 URL",
    "triggers": "트리거",
    "showOnScroll": "스크롤 시 표시",
    "showOnExit": "이탈 의도 시 표시",
    "showOnIdle": "유휴 시 표시",
    "scheduling": "예약",
    "startDate": "시작일",
    "endDate": "종료일",
    "timezone": "시간대",
    "clone": "복제",
    "cloneSuccess": "캠페인을 복제했습니다",
    "cloneError": "캠페인을 복제하지 못했습니다. 잠시 후 다시 시도해 주세요",
    "viewAnalytics": "분석 보기",
    "campaignAnalytics": "캠페인 분석",
    "conversions": "전환",
    "conversionRate": "전환율",
    "dismissals": "닫기 횟수",
    "analyticsError": "분석 데이터를 불러오지 못했습니다. 잠시 후 다시 시도해 주세요",
    "createSuccess": "캠페인을 만들었습니다",
    "deleteError": "캠페인을 삭제하지 못했습니다. 잠시 후 다시 시도해 주세요",
    "deleteSuccess": "캠페인을 삭제했습니다",
    "fetchError": "캠페인을 불러오지 못했습니다. 잠시 후 다시 시도해 주세요",
    "noTitle": "제목 없음",
    "saveError": "캠페인을 저장하지 못했습니다. 잠시 후 다시 시도해 주세요",
    "statusError": "상태를 변경하지 못했습니다. 잠시 후 다시 시도해 주세요",
    "statusUpdated": "상태를 변경했습니다",
    "updateSuccess": "캠페인을 수정했습니다",
    "deleteTitle": "이 캠페인을 삭제할까요?",
    "deleteMessage": "\"{{name}}\" 캠페인과 그 발송·전환 기록이 함께 사라집니다. 되돌릴 수 없습니다.",
    "ab": {
      "title": "A/B 테스트",
      "enabled": "변형 분할 노출 사용",
      "help": "방문자에게 가중치 비율로 한 변형을 보여줍니다. 빈 콘텐츠는 기본 콘텐츠를 사용합니다. 순서·이름 변경은 배정을 유지하며, 가중치나 변형 변경은 배정을 바꿀 수 있습니다. 콘텐츠를 수정해도 기존 집계는 유지됩니다. 새 실험은 캠페인을 복제해 시작하세요.",
      "name": "변형 이름",
      "weight": "노출 가중치",
      "share": "예상 배분: {{percent}}%",
      "variantNumber": "변형 {{number}}",
      "add": "변형 추가",
      "remove": "변형 제거",
      "invalid": "변형 이름은 서로 달라야 하고 가중치는 0~10,000이어야 합니다. 분할 노출에는 변형 두 개 이상과 양수인 총 가중치가 필요합니다.",
      "analyticsHelp": "집계는 방문자가 보고한 이벤트이며 고유 사람 수가 아닙니다. 클릭률은 클릭 수를 노출 수로 나눈 값입니다. 통계적 승자는 판정하지 않았습니다.",
      "active": "변형 분할 노출 사용 중",
      "inactive": "변형 분할 노출 중지 · 이전 집계 유지"
    },
    "scheduleTimezone": "예약 시간대",
    "scheduleHelp": "Asia/Seoul, America/New_York 같은 IANA 시간대를 입력하세요. 서머타임 전환으로 중복되는 시각은 UTC로 입력하세요. 날짜를 비우면 시간 제한이 없습니다. 열린 페이지는 시작 예정 시각과 화면에 표시되는 동안 약 1분 간격으로 다시 확인합니다.",
    "scheduleInvalid": "유효한 시간대와 중복되지 않는 시각을 입력하세요. 종료 시각은 시작 시각보다 늦어야 합니다.",
    "audience": {
      "title": "고객 대상",
      "help": "세그먼트와 조건은 각각 20개까지 선택할 수 있습니다. 선택한 세그먼트 중 하나에 속하고 추가 조건을 모두 만족해야 합니다. 세그먼트와 조건을 비워 두면 모든 방문자가 대상입니다. 방문자 소유 확인 후 현재 고객 기록으로 평가합니다.",
      "loadError": "세그먼트를 불러오지 못했습니다.",
      "unavailable": "비활성",
      "noSegments": "등록된 세그먼트가 없습니다. 아래에서 고객 조건을 추가할 수 있습니다.",
      "missingSegment": "선택한 세그먼트를 사용할 수 없습니다. 발행 전에 제거하거나 다른 세그먼트를 선택하세요.",
      "conditionNumber": "고객 조건 {{number}}",
      "field": "고객 필드",
      "operator": "비교 방식",
      "value": "조건 값",
      "chooseValue": "값을 선택하세요",
      "statuses": {
        "active": "활성",
        "inactive": "비활성",
        "vip": "VIP",
        "at-risk": "이탈 위험"
      },
      "customKey": "사용자 정의 필드 키",
      "listHelp": "여러 값은 쉼표로 나눠 입력하세요.",
      "addCondition": "고객 조건 추가",
      "removeCondition": "조건 {{number}} 삭제",
      "fields": {
        "status": "상태",
        "tags": "태그",
        "name": "이름",
        "email": "이메일",
        "phone": "전화번호",
        "company": "회사",
        "source": "유입 경로",
        "totalSpent": "총 구매 금액",
        "purchaseCount": "구매 횟수",
        "createdAt": "등록일",
        "lastPurchaseDate": "최근 구매일",
        "lastInteractionDate": "최근 대화일",
        "customFields": "사용자 정의 필드"
      },
      "operators": {
        "equals": "같음",
        "contains": "포함",
        "gt": "초과",
        "lt": "미만",
        "gte": "이상",
        "lte": "이하",
        "in": "목록에 포함",
        "nin": "목록에 없음"
      }
    },
    "displayRules": {
      "help": "페이지 로드·스크롤·이탈·유휴 조건 중 먼저 충족한 조건으로 노출합니다. 지연 시간은 모든 조건의 최소 대기 시간입니다. 조건을 선택하지 않으면 페이지 로드 때 노출합니다. 대상 안내는 하나씩 표시하며 닫거나 기간이 끝나면 다음 안내를 표시합니다.",
      "scrollDepth": "스크롤 깊이 (%)",
      "idleSeconds": "활동이 없는 시간 (초)",
      "delaySeconds": "최소 대기 시간 (초)",
      "frequencyHelp": "빈도는 이 브라우저의 저장소를 기준으로 합니다. 현재 탭 세션, 24시간, 7일 또는 최초 한 번으로 제한합니다. 저장소가 차단되거나 지워지면 새로고침 뒤에는 제한을 기억할 수 없습니다."
    },
    "conversion": {
      "title": "전환 목표",
      "none": "측정하지 않음",
      "chatStarted": "새 상담 시작",
      "help": "최근 7일 이내에 전달된 안내의 마지막 보고 클릭(없으면 노출)도 최근 7일 이내일 때, 저장된 새 위젯 상담을 집계합니다. 기존 상담 답변과 공개 전환 신고는 제외합니다. 방문자가 안내를 보기 전에 목표를 선택하세요. 목표 중지 전의 유효한 안내는 이후 상담에도 귀속될 수 있습니다."
    },
    "measurement": {
      "events": "노출과 클릭은 방문자가 보고한 이벤트이며 고유 방문자 수가 아닙니다. CTR은 클릭을 노출로 나눈 값입니다.",
      "verified": "새 상담 시작은 보고된 캠페인에 귀속된 실제 저장 상담입니다. 보관 중인 상담을 집계하므로 고객 삭제 시 해당 근거도 제거됩니다. 목표를 중지해도 기존 기록은 표시됩니다.",
      "unavailable": "이 캠페인에는 새 상담 시작 측정이 연결되지 않았거나 연결을 사용할 수 없습니다. 측정된 0건을 뜻하지 않습니다.",
      "rate": "고유 방문자 집단을 측정하지 않으므로 상담 시작률이나 통계적 승자를 판정하지 않습니다.",
      "reported": "방문자가 보고한 전환 이벤트 {{n}}건은 저장된 새 상담과 별도이며 구매를 증명하지 않습니다.",
      "retired": "제거된 변형"
    },
    "revision": {
      "title": "조건별 기록",
      "help": "콘텐츠·배분·캠페인 설정을 바꾸면 새 조건으로 기록합니다. 위의 합계는 모든 조건을 합친 값입니다. 각 조건의 보고 횟수와 보관 중인 새 상담을 따로 확인하세요. 고유 방문자 기준 전환율과 통계적 승자는 측정하지 않습니다.",
      "error": "조건별 기록을 불러오지 못했습니다.",
      "empty": "아직 별도로 기록된 조건이 없습니다. 다음 저장부터 조건별 기록을 시작합니다.",
      "number": "조건 {{n}}",
      "current": "현재 설정",
      "savedAt": "조건 저장 시각",
      "legacy": "조건을 확인할 수 없는 기록: 노출 보고 {{impressions}} · 클릭 보고 {{clicks}} · 새 상담 {{conversations}}",
      "counts": "노출 보고 {{impressions}} · 클릭 보고 {{clicks}} · 새 상담 {{conversations}}",
      "settings": "저장된 설정 보기",
      "allPages": "모든 페이지",
      "segmentNotice": "고객 대상은 현재 고객 정보와 세그먼트 정의로 평가됩니다. 세그먼트 정의의 별도 변경은 이 조건 기록에 포함되지 않습니다.",
      "page": "{{page}} / {{pages}}",
      "conflict": "다른 작업에서 캠페인이 변경되었습니다. 현재 내용을 확인한 뒤 다시 저장하세요.",
      "reload": "최신 조건 불러오기",
      "reloadHelp": "최신 조건을 불러오면 현재 입력을 그 설정으로 바꿉니다. 필요한 변경은 다시 입력한 뒤 저장하세요.",
      "segments": "선택 세그먼트 {{n}}개"
    },
    "deletion": {
      "unavailable": "선택한 캠페인을 찾을 수 없습니다. 새로 불러온 목록을 확인하세요.",
      "unconfirmed": "삭제 여부를 확인하지 못했습니다. 재시도하거나 이 창을 닫고 결과를 확인하세요.",
      "conflict": "삭제 확인창을 연 뒤 캠페인이 변경됐습니다. 최신 내용을 확인한 후 다시 삭제하세요.",
      "reviewLatest": "최신 캠페인 확인",
      "completed": "캠페인이 삭제됐습니다. 재시도로 다른 캠페인을 삭제하지 않습니다.",
      "cancelHelp": "삭제 완료 여부를 확인하거나 아직 적용되지 않은 삭제를 중단합니다. 이미 삭제된 캠페인은 복원되지 않습니다."
    },
    "creation": {
      "title": "결과 확인이 필요한 캠페인 작업",
      "checking": "저장 결과를 확인하고 있습니다…",
      "unconfirmed": "저장 결과가 확인되지 않았습니다. 저장된 결과를 확인하거나 같은 요청으로 재시도하세요.",
      "saved": "저장된 캠페인: {{name}}",
      "openSaved": "저장된 캠페인 열기",
      "sameDetails": "이 요청을 재시도하려면 원래 설정을 입력하세요. 다른 설정으로는 재시도할 수 없습니다.",
      "reenter": "재시도에 필요한 원래 설정을 다시 입력하세요. 캠페인 문구는 이 기기에 보관하지 않습니다.",
      "deleted": "삭제된 캠페인입니다. 이 요청으로 다시 생성하지 않습니다.",
      "storageWarning": "현재 페이지에서 복구할 수 있습니다. 결과를 확인할 때까지 페이지를 열어 두세요.",
      "cancel": "미확인 작업 취소",
      "cancelHelp": "이미 저장됐다면 현재 캠페인을 엽니다. 저장되지 않은 요청은 중단합니다.",
      "cancelled": "중단된 요청입니다. 이 요청은 캠페인을 변경하지 않습니다.",
      "mutationLabel": "{{action}}: {{name}}",
      "changedSince": "원래 변경은 저장됐으며 이후 다른 변경이 있습니다. 현재 캠페인을 확인하세요."
    }
  },
  "settings": {
    "visitorRetention": {
      "title": "상담하지 않은 방문자 보존",
      "scope": "연락처·상담·구매 기록·직원 메모·태그·별도 고객 속성이나 연결 기록이 없는 위젯 방문자만 정리합니다. 최근 재방문하거나 변경된 고객은 제외합니다.",
      "days": "마지막 활동 후 보존 기간(일)",
      "daysHelp": "7~730일 중 선택합니다. 자동 정리는 기본으로 꺼져 있습니다.",
      "enabled": "자동 정리 켜짐 · {{count}}일 보존",
      "disabled": "자동 정리 꺼짐",
      "preview": "삭제 예상 범위 확인",
      "enable": "확인하고 자동 정리 활성화",
      "stop": "자동 정리 중지",
      "reload": "현재 설정 조회",
      "retrySave": "같은 요청으로 저장 결과 확인",
      "incidents": {
        "title": "정리 장애 후속 조치",
        "help": "정리 장애와 담당 관리자, 조치 기록을 확인합니다. 알림 읽음은 장애 접수 확인을 대신하지 않습니다. 미접수 장애는 한 시간마다, 담당자가 접수 확인한 미해결 장애는 하루마다 다시 알립니다.",
        "scan": "대상 확인 장애",
        "cleanup": "삭제 정리 장애",
        "active": "미해결",
        "resolved": "해소 확인",
        "opened": "감지 {{date}}",
        "checked": "감시의 최근 확인 {{date}}",
        "recovered": "해소 확인 {{date}}",
        "stale": "감시가 5분 넘게 이 장애를 확인하지 못했습니다. 현재 해소 여부는 확인되지 않았습니다.",
        "owner": "담당 관리자: {{name}}",
        "unassigned": "담당자 없음",
        "ownerUnavailable": "이전 담당자가 현재 담당 자격을 갖추지 못했습니다. 활성 관리자를 지정해 주세요.",
        "acknowledged": "담당 접수 확인 {{date}}",
        "unacknowledged": "지정한 관리자의 접수 확인을 기다립니다",
        "nextReminder": "미해결 재알림 예정 {{date}}",
        "reminded": "최근 미해결 재알림 {{date}}",
        "take": "내가 담당하기",
        "assign": "담당 관리자 변경",
        "cancelAssignment": "담당자 지정 닫기",
        "acknowledge": "담당 접수 확인",
        "searchAdministrator": "관리자 검색",
        "assignee": "담당 관리자",
        "saveAssignment": "담당 관리자 저장",
        "administratorsUnavailable": "담당 가능한 관리자를 불러오지 못했습니다. 다시 검색하거나 지정 화면을 다시 열어 주세요.",
        "searchMore": "일치하는 관리자가 더 있습니다. 검색 범위를 좁혀 원하는 담당자를 찾아 주세요.",
        "note": "장애 조치 기록",
        "noteHelp": "확인하거나 변경한 내용을 2,000자 이내로 적고 직접 저장해 주세요. 저장 전 초안은 이 화면에만 남습니다.",
        "addNote": "조치 기록 저장",
        "clearDraft": "저장 전 초안 지우기",
        "draftChanged": "초안을 쓰기 시작한 뒤 장애 상태가 바뀌었습니다. 현재 내용을 검토하고 초안을 복사·비운 뒤 현재 장애에 맞게 다시 작성해 주세요.",
        "changed": "장애나 관리자 상태가 바뀌었습니다. 최신 내용을 조회하고 검토한 뒤 변경해 주세요.",
        "saveUnavailable": "이 조치가 저장됐는지 확인하지 못했습니다. 같은 요청을 다시 확인해 결과를 조회하거나 저장해 주세요. 확인 전에는 다른 조치를 시작하지 않습니다.",
        "superseded": "이 조치가 기록된 뒤 장애 상태가 다시 바뀌었습니다. 현재 내용을 표시하며 원래 기록은 조치 이력에서 확인할 수 있습니다.",
        "retry": "같은 장애 조치 확인",
        "saved": "장애 조치를 기록했습니다.",
        "meaning": "접수 확인은 관리자가 담당을 맡았다는 기록입니다. 장애 해소는 자동 점검으로 확인하며, 조치 기록은 90일 보관합니다.",
        "history": "조치 이력 보기",
        "hideHistory": "조치 이력 닫기",
        "includeEarlier": "이전 발생 회차도 보기",
        "earlier": "이전 발생 회차",
        "historyUnavailable": "조치 이력을 불러오지 못했습니다. 기록이 없다고 처리하지 않았습니다. 이력을 다시 조회하거나 최신 장애 상태를 확인해 주세요.",
        "noHistory": "이 발생 회차에 보관 중인 조치 기록이 없습니다.",
        "older": "이전 조치 기록 더 보기",
        "refreshHistory": "조치 이력 다시 조회",
        "formerMember": "이전 구성원",
        "unavailable": "장애 상태를 불러오지 못했습니다. 현재 상태를 알 수 없으니 다시 확인해 주세요.",
        "none": "감시에서 기록한 정리 장애가 없습니다.",
        "refresh": "최신 장애 상태 조회",
        "events": {
          "opened": "감시에서 장애를 감지했습니다.",
          "recovered": "감시에서 해소를 확인했습니다.",
          "assigned": "{{actor}}님이 담당자를 지정했습니다: {{assignee}}.",
          "acknowledged": "{{actor}}님이 담당 접수를 확인했습니다.",
          "noted": "{{actor}}님이 조치 내용을 기록했습니다.",
          "owner_unavailable": "이전 담당자가 현재 담당 자격을 갖추지 못했습니다."
        }
      },
      "pendingSave": "확인되지 않은 정책 저장",
      "pendingEnable": "요청한 변경: {{days}}일 보존으로 자동 정리 활성화.",
      "pendingStop": "요청한 변경: 자동 정리 중지.",
      "pendingSaveHelp": "저장 결과가 확인되지 않았습니다. 같은 요청을 확인해 적용하거나 결과를 조회하고, 다른 변경을 시작하려면 먼저 취소해 주세요. 화면에 다시 들어와도 자동으로 적용하지 않습니다.",
      "obsoleteSave": "정책이나 검토가 변경됐거나 만료됐습니다. 이 요청을 취소한 뒤 현재 설정을 조회하고 새 변경을 검토해 주세요.",
      "cancelSave": "미확인 요청 취소",
      "cancelSaveUnavailable": "취소 여부를 확인하지 못했습니다. 같은 요청을 유지하며, 결과를 확인하거나 취소를 다시 시도해 주세요.",
      "saveLookupUnavailable": "정책 저장 요청을 불러오지 못했습니다. 다른 변경을 시작하기 전에 현재 설정을 다시 조회해 주세요.",
      "saveResult": "정책 저장 결과",
      "saveCancelled": "이 요청은 적용 전에 취소됐습니다.",
      "saveSuperseded": "이 요청이 적용된 뒤 정책이 다시 변경됐습니다. 아래에 현재 정책을 표시합니다.",
      "saveApplied": "이 요청은 적용됐습니다. 요청을 취소해도 이미 적용된 정책이 되돌아가지는 않습니다. 아래의 현재 정책을 확인해 주세요.",
      "dismissSave": "결과 확인 완료",
      "confirmTitle": "방문자 자동 정리 활성화",
      "confirmScope": "이번 검토에서 {{date}} 이후 활동이 없는 삭제 가능 방문자 {{count}}명을 확인했습니다. 활성화하면 앞으로 생길 방문자도 {{days}}일 동안 활동이 없고 삭제 조건에 해당할 때 주기적으로 정리합니다.",
      "checkedAt": "범위 확인: {{date}} · 확인 결과는 10분 동안 유효합니다.",
      "irreversible": "삭제는 복구할 수 없습니다. 정리 직전에 조건을 다시 확인하며, 상담·연락처 등 기록이 생긴 고객은 보존합니다. 중지는 이미 시작된 삭제를 되돌리지 않습니다.",
      "acknowledge": "대상 범위와 복구할 수 없는 삭제를 확인했습니다.",
      "lastRun": "최근 점검 {{date}} · 삭제 접수 {{count}}명 · 접수 실패 {{failed}}명",
      "completion": "삭제 접수 후 첨부·연결 기록 정리를 별도로 재시도합니다. 고객 화면의 삭제 진행 상태에서 완료 여부를 확인할 수 있습니다.",
      "saved": "보존 정책을 저장했습니다.",
      "unavailable": "보존 정책 또는 예상 범위를 확인하지 못했습니다. 다시 조회해 주세요.",
      "conflict": "보존 정책이 바뀌었거나 범위 확인이 만료됐습니다. 현재 설정을 조회한 뒤 다시 확인해 주세요.",
      "saveUnavailable": "저장 결과를 확인하지 못했습니다. 같은 요청으로 결과를 확인하거나 현재 설정을 조회해 주세요.",
      "progressTitle": "방문자 정리 진행",
      "progressUnavailable": "정리 진행을 확인하지 못했습니다. 건수는 알 수 없는 상태입니다. 다시 확인해 주세요.",
      "progressStale": "보존 정책이 변경됐습니다. 현재 설정을 다시 확인한 뒤 진행 수치를 확인해 주세요.",
      "progressChecked": "확인 시각 {{date}}",
      "candidateProfiles": "정리 자격 검토 대상 프로필 {{count}}명",
      "candidateHelp": "보존 기간과 빈 프로필 조건에 해당하는 수입니다. 연결 기록이 있으면 보호되므로 실제 삭제할 고객 수와 다릅니다.",
      "cleanupTotals": "회수 대기 {{active}}건 · 완료 {{complete}}건 · 재시도 대기 {{retrying}}건",
      "oldestCleanup": "가장 오래 대기한 삭제의 접수 시각 {{date}}",
      "scanProgress": "최근 배치에서 프로필 {{count}}명 확인 · 설정 버전 {{revision}}",
      "nextCheck": "다음 정리 자격 확인 {{date}}",
      "refreshProgress": "정리 진행 다시 확인",
      "previewWorking": "전체 삭제 범위를 확인하고 있습니다 · 후보 프로필 {{count}}명 확인. 이 검토로 자동 정리가 활성화되지는 않습니다.",
      "previewUnavailable": "삭제 범위 확인을 일시적으로 진행하지 못했습니다. 저장된 진행 위치를 유지하며 다시 확인합니다.",
      "cancelPreview": "범위 확인 닫기",
      "previousPreview": "이전 범위 확인",
      "previousPreviewDetails": "이전에 시작한 범위 확인 · {{days}}일 보존 · 시작 {{date}}",
      "previousPreviewDone": "확인 완료 · 삭제 가능한 방문자 {{count}}명. 활성화 전에 결과를 다시 검토해 주세요.",
      "previousPreviewWorking": "저장된 진행 · 후보 프로필 {{count}}명 확인. 화면을 떠난 뒤에도 확인을 계속합니다.",
      "resumePreview": "범위 검토 이어 보기",
      "resumeUnavailable": "이전 범위 확인을 불러오지 못했습니다. 새 검토를 시작하기 전에 현재 설정을 다시 조회해 주세요.",
      "closeUnavailable": "범위 확인이 종료됐는지 확인하지 못했습니다. 같은 검토를 다시 닫거나 현재 설정을 조회해 주세요.",
      "previewClosed": "범위 확인을 종료했습니다. 이 결과로 활성화할 수 없으며, 필요하면 새로 검토해 주세요.",
      "warnings": {
        "invalidPolicy": "저장된 보존 기간이 잘못됐습니다. 자동 정리를 중지하거나 유효한 기간을 검토해 주세요.",
        "cleanupRetry": "접수된 삭제 중 재시도를 기다리는 작업이 있습니다. 고객 화면에서 삭제 진행을 확인해 주세요.",
        "cleanupDelayed": "접수한 삭제가 15분 넘게 완료되지 않았습니다. 고객 화면에서 삭제 진행을 확인해 주세요.",
        "scanFailure": "정리 대상 확인이나 삭제 접수에 실패했습니다. 자동 재시도를 계속합니다. 정책과 삭제 진행을 확인하고 실패가 계속되면 지원팀에 문의해 주세요.",
        "scanDelayed": "정리 대상 확인이 예정 시각보다 5분 넘게 늦어지고 있습니다. 진행을 다시 확인하고 지연이 계속되면 지원팀에 문의해 주세요."
      },
      "backlogPaused": "미완료 정리 작업이 많아 새 자동 삭제 접수를 기다리고 있습니다. 이미 접수된 정리는 계속 진행합니다."
    },
    "storage": {
      "title": "첨부파일 보관 용량",
      "measure": "용량 측정",
      "retry": "상태 다시 확인",
      "coverage": "이 조직의 상담·이미지·업로드 소유 기록과 미완료 고객 삭제 증거에 연결된 파일을 측정합니다. 소유 증거가 없는 과거 미전송 파일과 외부 서비스의 파일은 포함하지 않습니다.",
      "unmeasured": "아직 측정하지 않았습니다. 용량 측정을 시작하면 페이지를 떠난 뒤에도 계속 진행합니다.",
      "progress": "측정 중 · {{count}}개 파일 확인",
      "unavailable": "측정 상태를 확인하지 못했습니다. 용량을 0으로 처리하지 않았습니다. 다시 확인해 주세요.",
      "failed": "이번 측정을 완료하지 못했습니다. 잠시 후 용량 측정을 다시 시작해 주세요.",
      "previous": "아래는 이전에 완료한 측정 결과입니다.",
      "measuredAt": "측정 완료: {{date}}",
      "bytes": "전체 보관 용량",
      "referencedBytes": "기록에 사용 중",
      "unattachedBytes": "전송·연결 전 파일",
      "discardedBytes": "삭제·실패 후 회수 대기",
      "files": "확인한 파일 {{count}}개 · 보관 사본 {{copies}}개",
      "missing": "기록에 있지만 저장소에서 찾지 못한 파일 {{count}}개는 바이트 합계에 포함하지 않았습니다.",
      "writing": "저장 중인 파일 {{count}}개 · 현재 확인한 {{bytes}}. 저장이 끝나면 다시 측정해 주세요.",
      "window": "이 조직 안에서 파일 키는 한 번, 보관 사본은 각각 계산합니다. 측정 기간의 조회 결과이므로 그 사이 업로드·삭제된 파일은 다음 측정에 반영됩니다. 1분 안의 재요청은 같은 측정을 사용하며 완료 결과는 7일 보관합니다. 청구 용량이나 실시간 잔액이 아닙니다.",
      "retention": "기록에서 참조하는 파일에는 자동 보관 만료가 없습니다. 참조 없는 파일은 24시간 유예 후 매일 회수 대상이 되며, 저장·참조 예약이나 삭제 실패가 있으면 회수가 늦어질 수 있습니다. 고객·조직 삭제는 별도로 처리됩니다.",
      "access": "첨부는 현재 조직·팀·고객 권한을 확인해 제공합니다. 위젯 고객 링크는 10분, 외부 채널 링크는 7일, 이메일 이미지 링크는 30일 동안 유효합니다. 삭제·회수 상태도 다시 확인합니다."
    },
    "title": "설정",
    "general": "일반",
    "profile": "프로필",
    "team": "팀",
    "notifications": "알림",
    "integrations": "연동",
    "billing": "결제",
    "security": "보안",
    "appearance": "외관",
    "language": "언어",
    "languageDescription": "인터페이스에 사용할 언어를 선택하세요",
    "korean": "한국어",
    "english": "English",
    "timezone": "시간대",
    "saveChanges": "변경사항 저장",
    "changePassword": "비밀번호 변경",
    "twoFactor": "2단계 인증",
    "widget": "위젯",
    "channels": "채널 연동",
    "operatingHours": "운영 시간",
    "generalSettings": "일반 설정",
    "notificationSettings": "알림 설정",
    "emailNotifications": "이메일 알림",
    "browserNotifications": "브라우저 알림",
    "soundNotifications": "소리 알림",
    "newChatNotifications": "새 채팅 알림",
    "newMessageNotifications": "새 메시지 알림",
    "mentionNotifications": "멘션 알림",
    "avatarUrl": "아바타 URL",
    "emailNotificationsDesc": "SLA 위반처럼 놓치면 안 되는 건에 대해 이메일을 받습니다 (가입·비밀번호 메일은 이 설정과 무관합니다)",
    "browserNotificationsDesc": "데스크톱 알림 표시",
    "soundNotificationsDesc": "알림 소리 재생",
    "widgetDescription": "채팅 위젯 모양 설정",
    "primaryColor": "주요 색상",
    "greetingMessage": "인사 메시지",
    "operatingHoursDescription": "팀 운영 시간 설정",
    "teamDescription": "팀원 및 권한 관리",
    "securityDescription": "계정 보안 관리",
    "markAllRead": "모두 읽음 표시",
    "viewAllNotifications": "모든 알림 보기",
    "noNotifications": "새 알림이 없습니다",
    "inviteTeamMember": "팀원 초대",
    "inviteDescription": "팀원을 초대하여 함께 협업하세요",
    "emailAddress": "이메일 주소",
    "selectRole": "역할 선택",
    "sendInvitation": "초대 보내기",
    "manageTeam": "팀 관리",
    "currentPassword": "현재 비밀번호",
    "newPassword": "새 비밀번호",
    "confirmNewPassword": "새 비밀번호 확인",
    "enable2FA": "2단계 인증 활성화",
    "emailRequired": "이메일을 입력해 주세요",
    "memberAdded": "멤버를 추가했습니다",
    "allFieldsRequired": "모든 항목을 입력해 주세요",
    "passwordMismatch": "비밀번호가 일치하지 않습니다",
    "passwordTooShort": "비밀번호는 최소 {{count}}자 이상이어야 합니다",
    "passwordChanged": "비밀번호를 변경했습니다",
    "passwordChangeError": "비밀번호를 변경하지 못했습니다. 잠시 후 다시 시도해 주세요",
    "saveSuccess": "설정을 저장했습니다",
    "saveError": "설정을 저장하지 못했습니다. 잠시 후 다시 시도해 주세요",
    "removeMember": "멤버 삭제",
    "removeMemberConfirmation": "정말 {{name}}님을 팀에서 삭제하시겠습니까?",
    "invitationSent": "초대를 발송했습니다",
    "showAvatar": "아바타 표시",
    "showAvatarDesc": "채팅 위젯에 상담원 아바타 표시",
    "autoOpen": "위젯 자동 열기",
    "autoOpenDesc": "방문자에게 채팅 위젯 자동으로 열기",
    "autoOpenDelay": "자동 열기 지연 (초)",
    "autoOpenDelayDesc": "위젯 자동 열기까지 대기 시간",
    "joinedAt": "가입일",
    "memberDetails": "멤버 상세",
    "preChatForm": "프리챗 폼",
    "widgetCommonKnowledge": "제품 미지정 · 공통 지식만 사용",
    "widgetProductHelp": "제품별 설치 코드를 복사하면 상담과 AI 답변이 해당 제품 지식에 연결됩니다.",
    "widgetProductsLoading": "제품 정보를 확인하는 중입니다. 잠시 후 다시 시도해 주세요.",
    "preChatFormDesc": "상담 시작 전 방문자에게 이름·연락처를 입력받습니다",
    "preChatMessage": "안내 문구",
    "preChatMessagePlaceholder": "상담 시작 전에 연락처를 남겨주세요.",
    "preChatPhone": "전화번호",
    "preChatFieldOff": "사용 안 함",
    "preChatFieldOptional": "선택 입력",
    "preChatFieldRequired": "필수 입력",
    "subtitle": "워크스페이스와 계정 설정을 관리하세요",
    "greetingDefault": "안녕하세요! 무엇을 도와드릴까요?",
    "widgetLivePreviewBadge": "실시간 미리보기",
    "widgetLivePreviewHint": "화면 모서리에 실제 위젯 미리보기가 떠 있습니다. 설정을 바꾸면 즉시 반영됩니다.",
    "widgetPreviewQ": "안녕하세요, 문의가 있어요.",
    "widgetPreviewA": "네, 어떤 점이 궁금하신가요? 도와드릴게요 😊",
    "widgetTogglePreview": "미리보기 열기/닫기",
    "members": "구성원",
    "membersDescription": "워크스페이스에 접근할 수 있는 사람을 관리하고 새 구성원을 초대합니다.",
    "membersLoadFailed": "구성원 정보를 불러오지 못했습니다",
    "workspaceMembers": "워크스페이스 구성원",
    "seatUsage": "시트 사용량",
    "seatUsageOf": "{{used}}명 사용 중 / 총 {{total}}석",
    "seatUsageUnlimited": "{{used}}명 사용 중 · 무제한",
    "seatPending": "초대 대기 {{count}}건",
    "seatLimitBadge": "시트 가득 참",
    "seatLimitReached": "구매한 시트를 모두 사용했습니다. 결제 페이지에서 시트를 추가해 주세요",
    "inviteMember": "구성원 초대",
    "sendInvite": "초대 보내기",
    "inviteHint": "입력한 주소로 초대 링크가 발송됩니다. 링크는 7일 후 만료됩니다.",
    "inviteSent": "{{email}} 주소로 초대를 보냈습니다",
    "inviteFailed": "초대를 보내지 못했습니다",
    "inviteResent": "초대를 다시 보냈습니다",
    "inviteRevoked": "초대를 취소했습니다",
    "inviteExpires": "만료",
    "inviteSentTimes": "{{count}}회 발송",
    "pendingInvitations": "대기 중인 초대",
    "revokeInviteTitle": "초대를 취소할까요?",
    "revokeInviteMessage": "{{email}} 주소로 보낸 초대 링크가 즉시 무효화됩니다.",
    "roleUpdated": "권한을 변경했습니다",
    "memberActive": "활성",
    "memberDeactivated": "비활성",
    "deactivate": "비활성화",
    "reactivate": "다시 활성화",
    "deactivateMemberTitle": "구성원을 비활성화할까요?",
    "deactivateMemberMessage": "{{name}}님은 즉시 로그아웃되며 로그인할 수 없게 됩니다. 대화 기록은 보존되고 시트 1석이 반환됩니다.",
    "memberDeactivatedToast": "구성원을 비활성화했습니다",
    "memberReactivatedToast": "구성원을 다시 활성화했습니다",
    "you": "나",
    "seatGrandfathered": "기존 인원은 그대로 유지됩니다. 좌석을 더 늘리려면 업그레이드가 필요합니다.",
    "dayOpen": "{{day}} 영업",
    "primaryColorContrast": "이 색 위의 흰 글자는 대비 {{ratio}}:1 입니다 (권장 4.5:1 이상). 방문자가 위젯 문구를 읽기 어려울 수 있습니다",
    "greetingHint": "비워두면 방문자의 언어에 맞춰 자동으로 인사합니다.",
    "privacyPolicyUrl": "개인정보처리방침 링크",
    "privacyPolicyUrlHint": "위젯 첫 화면의 개인정보 안내에 연결됩니다. https 주소만 사용할 수 있습니다.",
    "privacyPolicyUrlInvalid": "https://로 시작하는 주소를 입력하세요.",
    "privacyNoticeText": "개인정보 안내 문구",
    "privacyNoticeDefault": "보내주신 메시지와 연락처는 문의에 답변하기 위해 처리됩니다.",
    "privacyNoticeHint": "방문자가 첫 메시지를 보내기 전에 인사말 아래에 표시됩니다(최대 300자). 비워두면 방문자 언어로 기본 문구를 보여 줍니다.",
    "jumpTo": "설정 바로가기",
    "jumpToDesc": "워크스페이스 설정은 아래 항목으로 나뉘어 있습니다",
    "tabHint": {
      "profile": "이름·이메일 등 내 계정 정보",
      "notifications": "데스크톱 알림과 소리 설정",
      "widget": "웹 위젯 설치 스니펫과 색상·문구",
      "channels": "카카오톡·LINE 웹훅 연동",
      "hours": "운영 시간과 시간대, 부재 시 안내",
      "members": "팀원 초대와 좌석(시트) 관리",
      "team": "상담 배정을 위한 팀 구성",
      "security": "로그인 방식과 계정 보안"
    },
    "inviteCreatedNoEmail": "{{email}} 초대는 만들었지만 메일이 발송되지 않았습니다. 아래 목록에서 다시 보내거나 초대 링크를 직접 전달해 주세요",
    "inviteResendNoEmail": "메일을 다시 보내지 못했습니다. 메일 설정을 확인하거나 초대 링크를 직접 전달해 주세요",
    "emailChangedVerify": "저장했습니다. {{email}} 로 인증 메일을 보냈습니다 — 링크를 눌러야 이메일 인증이 완료됩니다.",
    "memberActiveChats": "진행 중 {{count}}건",
    "deactivateMemberMessageWithChats": "{{name}}님은 즉시 로그아웃되며 로그인할 수 없게 됩니다. 진행 중인 대화 {{count}}건은 지금 다른 상담원에게 넘어갑니다. 대화 기록은 보존되고 시트 1석이 반환됩니다.",
    "reassignedAll": "대화 {{count}}건 재배정",
    "reassignedWithUnassigned": "{{moved}}건 재배정 · {{unassigned}}건은 담당자 없음",
    "passwordManagedByGoogle": "비밀번호는 Google 계정에서 관리합니다",
    "passwordManagedByGoogleDesc": "Trifrost는 Google 계정으로만 로그인하므로 별도의 비밀번호가 없습니다. 비밀번호나 2단계 인증은 Google 계정 설정에서 변경하세요",
    "openGoogleSecurity": "Google 계정 보안 설정 열기",
    "desktopBlocked": "브라우저가 이 사이트의 알림을 차단해 두었습니다. 주소창의 자물쇠 아이콘 → 사이트 설정에서 알림을 허용해 주세요",
    "desktopNotAsked": "아직 브라우저 알림 권한을 허용하지 않았습니다. 이 상태에서는 데스크톱 알림이 표시되지 않습니다",
    "desktopUnsupported": "이 브라우저는 데스크톱 알림을 지원하지 않습니다",
    "widgetKeyNotReady": "설치 코드를 아직 준비 중이에요. 잠시 후 다시 눌러주세요.",
    "visitorProtectionTitle": "새 방문자 생성 보호",
    "visitorProtectionPolicy": "IP당 분당 {{ipPerMinute}}회·시간당 {{ipPerHour}}회, 조직 전체 분당 {{workspacePerMinute}}회·시간당 {{workspacePerHour}}회·하루 {{workspacePerDay}}회의 새 방문자 생성 시도를 허용합니다.",
    "visitorProtectionHelp": "기존 방문자의 인증된 재접속과 초기 응답 복구는 제외합니다. 제한은 첫 사용부터 집계하며 실패한 생성 시도도 포함합니다. 방문량이 많거나 공용 네트워크를 쓰는 경우 서비스 운영자에게 한도 조정을 요청하세요.",
    "resendInviteTo": "{{email}}에게 초대 재발송",
    "revokeInviteTo": "{{email}} 초대 취소",
    "offHoursMessage": "운영시간 외 안내 메시지",
    "holidays": "휴일",
    "holidaysDescription": "공휴일·회사 휴무일에는 요일 설정과 상관없이 문을 닫습니다. 새 상담의 SLA 업무시간 목표도 이 날짜를 건너뜁니다.",
    "holidaysEmpty": "등록된 휴일이 없습니다.",
    "holidayUnnamed": "휴무",
    "removeHoliday": "{{date}} 휴일 삭제",
    "holidayDate": "날짜",
    "holidayName": "이름 (선택)",
    "holidayNamePlaceholder": "예: 설날",
    "holidayDateRequired": "휴일 날짜를 선택해주세요.",
    "holidayDuplicate": "이미 등록된 날짜입니다.",
    "widgetTitle": "위젯 제목",
    "widgetTitleDefault": "고객 지원팀",
    "widgetTitleHint": "방문자에게 보이는 이름입니다. 비워두면 워크스페이스 이름을 씁니다.",
    "sendCustomerInfo": "로그인한 고객 정보 함께 보내기 (선택)",
    "sendCustomerInfoHelp": "사이트가 아는 정보를 data-cd-* 로 붙이면 상담원 화면에 함께 표시됩니다. 값은 검증되지 않으므로 본인 확인용으로는 쓰지 마세요.",
    "cspHeading": "콘텐츠 보안 정책 (CSP)",
    "cspDesc": "사이트에 CSP 가 설정돼 있다면 아래 항목을 허용해야 위젯이 정상 동작합니다. 허용하지 않으면 스타일과 통신이 차단되어 채팅이 열리지 않습니다.",
    "sessions": {
      "title": "로그인한 기기",
      "help": "브라우저별 로그인과 최근 사용 정보를 확인하세요. 모르는 로그인은 종료할 수 있습니다. 같은 로그인을 공유하는 탭은 함께 종료됩니다.",
      "refresh": "목록 새로고침",
      "unknownBrowser": "알 수 없는 브라우저",
      "current": "현재 로그인",
      "lastSeen": "최근 사용: {{date}}",
      "expires": "만료: {{date}}",
      "ip": "IP 주소: {{ip}}",
      "logoutHere": "이 기기 로그아웃",
      "revoke": "로그인 종료",
      "empty": "활성 로그인이 없습니다.",
      "loadFailed": "로그인 목록을 불러오지 못했습니다. 새로고침해 주세요.",
      "revokeFailed": "종료 여부를 확인하지 못했습니다. 다시 시도하거나 목록을 새로고침해 주세요.",
      "confirmTitle": "이 로그인을 종료할까요?",
      "confirmCurrent": "이 로그인으로 열린 탭이 함께 로그아웃됩니다. 다른 기기의 로그인은 유지됩니다.",
      "confirmOther": "선택한 로그인으로 열린 모든 연결을 종료합니다. 현재 로그인과 다른 기기는 유지됩니다.",
      "confirm": "종료하기"
    },
    "memberIdentity": {
      "title": "회원 인증 · 로그인 회원 연결",
      "help": "사이트에 로그인한 회원을 기기와 상관없이 한 명의 고객으로 연결합니다. 회원 ID를 사이트 서버에서 아래 비밀키로 서명(HMAC-SHA256)해 위젯에 넘겨주세요. 서명이 맞는 경우에만 회원 기록과 지난 상담이 열립니다. 채널톡의 memberHash와 같은 방식입니다.",
      "on": "사용 중",
      "off": "꺼짐",
      "rotatedAt": "비밀키 변경: {{when}}",
      "previousValid": "이전 비밀키도 {{when}}까지 함께 인정됩니다.",
      "showOnce": "이 비밀키는 지금 한 번만 보여드립니다. 사이트 서버의 환경변수에만 저장하고, 브라우저 코드에는 넣지 마세요.",
      "secretLabel": "회원 인증 비밀키",
      "create": "비밀키 만들기",
      "rotate": "비밀키 교체",
      "disable": "회원 인증 끄기",
      "adminOnly": "비밀키는 관리자만 만들거나 바꿀 수 있습니다.",
      "failed": "처리하지 못했습니다. 잠시 후 다시 시도해 주세요.",
      "tabTag": "설치 코드에 넣기",
      "tabSpa": "로그인·로그아웃 연동",
      "tabServer": "서버 서명 코드",
      "tabChannel": "채널톡에서 옮기기",
      "tagHelp": "서버에서 페이지를 그리는 사이트라면 설치 코드에 회원 ID와 서명을 넣는 것으로 끝납니다. 인라인 스크립트가 없어 CSP가 있는 사이트에서도 동작합니다.",
      "spaHelp": "로그인 후에 boot, 로그아웃 때 shutdown을 부르세요. 로그아웃하면 이 브라우저에서 회원 상담 기록이 지워져 공용 PC에서도 안전합니다.",
      "serverHelp": "서명은 반드시 사이트 서버에서 만드세요. 비밀키가 브라우저에 노출되면 누구나 다른 회원으로 상담에 들어올 수 있습니다.",
      "channelHelp": "채널톡 설치 코드와 ChannelIO(...) 호출은 그대로 두고 아래 세 가지만 바꾸면 됩니다. memberHash 서명 코드도 그대로 쓰고 비밀키 값만 교체하세요.",
      "rotateTitle": "비밀키를 교체할까요?",
      "rotateMessage": "새 비밀키가 발급됩니다. 지금 비밀키는 24시간 동안 함께 인정되니 그 안에 사이트 서버의 값을 바꿔주세요.",
      "disableTitle": "회원 인증을 끌까요?",
      "disableMessage": "바로 모든 회원이 익명 방문자로 연결됩니다. 서명을 보내는 사이트는 위젯 콘솔에 오류가 표시되고 익명으로 이어집니다."
    },
    "inviteSeatsFull": "구매한 시트를 모두 사용 중이라 지금은 초대할 수 없습니다.",
    "inviteSeatsFullLink": "결제 및 구독에서 시트 추가",
    "offHoursDefault": "지금은 운영시간이 아니에요. 메시지를 남겨주시면 확인 후 답변드릴게요.",
    "offHoursHint": "비워두면 방문자의 언어에 맞춰 자동으로 안내합니다.",
    "noTeamTitle": "아직 만든 팀이 없습니다",
    "noTeamDescription": "팀은 팀 채팅의 \"채널 만들기\"로 만듭니다. 채널을 만들면 여기에서 팀원을 초대하고 상담 배정에 쓸 수 있습니다. 워크스페이스 구성원 초대는 구성원 탭에서 합니다.",
    "goToTeamChat": "팀 채팅에서 채널 만들기",
    "exportWorkspaceData": "데이터 내보내기"
  },
  "teamChat": {
    "title": "팀 채팅",
    "channels": "채널",
    "directMessages": "다이렉트 메시지",
    "createChannel": "채널 만들기",
    "members": "멤버",
    "pinned": "고정됨",
    "editMessage": "수정",
    "deleteMessage": "메시지 삭제",
    "replyTo": "답장",
    "addReaction": "반응 추가",
    "attachFile": "파일 첨부",
    "replyingTo": "답장 대상",
    "edited": "수정됨",
    "deleteConfirm": "이 메시지를 삭제하시겠습니까?",
    "editSuccess": "메시지를 수정했습니다",
    "editError": "메시지를 수정하지 못했습니다. 잠시 후 다시 시도해 주세요",
    "deleteSuccess": "메시지를 삭제했습니다",
    "deleteError": "메시지를 삭제하지 못했습니다. 잠시 후 다시 시도해 주세요",
    "reactionError": "반응을 추가하지 못했습니다. 잠시 후 다시 시도해 주세요",
    "manageMembers": "멤버 관리",
    "addMember": "멤버 추가",
    "inviteSuccess": "멤버를 초대했습니다",
    "inviteError": "멤버를 초대하지 못했습니다. 잠시 후 다시 시도해 주세요",
    "removeSuccess": "멤버를 제거했습니다",
    "removeError": "멤버를 제거하지 못했습니다. 잠시 후 다시 시도해 주세요",
    "roleSuccess": "역할을 변경했습니다",
    "roleError": "역할을 변경하지 못했습니다. 잠시 후 다시 시도해 주세요",
    "fetchError": "팀을 불러오지 못했습니다. 잠시 후 다시 시도해 주세요",
    "messagesError": "메시지를 불러오지 못했습니다. 잠시 후 다시 시도해 주세요",
    "sendError": "메시지를 전송하지 못했습니다. 잠시 후 다시 시도해 주세요",
    "createSuccess": "팀을 만들었습니다",
    "createError": "팀을 만들지 못했습니다. 잠시 후 다시 시도해 주세요",
    "subtitle": "팀원들과 실시간으로 소통하세요",
    "noChannels": "아직 만든 채널이 없습니다",
    "noMessages": "아직 메시지가 없습니다",
    "typeMessage": "메시지를 입력하세요...",
    "searchTeams": "팀 검색...",
    "roles": {
      "owner": "소유자",
      "admin": "관리자",
      "member": "멤버"
    },
    "deleteTeam": "팀 삭제",
    "deleteTeamTitle": "이 팀을 삭제할까요?",
    "deleteTeamMessage": "\"{{name}}\" 팀과 이 팀의 대화가 사라집니다. 이 팀으로 배정되던 문의는 다시 전체 배정으로 돌아갑니다. 되돌릴 수 없습니다.",
    "deleteTeamError": "팀을 삭제하지 못했습니다",
    "cancelReply": "답장 취소",
    "removeAttachment": "첨부 제거: {{name}}",
    "removeMember": "멤버 내보내기: {{name}}",
    "notAMember": "이 팀의 멤버가 아니라 실시간으로 받을 수 없습니다."
  },
  "features": {
    "realTimeChat": "실시간 채팅",
    "realTimeChatDesc": "모든 채널에서 고객과 즉시 연결하세요",
    "customerCRM": "고객 CRM",
    "customerCRMDesc": "통합된 고객 프로필과 상호작용 기록",
    "marketingAutomation": "마케팅 자동화",
    "marketingAutomationDesc": "타겟 캠페인과 개인화된 메시징"
  },
  "errors": {
    "somethingWrong": "문제가 발생했습니다. 잠시 후 다시 시도해 주세요",
    "notFound": "요청한 정보를 찾을 수 없습니다",
    "unauthorized": "로그인이 필요합니다",
    "forbidden": "접근 권한이 없습니다",
    "serverError": "서버에 문제가 발생했습니다. 잠시 후 다시 시도해 주세요",
    "networkError": "네트워크 연결을 확인해 주세요",
    "tryAgain": "다시 시도해 주세요",
    "network": "서버에 연결할 수 없습니다. 네트워크 상태를 확인해 주세요",
    "timeout": "응답이 지연되고 있습니다. 잠시 후 다시 시도해 주세요",
    "server": "서버에 일시적인 문제가 발생했습니다. 잠시 후 다시 시도해 주세요",
    "rateLimited": "요청이 너무 잦습니다. 잠시 후 다시 시도해 주세요",
    "badRequest": "요청을 처리하지 못했습니다. 입력값을 확인해 주세요",
    "unknown": "알 수 없는 오류가 발생했습니다",
    "invalidInput": "입력한 내용을 저장할 수 없습니다. 필수 항목을 모두 채웠는지 확인해 주세요",
    "invalidCredentials": "이메일 또는 비밀번호가 올바르지 않습니다",
    "wrongCurrentPassword": "현재 비밀번호가 올바르지 않습니다",
    "passwordTooShort": "비밀번호는 {{count}}자 이상이어야 합니다.",
    "emailTaken": "이미 사용 중인 이메일입니다",
    "oauthNoPassword": "소셜 로그인 계정은 비밀번호를 설정한 뒤에 변경할 수 있습니다",
    "alreadyMember": "이미 이 워크스페이스의 구성원입니다",
    "seatLimit": "남은 좌석이 없습니다. 요금제를 변경하거나 구성원을 정리해 주세요",
    "invalidEmail": "이메일 주소 형식이 올바르지 않습니다",
    "duplicate": "이미 같은 값이 등록되어 있습니다",
    "missingFields": "필수 항목이 비어 있습니다. 입력값을 확인해 주세요",
    "boundaryTitle": "이 부분을 표시하지 못했습니다",
    "boundaryBody": "나머지 화면은 계속 쓸 수 있습니다. 다시 시도하거나 다른 화면으로 이동하세요."
  },
  "notes": {
    "editor": {
      "actions": {
        "update": "메모 수정",
        "delete": "메모 삭제",
        "resolve": "메모 해결",
        "reopen": "메모 다시 열기",
        "restore": "과거 본문 복원"
      },
      "confirm": {
        "update": "메모 저장",
        "delete": "삭제 확정",
        "resolve": "해결로 표시",
        "reopen": "다시 열기",
        "restore": "과거 본문을 새 버전으로 저장"
      },
      "content": "수정할 메모 내용",
      "drafts": "메모 수정 초안",
      "checking": "이 브라우저의 초안을 확인하는 중…",
      "unreadable": "일부 초안을 확인하지 못했습니다. 메모 편집은 계속할 수 있습니다.",
      "recoverDescription": "이 계정으로 이 브라우저에 남겨 둔 메모 작업을 복구하세요. 로그아웃하면 초안이 삭제됩니다.",
      "checkAgain": "메모 초안 다시 확인",
      "pendingDraft": "결과가 확인되지 않았습니다. 초안을 버려도 이미 저장된 작업은 취소되지 않습니다.",
      "memoryOnly": "이 탭에만 남아 있습니다. 이동 전에 복구하고 사본을 다운로드하세요.",
      "restore": "메모 초안 복구",
      "discard": "메모 초안 버리기",
      "saving": "이 브라우저에 초안을 보관하는 중…",
      "saved": "이 브라우저에 초안을 보관했습니다. 메모에 반영하려면 작업을 확정하세요. 로그아웃하면 초안이 삭제됩니다.",
      "unsaved": "이 브라우저에 초안을 보관하지 못했습니다. 페이지를 열어 두거나 이동 전에 사본을 다운로드하세요.",
      "cleanupFailed": "편집은 끝났지만 보관된 로컬 초안을 지우지 못했습니다. 이전 초안이 다시 표시될 수 있습니다.",
      "retryStorage": "초안 보관 재시도",
      "download": "초안 다운로드",
      "deleteWarning": "메모 내용과 연결된 언급 알림을 삭제합니다. 되돌릴 수 없습니다.",
      "loadLatest": "최근 메모 불러오기",
      "latest": "최근 저장된 메모",
      "unresolved": "미해결",
      "keepMine": "내 내용 유지",
      "useLatest": "최근 내용 사용",
      "reviewLatest": "이 버전 확인",
      "retryOperation": "메모 작업 재시도",
      "updated": "{{date}} 변경됨",
      "errors": {
        "conflict": "작업하는 동안 메모가 변경되었습니다. 최근 버전을 비교한 뒤 작업을 확정하세요. 작성한 내용은 유지됩니다.",
        "conflictUnavailable": "메모가 변경되었지만 최근 버전을 불러오지 못했습니다. 작성한 내용은 유지됩니다. 최근 메모를 불러온 뒤 다시 시도하세요.",
        "unconfirmed": "결과를 확인하지 못했습니다. 같은 작업을 재시도해 저장 결과를 확인하세요.",
        "deleted": "이 메모를 더 이상 사용할 수 없습니다. 내용을 복사하거나 다운로드할 수 있도록 유지했습니다.",
        "forbidden": "이 작업을 수행할 권한이 없습니다. 내용을 복사하거나 다운로드할 수 있도록 유지했습니다.",
        "invalid": "메모 내용을 확인한 뒤 다시 시도하세요. 내용은 1~10,000자여야 합니다.",
        "requestConflict": "이 요청을 확인할 수 없습니다. 초안을 다운로드하고 현재 메모를 확인한 뒤 새 작업을 시작하세요.",
        "historyUnavailable": "선택한 과거 본문이 만료되었거나 지워졌습니다. 복원을 취소하고 현재 이력을 다시 확인해 주세요."
      }
    },
    "resolved": "해결됨",
    "loadFailed": "내부 메모를 불러오지 못했습니다. 재시도해 최신 메모를 확인하세요.",
    "internalNotes": "내부 메모",
    "onlyVisibleToTeam": "팀원에게만 표시",
    "noInternalNotes": "내부 메모 없음",
    "addNote": "메모 추가",
    "addNotePlaceholder": "내부 메모 추가...",
    "history": {
      "open": "메모 변경 이력",
      "title": "내부 메모 변경 이력",
      "close": "이력 닫기",
      "refresh": "메모 이력 새로고침",
      "loading": "메모 이력을 불러오는 중…",
      "retention": "새 변경 이력은 90일 보관합니다. 메모를 삭제하면 보관된 본문도 즉시 지웁니다. 현재 메모의 보관 기간은 유지합니다.",
      "unavailable": "이력을 불러오지 못했습니다. 새로고침해 현재 기록을 확인해 주세요.",
      "empty": "이 상담에 보관 중인 변경 기록이 없습니다. 과거의 변경을 재구성한 것은 아닙니다.",
      "version": "버전 {{n}}",
      "unknownActor": "이전 수정자 미확인",
      "formerActor": "탈퇴 또는 현재 조회할 수 없는 구성원",
      "legacy": "이후 변경 시점에 보관한 이전 상태입니다. 그 전의 수정자와 변경 시각은 확인할 수 없습니다.",
      "system": "자동 생성 메모",
      "resolved": "이 버전에서 해결됨",
      "unresolved": "이 버전에서 미해결",
      "erased": "삭제된 메모입니다. 보관된 본문도 지웠습니다.",
      "noContent": "이 기록에 보관된 본문이 없습니다.",
      "restoredSource": "보관된 과거 버전에서 본문 복원",
      "reviewRestore": "이 본문의 복원 검토",
      "restoreHelp": "선택한 과거 본문을 새 버전으로 저장합니다. 첨부·언급·해결 상태는 현재 값을 유지합니다. 내용을 검토한 뒤 저장해 주세요.",
      "sourceUnavailable": "현재 메모나 본인의 작성자 권한을 확인하지 못했습니다. 새로고침 후 다시 확인해 주세요.",
      "more": "변경 이력 더 보기",
      "loaded": "전체 {{total}}개 중 {{count}}개 메모 조회",
      "pageError": "다음 메모를 불러오지 못했습니다. 다시 시도하거나 목록을 새로고침해 주세요.",
      "moreNotes": "내부 메모 더 보기",
      "operations": {
        "create": "작성",
        "legacy": "이전 상태 보관",
        "update": "수정",
        "resolve": "해결 처리",
        "restore": "본문 복원",
        "delete": "삭제"
      }
    },
    "mentions": {
      "label": "언급한 동료",
      "open": "동료 언급",
      "hide": "동료 검색 닫기",
      "count": "동료 {{n}}명 선택 / 최대 50명",
      "unavailable": "확인할 수 없는 동료 {{n}}",
      "unavailableShort": "확인할 수 없는 동료",
      "remove": "{{name}} 언급 해제",
      "removeShort": "해제",
      "search": "이름으로 동료 검색",
      "help": "팀에 배치되지 않은 동료를 포함한 현재 조직의 활성 구성원입니다. 새로 추가한 대상에게만 새 언급 알림을 보냅니다.",
      "refresh": "동료 목록 새로고침",
      "loading": "동료를 불러오는 중…",
      "error": "동료를 불러오지 못했습니다. 새로고침 후 대상을 선택해 주세요.",
      "lookupError": "선택한 동료를 확인하지 못했습니다. 선택은 유지됩니다. 새로고침하여 이름을 확인해 주세요.",
      "empty": "검색에 맞는 활성 동료가 없습니다.",
      "add": "{{name}} 언급",
      "more": "동료 더 보기",
      "loadCurrent": "언급을 편집하기 전에 현재 목록 불러오기",
      "keepChanges": "내 변경 유지",
      "changed": "언급 대상 변경",
      "pending": "메모 요청의 결과가 미확인 상태입니다. 본문과 언급 대상을 고정했습니다. 저장 결과를 조회하거나 같은 요청을 재시도하고, 편집하려면 취소를 확정해 주세요.",
      "checkRequest": "저장 결과 확인",
      "cancelRequest": "미확인 메모 취소",
      "results": {
        "saved": "원래 메모의 저장을 확인하여 초안을 비웠습니다.",
        "cancelled": "취소를 확인했습니다. 본문과 언급 대상을 유지하여 편집할 수 있습니다.",
        "deleted": "원래 메모는 삭제되었습니다. 개인 초안의 본문은 유지됩니다.",
        "missing": "저장된 요청을 찾지 못했습니다. 같은 메모를 재시도하거나 취소를 확정해 주세요.",
        "unavailable": "결과를 확인하지 못했습니다. 원래 요청은 계속 고정됩니다."
      },
      "checkingRecipient": "동료 {{n}} 확인 중…"
    }
  },
  "workspaces": {
    "title": "워크스페이스",
    "workspaces": "워크스페이스",
    "subtitle": "워크스페이스와 제품을 만들고 관리하세요",
    "activeWorkspace": "활성 워크스페이스",
    "createWorkspace": "워크스페이스 만들기",
    "editWorkspace": "워크스페이스 수정",
    "deleteWorkspace": "워크스페이스 삭제",
    "noWorkspaces": "아직 만든 워크스페이스가 없습니다",
    "nameRequired": "워크스페이스 이름을 입력해 주세요",
    "namePlaceholder": "예: Acme Corp",
    "plan": "플랜",
    "products": "제품",
    "addProduct": "제품 추가",
    "noProducts": "아직 등록된 제품이 없습니다. 회사가 제공하는 서비스나 제품을 추가해 주세요",
    "allProducts": "전체 제품",
    "productNamePlaceholder": "제품/서비스 이름",
    "productDescPlaceholder": "설명 (선택)",
    "deleteConfirmation": "\"{{name}}\"을(를) 삭제하시겠습니까? 이 작업은 되돌릴 수 없습니다",
    "created": "워크스페이스를 만들었습니다",
    "updated": "워크스페이스를 수정했습니다",
    "deleted": "워크스페이스를 삭제했습니다",
    "deletePending": "워크스페이스 삭제가 접수됐지만 데이터 정리가 아직 끝나지 않았습니다. 작업 ID {{id}}의 운영 상태를 확인하세요.",
    "deleteFilesShared": "첨부 파일 {{count}}개는 다른 기록도 참조해 보존했습니다",
    "deleteFilesDeferred": "첨부 파일 {{count}}개는 삭제 대기 중이며 자동으로 재시도합니다",
    "deleteFilesFailed": "첨부 파일 {{count}}개를 삭제하지 못했습니다. 감사 기록을 확인해 주세요",
    "fetchError": "워크스페이스를 불러오지 못했습니다. 잠시 후 다시 시도해 주세요",
    "saveError": "저장하지 못했습니다. 잠시 후 다시 시도해 주세요",
    "deleteError": "삭제하지 못했습니다. 잠시 후 다시 시도해 주세요",
    "deleteWillErase": "이 워크스페이스가 보관 중인 {{count}}건이 함께 영구 삭제됩니다.",
    "deleteNothingStored": "저장된 데이터가 없습니다",
    "deleteRetained": "결제·사용량 기록은 법령상 보관 의무에 따라 보존됩니다.",
    "deleteIrreversible": "되돌릴 수 없습니다",
    "deleteFiles": "첨부 파일 {{count}}건을 확인합니다. 다른 기록의 참조나 진행 중인 저장이 없으면 삭제합니다.",
    "exportFirst": "먼저 내보내기",
    "exportDone": "내보냈습니다. 첨부 파일은 번들 안의 주소에서 따로 받아 주세요.",
    "exportAdminOnly": "관리자만 내보낼 수 있습니다",
    "deletePreviewFailed": "삭제될 데이터를 불러오지 못했습니다. 무엇이 지워지는지 확인한 뒤 진행하세요.",
    "editAdminOnly": "워크스페이스 정보는 관리자만 수정할 수 있습니다",
    "exportData": "워크스페이스 데이터 내보내기",
    "exportDataDesc": "대화·고객·문서 등 이 워크스페이스가 보관 중인 기록을 JSON 한 파일로 내려받습니다. 첨부 파일은 번들 안의 주소에서 따로 받습니다."
  },
  "billing": {
    "intervalLabel": "결제 주기",
    "intervalMonth": "월간 결제",
    "intervalYear": "연간 결제 · 플랜 요금 20% 할인",
    "intervalYearPlain": "연간 결제",
    "applyCurrentOffer": "새 요금으로 변경",
    "currentInterval": "현재 구독: {{interval}}",
    "annualSeatsTotal": "{{included}}석 포함 + 추가 {{extra}}석 · 연 {{total}} 청구 (월 환산 {{monthly}})",
    "title": "결제 및 구독",
    "subtitle": "플랜과 시트를 관리하고 결제 정보를 확인하세요",
    "memberSubtitle": "현재 플랜과 사용량을 확인하세요",
    "currentPlan": "현재 플랜",
    "current": "현재 플랜",
    "seats": "시트",
    "seatCount": "시트 수",
    "pendingSeatReservations": "대기 중인 초대 {{count}}건이 좌석을 예약 중입니다.",
    "seatMinimum": "활성 구성원 {{used}}명과 대기 중인 초대 {{pending}}건 때문에 최소 {{minimum}}석이 필요합니다.",
    "seatOvercommitted": "현재 계약은 {{total}}석인데 활성 구성원 {{used}}명과 대기 중인 초대 {{pending}}건이 있습니다. 일부 초대 수락이 거절될 수 있습니다. 좌석을 늘리거나 대기 중인 초대를 취소하세요.",
    "changePending": "{{plan}} 플랜 {{seats}}석으로 변경한 결과를 결제사에서 확인 중입니다. 확인이 끝나면 새로고침하세요. 확인 중에는 다른 구독 변경을 할 수 없습니다. 10분 넘게 계속되면 고객지원에 문의해 주세요.",
    "unlimited": "무제한",
    "renewsOn": "다음 결제일",
    "cancelsOn": "해지 예정일",
    "subscribe": "구독하기",
    "switchTo": "{{plan}}(으)로 변경",
    "updateSeats": "시트 수 변경",
    "managePayment": "결제수단 관리",
    "cancelPlan": "해지",
    "adminOnly": "결제 변경은 관리자만 가능합니다",
    "priceUnconfigured": "현재 이 플랜을 신청할 수 없습니다",
    "notConfigured": "지금 결제를 시작할 수 없습니다. 잠시 후 다시 시도하거나 지원팀에 문의해 주세요.",
    "notConfiguredNotice": "온라인 결제는 준비 중이라 지금은 새 구독을 시작할 수 없습니다. 유료 플랜이 필요하면 도입 상담 후 별도 청구서로 이용할 수 있습니다.",
    "checkoutSuccess": "결제가 완료되었습니다. 구독 정보를 동기화하는 중입니다...",
    "checkoutError": "결제를 시작하지 못했습니다",
    "planChanged": "구독이 변경되었습니다",
    "changeError": "구독 변경에 실패했습니다",
    "portalError": "관리 페이지를 열 수 없습니다",
    "canceled": "구독이 다음 결제일에 해지되도록 예약되었습니다",
    "cancelError": "해지에 실패했습니다",
    "overageHistory": "초과 사용 청구 내역",
    "nonBillableMau": "무료 플랜 초과 {{count}}명 · 청구 제외",
    "overageReason": {
      "freePlan": "무료 플랜이라 청구되지 않았습니다",
      "nothingToCharge": "청구할 항목이 없어 건너뛰었습니다",
      "mauPending": "사용량 집계가 끝나면 금액을 확정합니다",
      "aiPending": "진행 중인 AI 답변이 끝나면 금액을 확정합니다",
      "aiUsageChanged": "AI 사용량을 다시 확인한 뒤 금액을 확정합니다",
      "periodSettling": "월말 사용량 안정화 후 금액을 확정합니다",
      "noSubscription": "청구할 구독을 확인 중입니다",
      "subscriptionInactive": "구독 상태를 확인 중입니다",
      "subscriptionCancelPending": "구독 해지 예정으로 요금 적용 여부를 확인 중입니다",
      "settlementReview": "예정된 초과 요금의 결제 상태를 확인 중입니다",
      "subscriptionChanged": "변경된 구독을 확인 중입니다",
      "workspaceMissing": "워크스페이스 기록을 확인 중입니다",
      "lateMauActivity": "마감 후 활동이 반영되어 이 기간의 요금을 확인 중입니다",
      "mauDifferenceWaived": "마감 후 확인된 추가 요금은 면제되었습니다",
      "mauExternalAdjustment": "마감 후 사용량 차이는 별도로 조정되었습니다",
      "mauReview": "과거 사용량의 요금 적용 여부를 확인 중입니다",
      "mauOrderReview": "같은 시각의 활동 순서를 확인 중입니다",
      "priceReview": "청구 항목의 가격 설정을 확인 중입니다",
      "unconfirmed": "청구 요청 결과를 확인 중입니다",
      "failed": "결제에 실패했습니다. 결제 수단을 확인해 주세요"
    },
    "overageStatus": {
      "charged": "청구됨",
      "providerForgiven": "면제됨",
      "settledExternally": "별도 조정 완료",
      "scheduled": "다음 결제일 청구 예정",
      "draft": "청구 예정",
      "deferred": "집계 대기",
      "review": "요금 검토 필요",
      "charging": "처리 중",
      "unconfirmed": "결과 확인 필요",
      "failed": "실패",
      "skipped": "해당 없음",
      "awaiting_payment": "결제 대기"
    },
    "seatsGrandfathered": "기존 인원은 그대로 유지됩니다. 좌석을 더 늘리려면 업그레이드가 필요합니다.",
    "overageAmountPending": "금액 집계 중",
    "aiReplies": "AI 자동응답",
    "auxiliaryAiBudget": "AI 보조 작업 예산",
    "auxiliaryBudgetReached": "이번 달 한도 도달",
    "auxiliaryAiBudgetNote": "분류·요약·품질 평가 등의 제공자 비용입니다. 진행 중인 예약액을 포함하며 별도로 청구되지 않습니다.",
    "blockedCount": "한도 초과로 {{count}}건 사람 연결",
    "mau": "월간 활성 사용자",
    "mauFreeNote": "무료 플랜은 초과분을 청구하지 않습니다",
    "mauOverageCount": "초과 {{count}}명",
    "mauOverageNote": "초과분은 1명당 ₩{{rate}} 청구됩니다",
    "mauBillableOverageNote": "청구 대상 {{count}}명 · 1명당 ₩{{rate}}",
    "mauNoBillableOverage": "무료 플랜 시기 초과분은 청구되지 않습니다",
    "mauReviewNote": "과거 초과분의 청구 가능 여부를 확인 중입니다",
    "mauProvisionalNote": "현재 수량은 잠정치이며 월말에 첫 활동 순서로 확정합니다",
    "overageCount": "초과 {{count}}건",
    "overageNote": "초과분은 답변당 ₩{{rate}} 청구됩니다",
    "aiQuotaExhausted": "AI 자동응답 한도({{allowance}}건)를 모두 사용했습니다. 지금부터 모든 문의가 상담원에게 연결됩니다.",
    "aiQuotaShrank": "플랜이 바뀌어 AI 자동응답 한도가 {{allowance}}건으로 줄었고, 이번 달 사용량 {{used}}건이 이미 이를 넘었습니다. 지금부터 모든 문의가 상담원에게 연결됩니다",
    "aiQuotaNearLimit": "AI 자동응답을 {{used}}/{{allowance}}건 사용했습니다. 한도를 넘으면 모든 문의가 상담원에게 연결됩니다.",
    "viewPlans": "요금제 보기",
    "feature": {
      "omnichannelInbox": "옴니채널 통합 인박스",
      "kbGroundedAi": "지식베이스 기반 AI 답변",
      "allOfStarter": "Starter의 모든 기능",
      "crmCampaignSegment": "CRM·캠페인·세그먼트",
      "analyticsDashboard": "분석 대시보드",
      "slaManagement": "SLA 관리",
      "allOfGrowth": "Growth의 모든 기능",
      "workflowAutomation": "워크플로우 자동화",
      "aiQuality": "AI 품질 모니터링",
      "prioritySupport": "우선 지원",
      "seatsIncluded": "상담원 시트 {{count}}석 포함",
      "mauIncluded": "월 활성 고객(MAU) {{count}}명",
      "aiIncluded": "AI 자동응답 월 {{count}}건 포함",
      "overage": "초과 시 AI 답변당 ₩{{ai}} · 추가 시트 ₩{{seat}}"
    },
    "pastDueBanner": "결제가 처리되지 않았습니다. 카드 정보를 확인해 주세요 — 해결되지 않으면 구독이 해지되고 무료 플랜으로 전환됩니다",
    "pausedBanner": "구독이 일시 중지되었습니다. 유료 기능은 재개할 때까지 사용할 수 없습니다",
    "seatsIncludedOnly": "{{n}}석 포함 · 월 {{price}}",
    "seatsWithExtra": "{{n}}석 포함 + 추가 {{extra}}석 · 월 {{price}} + {{extraPrice}} = {{total}}",
    "canceledBanner": "구독이 해지되어 무료 플랜으로 전환되었습니다. AI 자동응답 한도와 좌석 수가 줄었고, 한도를 넘은 문의는 상담원에게 연결됩니다",
    "fixPayment": "결제 수단 확인",
    "statusActive": "이용 중",
    "statusTrialing": "체험 중",
    "statusPastDue": "결제 실패",
    "statusPaused": "일시중지",
    "statusCanceled": "해지됨",
    "statusFree": "무료",
    "invoicePaid": "결제 완료",
    "invoiceOpen": "미결제",
    "invoiceVoid": "무효",
    "invoiceUncollectible": "회수 불가",
    "invoiceRefunded": "환불됨",
    "aiRepliesInProgress": "처리 중 {{count}}건이 포함되어 있습니다. 답변을 생성하지 못한 요청은 정산 후 돌려드립니다.",
    "payOverage": "초과 사용료 결제",
    "planChangeSupport": "플랜·좌석 변경은 지원팀에 문의해 주세요.",
    "xsollaConfirming": "Xsolla 처리 결과와 구독 반영을 확인하고 있습니다.",
    "xsollaChangeNotice": "표시 금액은 변경 후 정기 요금입니다. 미사용 기간 정산, 잔액, 추가 결제액과 적용 시점은 Xsolla 결제창에서 확인한 뒤 확정해 주세요."
  },
  "knowledgeBase": {
    "title": "지식베이스",
    "subtitle": "AI 에이전트가 사용할 지식을 관리하세요",
    "create": "지식베이스 생성",
    "createNew": "새 지식베이스",
    "items": "항목",
    "itemCount": "{{count}}개 항목",
    "addItem": "항목 추가",
    "editItem": "항목 수정",
    "deleteItem": "항목 삭제",
    "searchItems": "항목 검색...",
    "noItems": "아직 등록된 항목이 없습니다",
    "noKnowledgeBases": "아직 만든 지식베이스가 없습니다",
    "createFirst": "첫 지식베이스를 만들어 보세요",
    "itemTitle": "항목 제목",
    "itemContent": "항목 내용",
    "itemTags": "태그",
    "published": "발행됨",
    "draft": "초안",
    "types": {
      "articles": "아티클",
      "faqs": "FAQ",
      "custom": "커스텀",
      "website": "웹사이트"
    },
    "addItemDescription": "새 지식베이스 항목 추가",
    "content": "내용",
    "contentPlaceholder": "항목 내용을 입력하세요",
    "itemTitlePlaceholder": "항목 제목을 입력하세요",
    "namePlaceholder": "지식베이스 이름을 입력하세요",
    "selectKB": "지식베이스 선택",
    "selectKBDescription": "항목을 추가할 지식베이스를 선택하세요",
    "tagsPlaceholder": "태그를 쉼표로 구분하여 입력하세요",
    "fetchError": "지식베이스를 불러오지 못했습니다. 잠시 후 다시 시도해 주세요",
    "saveError": "지식베이스를 저장하지 못했습니다. 잠시 후 다시 시도해 주세요",
    "createSuccess": "지식베이스를 만들었습니다",
    "updateSuccess": "지식베이스를 수정했습니다",
    "deleteSuccess": "지식베이스를 삭제했습니다",
    "deleteError": "지식베이스를 삭제하지 못했습니다. 잠시 후 다시 시도해 주세요",
    "deleteKB": "지식베이스 삭제",
    "deleteConfirmation": "'{{name}}'을(를) 삭제하시겠습니까? 이 작업은 되돌릴 수 없습니다",
    "itemSaveError": "항목을 저장하지 못했습니다. 잠시 후 다시 시도해 주세요",
    "itemCreateSuccess": "항목을 추가했습니다",
    "itemUpdateSuccess": "항목을 수정했습니다",
    "itemDeleteSuccess": "항목을 삭제했습니다",
    "itemDeleteError": "항목을 삭제하지 못했습니다. 잠시 후 다시 시도해 주세요",
    "deleteItemConfirmation": "'{{title}}'을(를) 삭제하시겠습니까? 이 작업은 되돌릴 수 없습니다",
    "search": "검색",
    "searchPlaceholder": "지식베이스 검색...",
    "searchResults": "검색 결과",
    "searchError": "검색하지 못했습니다. 잠시 후 다시 시도해 주세요",
    "noResults": "검색 결과가 없습니다",
    "regenerateEmbeddings": "임베딩 재생성",
    "regenerateSuccess": "임베딩을 재생성했습니다",
    "regenerateError": "임베딩을 재생성하지 못했습니다. 잠시 후 다시 시도해 주세요",
    "regenerating": "재생성 중...",
    "category": "카테고리",
    "categoryPlaceholder": "카테고리를 입력하세요",
    "totalItems": "총 항목 수",
    "lastUpdated": "마지막 업데이트",
    "tags": "태그",
    "targetProduct": "대상 제품",
    "allProductsScope": "전체 제품 공통",
    "productHelp": "이 지식베이스가 어떤 제품 문의에 사용될지 지정합니다.",
    "bulkImport": "대량 가져오기",
    "bulkHelp": "FAQ 텍스트를 붙여넣거나 파일(.txt/.md/.csv)을 업로드하세요. Q:/A: 형식, 마크다운 제목(#), 또는 빈 줄로 구분된 블록을 자동 인식합니다.",
    "bulkFormat": "형식",
    "bulkText": "내용",
    "formatAuto": "자동 감지",
    "formatHeadings": "마크다운 제목 (#)",
    "formatBlocks": "빈 줄 구분 블록",
    "uploadFile": "파일 선택",
    "importItems": "가져오기",
    "detectedItems": "{{count}}개 항목 감지됨",
    "bulkSuccess": "{{count}}개 항목을 가져왔습니다",
    "bulkError": "대량 가져오기를 처리하지 못했습니다. 잠시 후 다시 시도해 주세요",
    "fileReadError": "파일을 읽지 못했습니다. 다른 파일로 다시 시도해 주세요",
    "gapsTitle": "AI가 답하지 못한 질문",
    "gapsHint": "문서를 추가하면 다음부터 자동으로 답합니다",
    "gapOpenChat": "대화 보기",
    "gapWrite": "문서 쓰기",
    "gapPickKb": "먼저 지식베이스를 선택해 주세요",
    "editConflict": "다른 담당자가 이 문서를 변경했거나 삭제했습니다. 작성 내용은 유지했습니다. 작성한 내용을 복사한 뒤 창을 닫고 최신 문서를 다시 열어 병합해 주세요."
  },
  "helpCenter": {
    "title": "도움말 센터",
    "subtitle": "고객을 위한 도움말 문서를 관리하세요",
    "articles": "문서",
    "categories": "카테고리",
    "createArticle": "문서 작성",
    "createCategory": "카테고리 생성",
    "editArticle": "문서 수정",
    "deleteArticle": "문서 삭제",
    "articleTitle": "문서 제목",
    "articleContent": "문서 내용",
    "articleExcerpt": "요약",
    "selectCategory": "카테고리 선택",
    "noArticles": "아직 작성한 문서가 없습니다",
    "noCategories": "아직 만든 카테고리가 없습니다",
    "createFirstArticle": "첫 문서를 작성해 보세요",
    "searchArticles": "문서 검색...",
    "views": "조회수",
    "helpful": "도움됨",
    "notHelpful": "도움 안됨",
    "visibility": {
      "public": "공개",
      "internal": "내부용"
    },
    "status": {
      "draft": "초안",
      "published": "발행됨",
      "archived": "보관됨"
    },
    "addCategory": "카테고리 추가",
    "categoryNamePlaceholder": "카테고리 이름을 입력하세요",
    "content": "내용",
    "contentPlaceholder": "문서 내용을 입력하세요",
    "excerpt": "요약",
    "excerptPlaceholder": "문서 요약을 입력하세요",
    "publish": "발행",
    "tagsPlaceholder": "태그를 쉼표로 구분하여 입력하세요",
    "titlePlaceholder": "문서 제목을 입력하세요",
    "search": "검색",
    "searchResults": "검색 결과",
    "noSearchResults": "검색 결과가 없습니다",
    "searchError": "검색에 실패했습니다",
    "clearSearch": "초기화",
    "feedbackSuccess": "소중한 의견 감사합니다",
    "feedbackError": "의견을 제출하지 못했습니다. 잠시 후 다시 시도해 주세요",
    "categoryDeleteSuccess": "카테고리를 삭제했습니다",
    "categoryDeleteError": "카테고리를 삭제하지 못했습니다. 잠시 후 다시 시도해 주세요",
    "categoryHasArticles": "문서가 있는 카테고리는 삭제할 수 없습니다. 먼저 문서를 옮기거나 삭제해 주세요",
    "deleteCategory": "카테고리 삭제",
    "deleteCategoryConfirmation": "\"{{name}}\" 카테고리를 삭제하시겠습니까?",
    "visibilityLabel": "공개 설정",
    "articleCreated": "문서를 작성했습니다",
    "articleUpdated": "문서를 수정했습니다",
    "articleDeleted": "문서를 삭제했습니다",
    "fetchError": "문서를 불러오지 못했습니다. 잠시 후 다시 시도해 주세요",
    "saveError": "문서를 저장하지 못했습니다. 잠시 후 다시 시도해 주세요",
    "deleteError": "문서를 삭제하지 못했습니다. 잠시 후 다시 시도해 주세요",
    "totalArticles": "총 문서 수",
    "categoryCreated": "카테고리를 만들었습니다",
    "categoriesError": "카테고리를 불러오지 못했습니다. 잠시 후 다시 시도해 주세요",
    "categoryCreateSuccess": "카테고리를 만들었습니다",
    "categorySaveError": "카테고리를 저장하지 못했습니다. 잠시 후 다시 시도해 주세요",
    "categoryUpdateSuccess": "카테고리를 수정했습니다",
    "createSuccess": "문서를 작성했습니다",
    "deleteConfirmation": "이 문서를 삭제하시겠습니까?",
    "deleteSuccess": "문서를 삭제했습니다",
    "feedback": "피드백",
    "publishError": "발행 상태를 변경하지 못했습니다. 잠시 후 다시 시도해 주세요",
    "publishSuccess": "발행 상태를 변경했습니다",
    "updateSuccess": "문서를 수정했습니다",
    "editConflict": "다른 사람이 먼저 이 문서를 저장했습니다. 내용을 잃지 않도록 작성한 글을 복사해 두고 새로고침해 주세요",
    "discardTitle": "작성 중인 문서가 있습니다",
    "discardMessage": "지금 닫으면 입력한 내용이 사라집니다. 계속할까요?",
    "discardConfirm": "닫고 버리기",
    "draftRestored": "저장하지 않고 작성 중이던 내용을 복원했습니다"
  },
  "workflows": {
    "autoDisabledReason": "반복 실패로 자동 중단됨: {{reason}}",
    "title": "워크플로우",
    "subtitle": "작업 자동화 규칙을 설정하세요",
    "create": "워크플로우 생성",
    "editWorkflow": "워크플로우 수정",
    "deleteWorkflow": "워크플로우 삭제",
    "noWorkflows": "아직 만든 워크플로우가 없습니다",
    "createFirst": "첫 워크플로우를 만들어 보세요",
    "workflowName": "워크플로우 이름",
    "scheduleState": {
      "pending": "대기",
      "claimed": "접수",
      "running": "실행 중",
      "done": "완료",
      "failed": "실패",
      "uncertain": "결과 미확인",
      "cancelled": "취소"
    },
    "scheduleSettings": "실행 일정",
    "scheduleEnabled": "일정 상태",
    "scheduleOn": "사용",
    "scheduleOff": "일정 중지",
    "scheduleFrequency": "반복",
    "scheduleOnce": "한 번",
    "scheduleHourly": "매시간",
    "scheduleDaily": "매일",
    "scheduleWeekly": "매주",
    "scheduleMonthly": "매월",
    "scheduleNextRun": "다음 실행 시각",
    "scheduleLastAccepted": "마지막 접수",
    "scheduleHint": "선택한 시간대의 현지 시각으로 반복합니다. 존재하지 않는 시각은 거절하고 중복 시각은 첫 번째 시각을 선택합니다.",
    "scheduleTimezone": "시간대",
    "scheduleInvalidLocalTime": "이 시간대에 존재하지 않는 시각입니다. 다른 시각을 선택해 주세요.",
    "scheduleInvalidTimezone": "올바른 IANA 시간대를 입력해 주세요.",
    "scheduleEmailTo": "받는 사람 이메일",
    "scheduleUncertain": "실행 결과가 확인되지 않았습니다. 이메일·웹훅 수신 기록을 확인한 뒤 재실행을 결정하세요.",
    "manualRun": "수동 실행",
    "manualRequestId": "요청 ID",
    "manualUncertain": "실행 결과가 확인되지 않았습니다. 발송·변경 내역을 확인한 뒤 새 요청으로 재실행하세요.",
    "manualPartial": "일부 액션이 이미 실행됐습니다. 실행 내역을 확인한 뒤 새 요청으로 재실행하세요.",
    "reviewConfirmCompleted": "완료 확인",
    "reviewCloseUnresolved": "재실행 없이 종결",
    "reviewRetryOccurrence": "예약 발생 건 재시도",
    "reviewDecision": {
      "confirm_completed": "필요한 모든 액션의 완료 확인",
      "close_unresolved": "재실행하지 않고 이 실행 종결",
      "retry": "이 예약 발생 건을 처음부터 재시도"
    },
    "reviewReason": {
      "operator_confirm_completed": "관리자가 완료를 확인함",
      "operator_close_unresolved": "관리자가 재실행 없이 종결함"
    },
    "reviewRetryWarning": "이전 발송 결과를 확인했으며 완료된 액션이 중복될 수 있음을 수락합니다.",
    "reviewEvidence": "확인 근거",
    "reviewEvidenceHint": "요청 ID·확인 결과·시각을 개인정보 없이 10자 이상 기록하세요.",
    "reviewFailed": "결정을 기록하지 못했습니다. 실행 기록을 새로 확인한 뒤 다시 시도하세요.",
    "lastReview": "최근 확인: {{actor}} · {{date}}",
    "stepState": {
      "started": "실행 중",
      "done": "완료",
      "failed": "실패",
      "skipped": "건너뜀",
      "uncertain": "결과 미확인",
      "confirmed": "완료 확인됨"
    },
    "providerMessageId": "제공자 메시지 ID",
    "messageId": "대화 메시지 ID",
    "sesOutcome": "SES 결과",
    "emailAttention": "최근 이메일 전달 문제",
    "emailAttentionError": "이메일 전달 결과를 불러오지 못했습니다.",
    "openCampaign": "캠페인 보기",
    "sesStates": {
      "sent": "SES 접수",
      "delayed": "전달 지연",
      "delivered": "수신 서버 전달",
      "bounced": "반송",
      "complained": "스팸 신고",
      "rejected": "SES 거부"
    },
    "trigger": "트리거",
    "conditions": "조건",
    "actions": "액션",
    "addCondition": "조건 추가",
    "addAction": "작업 추가",
    "triggeredCount": "실행 횟수",
    "lastTriggered": "마지막 실행",
    "types": {
      "routing": "라우팅",
      "assignment": "배정",
      "followup": "후속 조치",
      "sla": "SLA",
      "notification": "알림"
    },
    "triggerEvents": {
      "message_received": "메시지 수신",
      "chat_created": "채팅 생성",
      "chat_updated": "채팅 업데이트",
      "time_based": "시간 기반"
    },
    "actionTypes": {
      "assign_agent": "상담원 배정",
      "assign_team": "팀 배정",
      "send_message": "메시지 전송",
      "add_tag": "태그 추가",
      "set_priority": "우선순위 설정",
      "trigger_ai": "AI 실행",
      "escalate": "에스컬레이션",
      "notify": "알림 전송"
    },
    "operators": {
      "equals": "같음",
      "not_equals": "같지 않음",
      "contains": "포함",
      "not_contains": "포함하지 않음",
      "greater_than": "보다 큼",
      "less_than": "보다 작음",
      "exists": "존재함",
      "not_exists": "존재하지 않음"
    },
    "field": "필드",
    "messagePlaceholder": "메시지를 입력하세요",
    "namePlaceholder": "워크플로우 이름을 입력하세요",
    "success": "성공",
    "triggerType": "트리거 유형",
    "triggered": "실행됨",
    "updateSuccess": "워크플로우를 수정했습니다",
    "createSuccess": "워크플로우를 만들었습니다",
    "saveError": "워크플로우를 저장하지 못했습니다. 잠시 후 다시 시도해 주세요",
    "toggleSuccess": "워크플로우 상태를 변경했습니다",
    "toggleError": "워크플로우 상태를 변경하지 못했습니다. 잠시 후 다시 시도해 주세요",
    "deleteSuccess": "워크플로우를 삭제했습니다",
    "deleteError": "워크플로우를 삭제하지 못했습니다. 잠시 후 다시 시도해 주세요",
    "deleteConfirmation": "\"{{name}}\"을(를) 삭제하시겠습니까?",
    "fetchError": "워크플로우를 불러오지 못했습니다. 잠시 후 다시 시도해 주세요",
    "optionsError": "옵션을 불러오지 못했습니다. 잠시 후 다시 시도해 주세요",
    "testWorkflow": "워크플로우 테스트",
    "testResult": "테스트 결과",
    "wouldTrigger": "트리거 여부",
    "actionsToExecute": "실행될 작업",
    "testError": "테스트를 실행하지 못했습니다. 잠시 후 다시 시도해 주세요",
    "executeSuccess": "워크플로우를 실행했습니다",
    "executeError": "워크플로우를 실행하지 못했습니다. 잠시 후 다시 시도해 주세요",
    "viewLogs": "로그 보기",
    "executionLogs": "실행 로그",
    "logsError": "로그를 불러오지 못했습니다. 잠시 후 다시 시도해 주세요",
    "noLogs": "아직 실행 로그가 없습니다",
    "actionsExecuted": "실행된 작업",
    "logicalOperator": "논리 연산자",
    "agentIdPlaceholder": "상담원 ID를 입력하세요",
    "teamIdPlaceholder": "팀 ID를 입력하세요",
    "tagPlaceholder": "태그명을 입력하세요",
    "webhookUrlPlaceholder": "웹훅 URL을 입력하세요",
    "webhookMethod": "HTTP 메서드",
    "fieldNamePlaceholder": "필드명",
    "fieldValuePlaceholder": "필드 값",
    "notifyMessagePlaceholder": "알림 메시지",
    "notifyTarget": "알림 대상",
    "priority": {
      "low": "낮음",
      "normal": "보통",
      "high": "높음",
      "urgent": "긴급"
    },
    "status": {
      "open": "열림",
      "pending": "대기 중",
      "resolved": "해결됨",
      "closed": "종료됨"
    },
    "targetAssignedAgent": "담당 상담원",
    "targetTeam": "담당 팀",
    "targetAllAgents": "전체 상담원",
    "emailToCustomer": "고객에게",
    "emailToAgent": "담당 상담원에게",
    "emailSubjectPlaceholder": "제목",
    "emailBodyPlaceholder": "본문",
    "aiPromptPlaceholder": "비워두면 고객의 마지막 메시지에 답합니다",
    "escalateReasonPlaceholder": "에스컬레이션 사유 (관리자 알림에 표시됩니다)",
    "testedAgainst": "판정 기준",
    "testSampleChat": "최근 대화",
    "actualValue": "실제 값",
    "noValue": "없음",
    "executionControl": "실행 제어",
    "maxPerChat": "대화당 최대 실행",
    "cooldownMinutes": "재실행 대기(분)",
    "executionMode": "다른 규칙과의 관계",
    "modeAll": "다른 규칙도 계속 실행",
    "modeFirstMatch": "이 규칙이 실행되면 중단",
    "executionHint": "0 은 제한 없음입니다.",
    "openConversation": "대화 열기",
    "autoDisabled": "자동 중단됨",
    "failed": "실패",
    "pauseAll": "전체 일시중지",
    "resumeAll": "자동화 재개",
    "pausedNotice": "이 워크스페이스의 자동화가 일시중지되어 있습니다. 어떤 규칙도 실행되지 않습니다.",
    "pausedAll": "자동화를 일시중지했습니다",
    "resumedAll": "자동화를 재개했습니다",
    "pauseError": "자동화 상태를 바꾸지 못했습니다",
    "startFromTemplate": "예시로 시작하기",
    "useTemplate": "이걸로 시작",
    "customerFacing": "고객에게 나갑니다",
    "searchPlaceholder": "이름·트리거·액션으로 찾기",
    "outboundOnly": "고객에게 발송하는 것만",
    "filteredCount": "{{shown}} / {{total}}건",
    "failedAt": "{{n}}번째 액션에서 실패: {{type}}",
    "skippedAfter": "이후 {{count}}개 건너뜀",
    "deliveryUncertain": "수신측 처리 여부가 확인되지 않았습니다. 재실행 전 수신측 기록을 확인하세요.",
    "deliveryId": "요청 ID",
    "messageStepQueued": "메시지 단계 완료는 전송 대기열 접수입니다. 실제 채널 결과는 아래에서 확인하세요.",
    "messageOutcomesTitle": "외부 채널 메시지 결과",
    "messageOutcomesHint": "최근 발송부터 표시합니다. ‘채널 접수’는 채널 제공자가 요청을 받았다는 뜻이며 고객 열람 확인은 아닙니다.",
    "messageOutcomesEmpty": "이 규칙의 외부 채널 발송 기록이 없습니다.",
    "messageOutcomesError": "메시지 전달 상태를 불러오지 못했습니다.",
    "messageOutcomesMore": "이전 발송 더 보기",
    "messageOutcomeHandled": "후속 조치 기록됨",
    "messageOutcomeStates": {
      "pending": "전송 대기",
      "sending": "전송 중",
      "sent": "채널 접수",
      "failed": "전송 실패",
      "skipped": "미발송",
      "partial": "일부 전송",
      "uncertain": "결과 미확인",
      "retracted": "회수됨"
    },
    "messageOutcomeReasons": {
      "delivery_target_changed": "채널 연결 또는 수신 주소가 변경되어 추가 발송을 중단했습니다. 전송 결과를 확인해 주세요.",
      "provider_outcome_unknown": "제공자가 요청을 접수했는지 아직 확인되지 않았습니다.",
      "text_part_unconfirmed": "답변 일부가 접수됐으며 다른 조각도 접수됐을 수 있습니다.",
      "provider_request_failed": "채널에서 발송을 거절했습니다.",
      "message_too_long": "채널의 분할 전송 한도를 초과했습니다.",
      "integration_inactive": "채널 연동이 꺼져 있습니다.",
      "no_channel_id": "고객 채널 ID가 없습니다.",
      "unsupported_channel": "앱이 이 채널 발송을 지원하지 않습니다.",
      "empty": "발송할 내용이 없습니다.",
      "attachment_failed": "첨부 전송에 실패했습니다.",
      "text_part_failed": "답변의 일부만 채널에 접수됐습니다.",
      "no_public_url": "첨부 파일에 접근할 수 없습니다."
    },
    "variablesHint": "쓸 수 있는 변수"
  },
  "sla": {
    "title": "SLA 관리",
    "subtitle": "서비스 수준 협약 정책을 관리하세요",
    "policies": "SLA 정책",
    "create": "SLA 생성",
    "editPolicy": "정책 수정",
    "deletePolicy": "정책 삭제",
    "noPolicies": "아직 만든 SLA 정책이 없습니다",
    "createFirst": "첫 SLA 정책을 만들어 보세요",
    "policyName": "정책 이름",
    "priority": "우선순위",
    "conditions": "조건",
    "addCondition": "조건 추가",
    "conditionField": "필드",
    "conditionOperator": "연산자",
    "conditionValue": "값",
    "operators": {
      "equals": "같음",
      "not_equals": "같지 않음",
      "contains": "포함",
      "in": "포함됨",
      "not_in": "포함 안됨"
    },
    "targets": "목표",
    "firstResponseTime": "첫 응답 시간",
    "resolutionTime": "해결 시간",
    "nextResponseTime": "다음 응답 시간",
    "minutes": "분",
    "hours": "시간",
    "businessHours": "업무 시간",
    "enableBusinessHours": "업무 시간 적용",
    "timezone": "시간대",
    "workingHours": "근무 시간",
    "workspaceHolidaysApply": "조직 운영시간에 등록한 휴일도 새 상담의 SLA 목표에서 제외됩니다. 이미 배정된 목표 시각은 유지됩니다.",
    "policyHolidays": "정책별 휴일",
    "policyHolidaysHint": "이 정책에만 적용됩니다. 조직 휴일과 함께 제외되며 이미 배정된 기한은 바뀌지 않습니다.",
    "noPolicyHolidays": "등록된 정책별 휴일이 없습니다.",
    "holidayDate": "날짜",
    "holidayName": "이름 (선택)",
    "holidayNamePlaceholder": "예: 창립기념일",
    "holidayDateRequired": "올바른 휴일 날짜를 선택해주세요.",
    "holidayDuplicate": "이 날짜는 이미 등록되어 있습니다.",
    "removePolicyHoliday": "{{date}} 휴일 삭제",
    "dayNames": [
      "일",
      "월",
      "화",
      "수",
      "목",
      "금",
      "토"
    ],
    "escalation": "에스컬레이션",
    "escalationLevel": "레벨",
    "escalationThreshold": "임계값",
    "escalationActions": "작업",
    "escalationMessage": "메시지 (선택사항)",
    "addEscalation": "에스컬레이션 레벨 추가",
    "addAction": "작업 추가",
    "actionTypes": {
      "notify_agent": "상담원 알림",
      "notify_manager": "관리자 알림",
      "reassign": "재배정",
      "send_email": "이메일 발송",
      "webhook": "웹훅"
    },
    "notifications": "알림",
    "notifyOnBreach": "위반 시 알림",
    "notifyOnWarning": "경고 시 알림",
    "warningThreshold": "경고 임계값",
    "dashboard": "SLA 대시보드",
    "breaches": "위반",
    "viewBreaches": "위반 내역 보기",
    "breachesList": "SLA 위반 목록",
    "breachesError": "위반 내역을 불러오지 못했습니다. 잠시 후 다시 시도해 주세요",
    "noBreaches": "SLA 위반 내역이 없습니다",
    "deadline": "목표 기한",
    "breachedAt": "위반 시간",
    "chat": "채팅",
    "target": "목표",
    "actual": "실제",
    "atRisk": "위험",
    "onTrack": "정상",
    "breached": "위반됨",
    "compliance": "준수율",
    "avgFirstResponse": "평균 첫 응답",
    "avgResolution": "평균 해결",
    "chats": "채팅",
    "complianceRate": "준수율",
    "firstResponse": "첫 응답",
    "namePlaceholder": "정책 이름을 입력하세요",
    "nextResponse": "다음 응답",
    "resolution": "해결",
    "totalChats": "총 채팅",
    "totalPolicies": "총 정책",
    "uncoveredOpenChats": "SLA 미적용 열린 상담",
    "uncoveredOpenChatsHint": "정책·준수율 집계에 포함되지 않습니다. 눌러서 상담 확인",
    "pendingSlaAssignments": "SLA 배정 재시도 대기",
    "pendingSlaAssignmentsHint": "정책 또는 상담 이력 문제로 배정이 지연됐습니다. 눌러서 상담 확인",
    "useBusinessHours": "업무 시간만 적용",
    "threshold": "임계값",
    "fetchError": "SLA 정책을 불러오지 못했습니다. 잠시 후 다시 시도해 주세요",
    "dashboardError": "대시보드를 불러오지 못했습니다. 잠시 후 다시 시도해 주세요",
    "updateSuccess": "SLA 정책을 수정했습니다",
    "createSuccess": "SLA 정책을 만들었습니다",
    "saveError": "SLA 정책을 저장하지 못했습니다. 잠시 후 다시 시도해 주세요",
    "toggleSuccess": "상태를 변경했습니다",
    "toggleError": "상태를 변경하지 못했습니다. 잠시 후 다시 시도해 주세요",
    "deleteSuccess": "SLA 정책을 삭제했습니다",
    "deleteError": "SLA 정책을 삭제하지 못했습니다. 잠시 후 다시 시도해 주세요",
    "deleteConfirmation": "\"{{name}}\"을(를) 삭제하시겠습니까?",
    "analytics": "SLA 분석",
    "workflowRecovery": {
      "filter": "워크플로 상태 필터",
      "confirmTitle": "워크플로 실행 확인",
      "readError": "워크플로 상태를 불러오지 못했습니다. 새로 확인한 뒤 변경해 주세요.",
      "empty": "선택한 조건에 해당하는 워크플로 이벤트가 없습니다.",
      "states": {
        "uncertain": "실행 결과 미확인"
      },
      "openWorkflows": "워크플로 보기",
      "workflowId": "워크플로 ID",
      "actionStep": "{{attempt}}회차 · {{index}}번 액션",
      "reviewEvidence": "확인 근거",
      "reviewEvidenceHint": "확인한 요청 ID·결과·시각을 10자 이상 남기고 개인정보는 복사하지 마세요.",
      "lastReview": "최근 확인: {{actor}} · {{date}}",
      "title": "워크플로 후속 처리",
      "description": "상담 생성·수정, 고객 메시지 수신, 태그 추가, 담당자 배정, SLA 위반, 상담 종료 시 접수된 워크플로를 확인합니다. 일부 실행되었거나 중단된 작업은 처리 결과를 검토한 뒤 재시도하세요.",
      "closedEvent": "상담 종료",
      "createdEvent": "상담 생성",
      "assignedEvent": "담당자 배정",
      "updatedEvent": "상담 수정",
      "tagEvent": "태그 추가",
      "assignmentReceipt": "배정 요청 ID",
      "mutationReceipt": "상담 수정 요청 ID",
      "tag": "추가된 태그",
      "messageEvent": "고객 메시지 수신",
      "sourceMessage": "원본 메시지 ID",
      "confirmDelivered": "완료 확인",
      "confirm": {
        "retry": "접수된 워크플로를 처음부터 재시도합니다. 실행 횟수와 대기 시간 제한은 그대로 적용됩니다. 메시지나 이메일을 포함해 일부 작업이 이미 완료되었을 수 있습니다. 실행 기록과 수신 결과를 확인하고 중복 가능성을 수락한 경우에만 진행하세요.",
        "confirm_delivered": "필요한 워크플로 작업이 모두 완료되었음을 확인한 것으로 기록합니다. 작업을 다시 실행하지 않습니다.",
        "cancel": "이 이벤트의 후속 처리를 취소합니다. 이미 완료된 작업은 되돌릴 수 없습니다."
      },
      "reasons": {
        "conversation_changed": "이벤트 접수 후 상담 상태 또는 SLA가 바뀌었습니다.",
        "message_unavailable": "원본 고객 메시지를 사용할 수 없습니다.",
        "workspace_or_policy_unavailable": "워크스페이스 또는 정책을 사용할 수 없습니다.",
        "customer_unavailable": "고객을 사용할 수 없습니다.",
        "automation_paused": "워크스페이스 자동화 또는 정책이 중지되어 접수 상태로 보관합니다.",
        "workflow_changed": "접수된 규칙이 변경되었거나 비활성화되었습니다. 현재 설정을 검토하세요.",
        "no_workflows": "이벤트를 기록할 당시 활성 워크플로가 없었습니다.",
        "not_matched": "접수된 규칙의 조건이 맞지 않거나 실행 횟수 제한에 도달했습니다.",
        "workflow_failed": "워크플로가 실패했습니다. 앞선 작업은 완료되었을 수 있으므로 실행 기록을 확인하세요.",
        "delivery_uncertain": "외부 발송 결과를 확인하지 못했습니다. 재시도 전에 요청 ID로 수신 측 기록을 대조하세요.",
        "workflow_interrupted": "실행 결과를 확인하지 못했습니다. 재시도 전에 이미 처리된 작업을 확인하세요.",
        "worker_interrupted": "처리 도중 결과 기록이 중단되어 자동 재실행을 보류했습니다.",
        "preparation_failed": "실행 전 준비가 실패했습니다. 접수된 이벤트를 다시 확인합니다.",
        "operator_cancel": "관리자가 취소했습니다.",
        "operator_confirm_delivered": "관리자가 완료를 확인했습니다."
      }
    },
    "recovery": {
      "title": "에스컬레이션 전달",
      "description": "대기 중인 작업과 실패·전송 여부 불명확 항목을 확인하고 복구합니다.",
      "filter": "에스컬레이션 상태 필터",
      "all": "모든 상태",
      "level": "{{level}}단계",
      "open": "상담 열기",
      "retry": "작업 재시도",
      "confirmDelivered": "전달 확인 처리",
      "cancel": "작업 취소",
      "confirmTitle": "에스컬레이션 작업 확인",
      "readError": "에스컬레이션 전달 상태를 불러오지 못했습니다. 새로 확인한 뒤 변경해 주세요.",
      "unconfirmed": "변경 결과를 확인하지 못했습니다. 재시도 전에 최신 상태를 확인해 주세요.",
      "changed": "작업 상태가 변경되었습니다. 최신 상태를 확인해 주세요.",
      "empty": "선택한 조건에 해당하는 작업이 없습니다.",
      "states": {
        "pending": "대기",
        "running": "처리 중",
        "sending": "전송 중",
        "claimed": "준비 중",
        "done": "완료",
        "failed": "실패",
        "uncertain": "전송 여부 불명확",
        "paused": "일시 중지",
        "cancelled": "취소",
        "skipped": "건너뜀"
      },
      "types": {
        "notify_agent": "상담원 알림",
        "notify_manager": "관리자 알림",
        "reassign": "상담 재배정",
        "send_email": "이메일 전송",
        "webhook": "웹훅 호출"
      },
      "reasons": {
        "recipient_unavailable": "이 조직에서 수신자를 사용할 수 없습니다.",
        "assignment_changed": "담당자가 변경되었습니다. 상담을 확인한 뒤 새로 배정해 주세요.",
        "email_unconfigured": "이메일 전송 설정이 필요합니다.",
        "webhook_unconfigured": "웹훅 주소가 필요합니다.",
        "action_failed": "작업을 완료하지 못했습니다. 정책과 수신자를 확인해 주세요.",
        "delivery_unconfirmed": "제공자가 이미 요청을 접수했을 수 있습니다. 전달 여부를 확인한 뒤 재전송을 결정해 주세요.",
        "automation_paused": "조직 자동화 또는 정책이 일시 중지되었습니다.",
        "policy_changed": "정책이 변경되거나 삭제되었습니다.",
        "conversation_changed": "상담이 종료되거나 SLA가 변경되었습니다.",
        "workspace_unavailable": "조직을 사용할 수 없습니다.",
        "email_opt_out": "수신자가 이메일 알림을 껐습니다.",
        "operator_cancel": "관리자가 작업을 취소했습니다.",
        "operator_confirm_delivered": "관리자가 전달을 확인했습니다.",
        "target_resolved": "응답 목표가 충족되었거나 더 이상 경고 기준에 해당하지 않습니다."
      },
      "confirm": {
        "retry": "제공자가 이미 요청을 접수했을 수 있습니다. 재시도하면 이메일이나 웹훅이 중복 전송될 수 있습니다. 전달 여부를 확인한 뒤 진행해 주세요.",
        "confirm_delivered": "수신자 또는 제공자를 통해 전달을 확인한 것으로 기록합니다. 다시 전송하지 않고 완료 처리합니다.",
        "cancel": "대기 중인 작업을 취소합니다. 외부에서 이미 접수한 요청은 취소할 수 없습니다."
      },
      "chooseRecipient": "상담원 또는 팀 선택",
      "defaultRecipient": "현재 담당자 / 정책 기본값",
      "unavailableRecipient": "사용할 수 없는 수신자 — 다시 선택",
      "unavailableTeam": "사용할 수 없는 팀 — 다시 선택",
      "noTeam": "팀 제한 없음",
      "targetsError": "조직의 수신자 목록을 불러오지 못했습니다.",
      "recipient": "수신자",
      "team": "수신 팀",
      "webhookUrl": "웹훅 주소",
      "pausedRetry": "재시도하려면 조직의 자동화와 이 정책을 활성화하세요.",
      "obsoleteRetry": "현재 상담 또는 정책에 맞지 않는 작업입니다. 현재 정책을 확인하세요."
    }
  },
  "proactive": {
    "title": "선제적 메시징",
    "subtitle": "방문자에게 먼저 메시지를 보내세요",
    "create": "메시지 생성",
    "editMessage": "메시지 수정",
    "deleteMessage": "메시지 삭제",
    "noMessages": "아직 만든 선제적 메시지가 없습니다",
    "createFirst": "첫 선제적 메시지를 만들어 보세요",
    "messageName": "메시지 이름",
    "namePlaceholder": "환영 메시지",
    "message": "메시지 내용",
    "messagePlaceholder": "안녕하세요! 무엇을 도와드릴까요?",
    "senderName": "발신자 이름",
    "triggerEvent": "트리거 이벤트",
    "delay": "지연",
    "frequency": "빈도",
    "targeting": "타겟팅",
    "pages": "페이지",
    "newVisitors": "신규 방문자",
    "returningVisitors": "재방문자",
    "scheduling": "스케줄링",
    "analytics": "분석",
    "sent": "발송",
    "clicked": "클릭",
    "replied": "응답",
    "conversion": "전환율",
    "types": {
      "welcome": "환영",
      "behavior": "행동 기반",
      "exit_intent": "이탈 의도",
      "time_based": "시간 기반"
    },
    "triggerEvents": {
      "page_load": "페이지 로드",
      "scroll_depth": "스크롤 깊이",
      "time_on_page": "페이지 체류 시간",
      "exit_intent": "이탈 의도",
      "custom_event": "커스텀 이벤트"
    },
    "frequencies": {
      "once_per_session": "세션당 1회",
      "once_per_day": "1일 1회",
      "once_ever": "최초 1회만",
      "always": "항상"
    },
    "pageTargeting": "페이지 타겟팅",
    "addPageRule": "규칙 추가",
    "noPageRules": "페이지 규칙이 없습니다. 모든 페이지에 메시지가 표시됩니다.",
    "pageUrlPlaceholder": "URL 패턴 입력 (예: /products)",
    "matchTypes": {
      "exact": "정확히 일치",
      "contains": "포함",
      "starts_with": "시작",
      "regex": "정규식"
    },
    "deviceTargeting": "디바이스 타겟팅",
    "desktop": "데스크탑",
    "mobile": "모바일",
    "tablet": "태블릿",
    "startDate": "시작일",
    "endDate": "종료일",
    "timezone": "시간대",
    "quickReplies": "빠른 답장",
    "addQuickReply": "답장 추가",
    "noQuickReplies": "아직 추가한 빠른 답장이 없습니다",
    "replyLabel": "라벨",
    "replyValue": "값",
    "replyActions": {
      "send_message": "메시지 전송",
      "open_url": "URL 열기"
    },
    "buttons": "버튼",
    "addButton": "버튼 추가",
    "noButtons": "아직 추가한 버튼이 없습니다",
    "buttonLabel": "라벨",
    "buttonTypes": {
      "primary": "기본",
      "secondary": "보조",
      "link": "링크"
    },
    "buttonUrl": "URL",
    "displayed": "표시됨",
    "dismissed": "닫힘",
    "fetchError": "메시지를 불러오지 못했습니다. 잠시 후 다시 시도해 주세요",
    "optionsError": "옵션을 불러오지 못했습니다. 잠시 후 다시 시도해 주세요",
    "updateSuccess": "메시지를 수정했습니다",
    "createSuccess": "메시지를 만들었습니다",
    "saveError": "메시지를 저장하지 못했습니다. 잠시 후 다시 시도해 주세요",
    "toggleSuccess": "상태를 변경했습니다",
    "toggleError": "상태를 변경하지 못했습니다. 잠시 후 다시 시도해 주세요",
    "deleteSuccess": "메시지를 삭제했습니다",
    "deleteError": "메시지를 삭제하지 못했습니다. 잠시 후 다시 시도해 주세요",
    "deleteConfirmation": "\"{{name}}\"을(를) 삭제하시겠습니까?",
    "content": "내용",
    "devices": "디바이스",
    "trigger": "트리거",
    "proactiveMessage": "선제적 메시지"
  },
  "aiSettings": {
    "title": "AI 에이전트 설정",
    "subtitle": "AI 자동 응답 시스템을 설정하세요",
    "selectChatbot": "챗봇 선택",
    "selectChatbotDesc": "AI 설정을 적용할 챗봇을 선택하세요",
    "noChatbots": "아직 만든 챗봇이 없습니다",
    "createChatbotFirst": "먼저 챗봇을 생성하세요",
    "enableAI": "AI 에이전트 활성화",
    "enableAIDesc": "고객 메시지에 AI가 자동으로 응답합니다",
    "provider": "AI 제공업체",
    "model": "모델",
    "apiKey": "API 키",
    "apiKeyPlaceholder": "sk-...",
    "temperature": "Temperature",
    "temperatureDesc": "높을수록 창의적, 낮을수록 일관적 (0.0 - 1.0)",
    "maxTokens": "최대 토큰",
    "maxTokensDesc": "응답당 최대 토큰 수",
    "systemPrompt": "시스템 프롬프트",
    "systemPromptPlaceholder": "당신은 친절한 고객 지원 상담원입니다...",
    "personality": "AI 성격",
    "personalityName": "이름",
    "personalityTone": "말투",
    "personalityLanguage": "언어",
    "capabilities": "AI 기능",
    "canSuggestArticles": "문서 추천",
    "canSuggestArticlesDesc": "지식베이스에서 관련 문서를 자동으로 추천합니다",
    "canSummarize": "대화 요약",
    "canSummarizeDesc": "긴 대화를 자동으로 요약합니다",
    "canTranslate": "번역",
    "canTranslateDesc": "고객 메시지를 자동으로 번역합니다",
    "canEscalate": "상담원 연결",
    "canEscalateDesc": "필요시 상담원에게 자동으로 연결합니다",
    "canCollectInfo": "정보 수집",
    "canCollectInfoDesc": "고객 정보를 자동으로 수집합니다",
    "escalation": "에스컬레이션 설정",
    "enableEscalation": "자동 에스컬레이션 활성화",
    "escalationKeywords": "에스컬레이션 키워드",
    "escalationKeywordsPlaceholder": "상담원, 사람, 연결 (쉼표로 구분)",
    "sentimentThreshold": "감정 임계값",
    "sentimentThresholdDesc": "부정적 감정 감지 시 에스컬레이션 기준",
    "confidenceThreshold": "신뢰도 임계값",
    "confidenceThresholdDesc": "AI 응답 신뢰도가 이 값 이하면 에스컬레이션",
    "maxAttempts": "최대 시도 횟수",
    "maxAttemptsDesc": "이 횟수만큼 시도 후 자동 에스컬레이션",
    "escalationMessage": "에스컬레이션 메시지",
    "targetTeam": "담당 팀",
    "knowledgeBases": "지식베이스",
    "knowledgeBasesLabel": "지식베이스 연결",
    "selectKnowledgeBases": "AI가 참조할 지식베이스를 선택하세요",
    "noKnowledgeBases": "등록된 지식베이스가 없습니다",
    "multilingual": "다국어 지원",
    "enableMultilingual": "다국어 지원 활성화",
    "autoDetect": "언어 자동 감지",
    "supportedLanguages": "지원 언어",
    "responseSettings": "응답 설정",
    "greeting": "인사 메시지",
    "greetingPlaceholder": "안녕하세요! 무엇을 도와드릴까요?",
    "fallbackMessage": "대체 메시지",
    "fallbackMessagePlaceholder": "죄송합니다, 이해하지 못했습니다. 다시 말씀해 주시겠어요?",
    "offlineMessage": "오프라인 메시지",
    "offlineMessagePlaceholder": "현재 운영 시간이 아닙니다. 빠른 시일 내에 답변 드리겠습니다.",
    "testAI": "AI 테스트",
    "testMessage": "테스트 메시지",
    "testResponse": "AI 응답",
    "providers": {
      "openai": "OpenAI",
      "anthropic": "Anthropic"
    },
    "models": {
      "gpt-4": "GPT-4",
      "gpt-4-turbo": "GPT-4 Turbo",
      "gpt-3.5-turbo": "GPT-3.5 Turbo",
      "claude-3-opus": "Claude 3 Opus",
      "claude-3-sonnet": "Claude 3 Sonnet",
      "claude-3-haiku": "Claude 3 Haiku"
    },
    "tones": {
      "professional": "전문적",
      "friendly": "친근한",
      "casual": "캐주얼",
      "formal": "격식체"
    },
    "language": "응답 언어",
    "languages": {
      "ko": "한국어",
      "en": "영어",
      "ja": "일본어",
      "zh": "중국어"
    },
    "aiAgents": "AI 에이전트",
    "aiDisabled": "AI 비활성",
    "aiEnabled": "AI 활성",
    "aiResponses": "AI 응답",
    "avgConfidence": "평균 신뢰도",
    "configure": "설정",
    "configureAI": "AI 설정",
    "escalationRate": "에스컬레이션 비율",
    "tone": "말투",
    "totalConversations": "총 대화 수",
    "fetchError": "AI 설정을 불러오지 못했습니다. 잠시 후 다시 시도해 주세요",
    "saveError": "AI 설정을 저장하지 못했습니다. 잠시 후 다시 시도해 주세요",
    "saveSuccess": "AI 설정을 저장했습니다",
    "aiAssistant": "AI 상담 도우미",
    "previewQ": "안녕하세요, 문의가 있어요",
    "providerDown": "AI 모델에 연결하지 못하고 있습니다. 지금 고객이 받는 답변은 지식베이스에서 찾은 내용을 그대로 인용한 것이며, 아래 수치도 그 기준으로 집계됩니다",
    "providerNotConfigured": "AI 모델이 연결되어 있지 않습니다. 답변은 지식베이스 발췌로 생성됩니다",
    "repliesTitle": "AI 자동 답변",
    "repliesOnHint": "AI가 고객 문의에 먼저 답합니다. 위젯과 연결된 채널 모두에 적용됩니다.",
    "repliesPausedHint": "지금은 AI가 고객에게 답하지 않습니다. 위젯과 연결된 채널 모두에 적용됩니다.",
    "repliesDeploymentOff": "이 서버 전체에서 AI 자동 답변이 꺼져 있습니다.",
    "repliesPause": "답변 멈추기",
    "repliesResume": "다시 답하게 하기"
  },
  "messagePanel": {
    "aiAssist": "AI 어시스트",
    "customerInfo": "고객 정보",
    "moreActions": "추가 작업",
    "changeStatus": "상태 변경",
    "changePriority": "우선순위 변경",
    "reassignAgent": "상담원 재배정",
    "manageTags": "태그 관리",
    "exportChat": "대화록 내보내기",
    "statusChanged": "상태를 변경했습니다",
    "statusConflict": "상담 상태가 바뀌었습니다. 최신 상태를 확인한 뒤 다시 진행해 주세요.",
    "statusUnconfirmed": "변경 결과를 확인하지 못했습니다. 상담을 새로 불러온 뒤 다시 진행해 주세요.",
    "statusError": "상태를 변경하지 못했습니다. 잠시 후 다시 시도해 주세요",
    "priorityChanged": "우선순위를 변경했습니다",
    "priorityError": "우선순위를 변경하지 못했습니다. 잠시 후 다시 시도해 주세요",
    "reassigned": "담당 상담원을 변경했습니다",
    "reassignError": "담당 상담원을 변경하지 못했습니다. 잠시 후 다시 시도해 주세요",
    "tagAdded": "태그를 추가했습니다",
    "tagRemoved": "태그를 삭제했습니다",
    "tagError": "태그를 변경하지 못했습니다. 잠시 후 다시 시도해 주세요",
    "exported": "대화록을 다운로드했습니다",
    "exportError": "대화록을 내보내지 못했습니다. 잠시 후 다시 시도해 주세요",
    "noAgents": "사용 가능한 상담원이 없습니다",
    "noTags": "아직 추가한 태그가 없습니다",
    "newTagPlaceholder": "새 태그 입력...",
    "current": "현재",
    "priority": {
      "low": "낮음",
      "medium": "보통",
      "high": "높음",
      "urgent": "긴급"
    },
    "assignConflict": "다른 상담원이 먼저 이 대화를 맡았습니다. 새로고침 후 다시 시도해 주세요",
    "assignConflictNamed": "{{name}}님이 먼저 이 대화를 맡았습니다. 새로고침 후 다시 시도해 주세요",
    "internalNotes": "내부 메모"
  },
  "aiAgent": {
    "httpReviewsTitle": "외부 작업 결과 확인",
    "reviewRecordedBy": "확인자: {{name}}",
    "refreshReviews": "목록 새로고침",
    "moreReviews": "더 보기",
    "httpReviewsUnavailable": "확인이 필요한 작업을 불러오지 못했습니다. 잠시 후 다시 확인하세요.",
    "httpReviewsEmpty": "확인이 필요한 외부 작업이 없습니다.",
    "httpReviewUnknown": "확인 기록의 저장 여부를 확인하지 못했습니다. 결과 확인을 눌러 저장된 기록을 조회하세요.",
    "httpReviewManagerRequired": "관리자에게 실제 반영 여부 확인과 기록을 요청하세요.",
    "reviewApplied": "담당자 확인: 반영됨",
    "reviewNotApplied": "담당자 확인: 미반영",
    "title": "운영 에이전트",
    "notConfigured": "AI 에이전트를 사용하려면 AI 제공자 API 키를 설정하세요",
    "modeOperator": "운영 에이전트",
    "modeAssist": "답변 도우미",
    "placeholder": "운영 작업을 요청하세요...",
    "intro": "플랫폼 작업을 자연어로 요청하세요. 예: \"미배정 상담을 나에게 배정해줘\", \"최근 VIP 고객을 찾아줘\".",
    "working": "작업 중...",
    "approvalNeeded": "승인 필요",
    "approve": "승인",
    "reject": "거부",
    "approved": "승인됨",
    "rejected": "거부됨",
    "quotaReached": "AI 사용 한도에 도달했습니다. 사용량과 플랜을 확인해 주세요.",
    "authorityChanged": "계정이나 권한이 변경되어 작업을 멈췄습니다. 다시 로그인해 주세요.",
    "sessionBusy": "이 대화에서 다른 요청을 처리 중입니다. 완료 후 다시 요청해 주세요.",
    "interrupted": "요청이 끝나기 전에 처리가 중단됐습니다. 아래 작업 결과를 확인한 뒤 다음 지시를 입력해 주세요. 결과가 미확인인 작업은 자동으로 다시 실행하지 않습니다.",
    "stillWorking": "요청을 처리 중입니다. 연결이 끊겨도 같은 요청의 결과를 확인합니다.",
    "resultUnknown": "아직 결과를 확인하지 못했습니다. 결과 확인을 누르면 같은 요청을 조회하며, 이미 접수된 작업을 새로 실행하지 않습니다.",
    "historyUnavailable": "이전 대화 내용을 불러오지 못했습니다. 잠시 후 패널을 다시 열어 주세요.",
    "newConversation": "새 운영 대화",
    "checkResult": "결과 확인",
    "toolUncertain": "결과 확인 필요",
    "approvalStates": {
      "pending": "승인 필요",
      "deciding": "결정 확인 중…",
      "executing": "작업 실행 중",
      "executed": "작업 완료",
      "rejected": "거부됨",
      "failed": "작업 미완료",
      "uncertain": "작업 결과 미확인",
      "unknown": "작업 결과 확인 중"
    },
    "customerErasurePending": "연결된 상담 자료 삭제 진행 중",
    "customerErasureComplete": "연결된 상담 자료 삭제 완료",
    "checkErasure": "삭제 진행 상태 확인",
    "erasureCheckError": "삭제 진행 상태를 확인하지 못했습니다. 여기서 다시 시도하거나 고객 삭제 상태 화면을 확인하세요.",
    "approvalUnknown": "새 작업을 요청하기 전에 저장된 결과를 확인해 주세요. 이 작업은 자동으로 다시 실행되지 않습니다.",
    "reconciliationHint": "대상 시스템에서 실제 결과를 확인한 뒤 기록해 주세요. 아래 버튼은 확인 내용만 기록하며 작업을 실행하지 않습니다.",
    "evidence": "결과를 확인한 근거 (10자 이상)",
    "confirmApplied": "변경 반영을 확인했음으로 기록",
    "confirmNotApplied": "변경 미반영을 확인했음으로 기록",
    "checkedOutcome": "담당자 확인"
  },
  "ai": {
    "dashboard": {
      "title": "AI 성과 대시보드",
      "subtitle": "AI 자동 응답 및 분석 성과를 확인하세요",
      "totalConversations": "AI 처리 대화",
      "autoReplySuccess": "자동 응답 성공률",
      "avgConfidence": "평균 신뢰도",
      "escalationRate": "에스컬레이션 비율",
      "resolutionRate": "AI 해결률",
      "tokenCost": "토큰 비용",
      "performanceTrend": "성과 추이",
      "dailyMetrics": "일별 AI 성과 지표",
      "intentDistribution": "의도 분포",
      "uncategorizedIntent": "미분류",
      "byCategory": "카테고리별 문의 현황",
      "sentimentTrend": "감정 추이",
      "customerSentiment": "고객 감정 변화",
      "intentPerformance": "의도별 성과",
      "byIntentMetrics": "의도별 신뢰도 및 해결률",
      "insights": "AI 인사이트",
      "faqCandidates": "FAQ 후보",
      "aiHandled": "AI 처리",
      "autoReply": "자동 응답",
      "positive": "긍정",
      "neutral": "중립",
      "negative": "부정",
      "confidence": "신뢰도",
      "resolution": "해결률",
      "cases": "건",
      "times": "회",
      "days7": "7일",
      "days30": "30일",
      "days90": "90일"
    },
    "quality": {
      "title": "AI 품질 대시보드",
      "subtitle": "상담원 성과 및 대화 품질 모니터링",
      "analysisPaused": "자동 품질 분석이 일시 중지되었습니다.",
      "analysisPausedCredentials": "관리자에게 AI 제공자 연결 확인을 요청하세요. 기존 평가 결과는 계속 조회할 수 있습니다.",
      "analysisPausedConnection": "AI 제공자에 일시적으로 연결할 수 없습니다. 기존 평가 결과는 계속 조회할 수 있으며, 잠시 후 다시 확인하세요.",
      "analysisStatusUnknown": "자동 품질 분석의 최근 상태를 확인하지 못했습니다.",
      "analysisStatusUnknownDetail": "새 평가가 지연될 수 있습니다. 기존 평가 결과는 계속 조회할 수 있습니다.",
      "topPerformers": "우수 상담원",
      "qualityScore": "품질 점수",
      "avgResponse": "평균 응답",
      "resolutionRate": "해결률",
      "qualityBreakdown": "품질 세부 분석",
      "coachingRecommendations": "코칭 추천",
      "qualityInsights": "품질 인사이트",
      "insightType": {
        "slow_response": "느린 응답",
        "escalation": "에스컬레이션",
        "distribution": "점수 분포",
        "low_satisfaction": "낮은 만족도",
        "negative_sentiment": "부정 감정",
        "high_volume": "높은 문의량",
        "low_resolution": "낮은 해결률"
      },
      "selectAgent": "상담원을 선택하여 상세 성과를 확인하세요",
      "excellent": "우수",
      "good": "양호",
      "average": "보통",
      "needsImprovement": "개선 필요",
      "noRecommendations": "현재 추천 사항이 없습니다",
      "responsiveness": "응답성",
      "accuracy": "정확도",
      "helpfulness": "유용성",
      "professionalism": "전문성",
      "resolution": "해결력",
      "conversations": "대화",
      "fetchError": "품질 데이터를 불러오지 못했습니다. 잠시 후 다시 시도해 주세요",
      "agentError": "상담원 정보를 불러오지 못했습니다. 잠시 후 다시 시도해 주세요",
      "scoreBand": "품질 점수 분포",
      "countUnit": "{{count}}건",
      "bandDetail": "{{from}}–{{to}}점 · 평균 {{avg}}점",
      "flagDetailSevere": "심각 {{n}}건 포함",
      "flagDetail": "심각 건 없음",
      "badgeFastResponder": "빠른 응답",
      "badgeHighQuality": "높은 품질",
      "badgeCustomerFavorite": "고객 선호",
      "badgeProblemSolver": "문제 해결",
      "badgeAiPowerUser": "AI 활용"
    },
    "assist": {
      "title": "AI 어시스턴트",
      "suggestedReplies": "추천 답변",
      "articles": "KB 문서",
      "customerInfo": "고객 정보",
      "loading": "추천을 생성하는 중...",
      "noSuggestions": "근거가 확인된 답변 제안이 없습니다",
      "citedSources": "근거 {{count}}건",
      "noArticles": "관련 문서가 없습니다",
      "noCustomerData": "표시할 고객 정보가 없습니다",
      "contextTips": "팁",
      "useReply": "답변 사용",
      "copy": "복사",
      "copied": "복사됨",
      "confidence": "신뢰도",
      "concise": "간결",
      "detailed": "상세",
      "empathetic": "공감적",
      "general": "일반",
      "keyPoints": "핵심 포인트",
      "recentIssues": "최근 문의",
      "totalInteractions": "총 상호작용",
      "avgSatisfaction": "평균 만족도",
      "tier": "등급",
      "riskLevel": "리스크 수준",
      "highRisk": "높음",
      "mediumRisk": "보통",
      "lowRisk": "낮음",
      "fetchError": "AI 추천을 불러오지 못했습니다. 잠시 후 다시 시도해 주세요",
      "selectChat": "채팅을 선택하세요"
    },
    "autoReply": {
      "title": "자동 응답",
      "enabled": "자동 응답 활성화",
      "confidenceThreshold": "신뢰도 임계값",
      "reviewThreshold": "검토 임계값",
      "pendingReview": "검토 대기 중",
      "approve": "승인",
      "reject": "거부",
      "approved": "승인됨",
      "rejected": "거부됨",
      "modified": "수정됨"
    },
    "intent": {
      "title": "의도 분류",
      "billing": "결제",
      "technical": "기술 지원",
      "general": "일반 문의",
      "complaint": "불만",
      "feedback": "피드백",
      "sales": "영업",
      "refund": "환불",
      "shipping": "배송"
    },
    "routing": {
      "title": "스마트 라우팅",
      "suggestedAgent": "추천 상담원",
      "suggestedTeam": "추천 팀",
      "confidence": "신뢰도",
      "reason": "사유"
    },
    "assistant": "AI 어시스턴트",
    "copilot": {
      "failed": "AI 작문 도우미를 실행하지 못했습니다. 잠시 후 다시 시도해 주세요",
      "label": "AI 도움",
      "polite": "정중하게",
      "concise": "간결하게",
      "empathetic": "공감 추가",
      "fix": "교정",
      "translateEn": "영어로 번역",
      "notConfigured": "AI 작문 도우미를 사용하려면 AI 제공자 API 키를 설정하세요"
    }
  },
  "chat": {
    "status": {
      "closed": "종료됨",
      "open": "진행 중",
      "pending": "대기 중",
      "resolved": "해결됨"
    }
  },
  "header": {
    "notifications": "알림"
  },
  "channels": {
    "description": "외부 메시징 채널을 연결하면 모든 고객 문의를 하나의 인박스에서 처리할 수 있습니다",
    "lineDescription": "LINE 공식 계정으로 받은 메시지를 인박스에서 상담하세요",
    "kakaoDescription": "카카오 상담톡으로 받은 문의를 인박스에서 상담하세요 (딜러사 게이트웨이 경유).",
    "instagramDescription": "Instagram DM 연동",
    "kakaoWebhookHelp": "상담톡 딜러사(부가서비스사) 콘솔의 메시지 수신 콜백 URL에 이 주소를 등록하세요",
    "apiBase": "게이트웨이 API Base URL",
    "kakaoWebhookToken": "Webhook 검증 토큰",
    "kakaoAccessToken": "발신용 액세스 토큰",
    "comingSoon": "준비 중",
    "active": "연동됨",
    "inactive": "비활성",
    "webhookUrl": "Webhook URL",
    "webhookHelp": "LINE Developers 콘솔의 Messaging API > Webhook URL에 이 주소를 등록하세요",
    "channelSecret": "Channel Secret",
    "channelAccessToken": "Channel Access Token",
    "savedKeepBlank": "저장됨 — 변경 시에만 입력",
    "testConnection": "연결 테스트",
    "testSuccess": "연결에 성공했습니다",
    "testFailed": "연결하지 못했습니다. 설정을 확인해 주세요",
    "lastReceived": "마지막 수신",
    "receivedCount": "수신 메시지",
    "lastError": "최근 오류",
    "toggleLabel": "{{channel}} 연동 사용",
    "disconnect": "연결 해제",
    "disconnectTitle": "{{name}} 연결을 해제할까요?",
    "disconnectMessage": "저장된 인증 정보가 지워지고 이 채널로는 메시지를 주고받지 않습니다. 다시 연결하려면 제공자에서 발급받은 값을 새로 입력해야 합니다. 지난 대화는 그대로 남습니다.",
    "disconnectError": "연결을 해제하지 못했습니다",
    "inboundAttentionTitle": "외부 채널 수신 처리가 지연되고 있습니다",
    "inboundAttentionHint": "수신 내용은 저장돼 있으며 자동 재처리 중입니다. 지연이 계속되면 채널 연결과 서버 상태를 확인해 주세요.",
    "inboundDelayed": "수신 지연 {{count}}건",
    "inboundInterrupted": "중단된 작업 {{count}}건",
    "inboundAttentionUnavailable": "외부 채널 수신 상태를 확인하지 못했습니다. 다시 시도해 주세요.",
    "providerVerificationNotice": "연결 테스트는 자격 증명만 확인합니다. LINE은 공식 계정과 웹훅 등록이 필요하며, 카카오는 호환 딜러사 게이트웨이 계약과 연동 검증이 필요합니다. 운영 전 테스트 계정으로 텍스트·이미지·파일 링크의 수신과 발신을 확인하세요."
  },
  "productHelp": {
    "title": "Trifrost 도움말",
    "intro": "계정 시작부터 고객 상담까지, 필요한 화면으로 바로 이동하세요.",
    "account": {
      "title": "계정과 조직 시작하기",
      "body": "새 워크스페이스는 Google 계정으로 만들 수 있습니다. 기존 워크스페이스에는 관리자가 보낸 초대 링크로 합류하세요."
    },
    "conversations": {
      "title": "상담과 고객 기록",
      "body": "로그인 후 대화 목록에서 문의를 처리하고, 고객 목록에서 프로필과 기록을 확인할 수 있습니다."
    },
    "knowledge": {
      "title": "지식베이스 관리",
      "body": "조직의 지식베이스에서 문서를 관리합니다. 게시된 공개 문서는 해당 조직의 고객용 도움말에 표시됩니다."
    },
    "billing": {
      "title": "요금과 문의",
      "body": "요금제는 요금 페이지에서, 서비스 및 결제 관련 문의 경로는 연락처 페이지에서 확인하세요."
    },
    "customerHelp": {
      "title": "고객용 도움말을 찾고 있나요?",
      "body": "각 조직의 고객용 도움말은 그 조직이 공유한 전용 링크에서 열 수 있습니다."
    },
    "links": {
      "start": "새 워크스페이스 시작",
      "signIn": "로그인",
      "chats": "대화 목록",
      "customers": "고객 목록",
      "knowledgeBase": "지식베이스",
      "pricing": "요금제",
      "contact": "문의처"
    }
  },
  "helpPublic": {
    "title": "무엇을 도와드릴까요?",
    "searchLabel": "도움말 검색",
    "searchPlaceholder": "궁금한 내용을 검색하세요",
    "loadFailed": "도움말을 불러오지 못했습니다. 다시 시도해 주세요.",
    "articleLoadFailed": "문서를 불러오지 못했습니다. 다시 시도해 주세요.",
    "searchFailed": "도움말 검색에 실패했습니다. 다시 시도해 주세요.",
    "allCategories": "전체",
    "noResults": "검색 결과가 없습니다",
    "noArticles": "아직 등록된 도움말이 없습니다",
    "backToList": "도움말 목록으로",
    "notFound": "문서를 찾을 수 없습니다",
    "wasHelpful": "이 문서가 도움이 되었나요?",
    "yes": "네",
    "no": "아니요",
    "thanksFeedback": "의견을 보내주셔서 감사합니다!",
    "feedbackFailed": "의견을 저장하지 못했습니다. 다시 눌러 주세요.",
    "related": "관련 문서"
  },
  "cannedReplies": {
    "title": "빠른 답변 (↑↓로 이동, Enter로 선택)",
    "new": "새 답변",
    "empty": "저장된 빠른 답변이 없습니다. \"새 답변\"으로 추가하세요",
    "personal": "개인",
    "team": "팀 공용",
    "createTitle": "빠른 답변 만들기",
    "titlePlaceholder": "제목 (예: 인사)",
    "shortcutPlaceholder": "단축어 (예: hello — /hello로 검색)",
    "contentPlaceholder": "답변 내용",
    "deleteTitle": "저장된 답변을 삭제할까요?",
    "deleteMessage": "\"{{title}}\" 를 삭제합니다. 팀 전체가 쓰던 답변이라면 함께 사라지고, 되돌릴 수 없습니다.",
    "deleteError": "저장된 답변을 삭제하지 못했습니다"
  },
  "widgetPreview": {
    "title": "고객 지원",
    "subtitle": "메시지를 남겨주시면 확인 후 답변드려요",
    "inputPlaceholder": "메시지를 입력하세요...",
    "empty": "미리볼 메시지가 없습니다",
    "label": "위젯 미리보기",
    "fromBot": "자동응답",
    "offlineSubtitle": "지금은 운영시간이 아닙니다",
    "preChatGate": "상담 시작 전에 연락처를 입력받습니다 (사전 질문 폼 켜짐)"
  },
  "notifications": {
    "newNotification": "새 알림",
    "loadFailed": "알림을 불러오지 못했습니다. 다시 시도해 주세요.",
    "readFailed": "읽음 처리 결과를 확인하지 못했습니다. 다시 불러온 목록에서 확인해 주세요.",
    "kinds": {
      "mention": "노트에서 회원님이 언급되었습니다",
      "slaBreach": "SLA 위반 알림",
      "chatAssigned": "상담이 배정되었습니다",
      "escalation": "이관된 상담이 배정되었습니다",
      "kbGap": "지식베이스에 없는 질문이 있습니다",
      "faqCandidate": "자주 묻는 질문 후보가 생겼습니다",
      "article": "문서 알림",
      "chatUnassigned": "새 상담이 도착했습니다",
      "deliveryUncertain": "외부 채널 전달 확인이 필요합니다",
      "deliveryFailure": "외부 채널 메시지 전송에 문제가 생겼습니다",
      "deliveryEvidence": "새 제공자 사실을 다시 확인해 주세요",
      "deliveryEvidenceAssigned": "새 제공자 사실 검토를 인수해 주세요",
      "deliveryEvidenceReminder": "새 제공자 사실 검토가 아직 미해결입니다",
      "deliveryEvidenceOwnerUnavailable": "새 제공자 사실 검토 담당자를 다시 지정해 주세요",
      "visitorRetentionAttention": "방문자 정리 상태를 확인해 주세요",
      "visitorRetentionRecovered": "방문자 정리 경고가 해소됐습니다"
    },
    "moreUnread": "안 읽은 알림 {{total}}개 중 {{shown}}개를 표시했습니다"
  },
  "admin": {
    "title": "서비스 관리",
    "badge": "운영",
    "operatorBadge": "운영자",
    "shellSubtitle": "서비스 전체 관리",
    "backToConsole": "워크스페이스 콘솔",
    "nav": {
      "overview": "개요",
      "workspaces": "워크스페이스",
      "users": "사용자",
      "revenue": "매출·구독",
      "usage": "사용량·비용",
      "infra": "인프라",
      "demos": "데모 영상",
      "promotions": "프로모션 영상",
      "operators": "운영자"
    },
    "planMix": "유료 구독 분포",
    "planMixHint": "구독 기준입니다. 구독이 없는 워크스페이스는 무료로 집계됩니다.",
    "notOperator": "플랫폼 운영자 전용",
    "notOperatorDesc": "서비스 전체 관리 콘솔은 플랫폼 운영자만 접근할 수 있습니다. 워크스페이스 관리는 콘솔에서 계속하실 수 있습니다",
    "queueDone": "{{action}} 완료: {{name}}",
    "ready": "정상",
    "notReady": "비정상",
    "onlineUsers": "접속 중 {{n}}명",
    "envLabel": "환경",
    "version": "버전",
    "nodeVersion": "Node",
    "uptime": "업타임",
    "dependencies": "의존성",
    "clients": "클라이언트 {{n}}",
    "queues": "큐",
    "queuesDisabled": "비활성",
    "queuesInline": "잡이 웹 프로세스 안에서 인라인으로 실행됩니다.",
    "noQueues": "등록된 큐가 없습니다",
    "colQueue": "큐",
    "colState": "상태",
    "colWaiting": "대기",
    "colFailed": "실패",
    "paused": "일시중지",
    "running": "동작 중",
    "resume": "재개",
    "pause": "중지",
    "retry": "재시도",
    "costGovernance": "비용 가드레일",
    "operatorsDesc": "이 사람들은 모든 워크스페이스의 데이터와 플랫폼 상태를 볼 수 있습니다. 부여·회수는 콘솔이 아니라 서버에서만 가능합니다 — 운영자가 스스로 운영자를 늘릴 수 있으면 계정 하나가 털렸을 때 복구가 안 되기 때문입니다",
    "noOperators": "운영자가 없습니다",
    "colUser": "사용자",
    "colWorkspaceRole": "워크스페이스 역할",
    "colStatus": "상태",
    "colLastLogin": "최근 로그인",
    "you": "나",
    "active": "활성",
    "inactive": "비활성",
    "mrr": "MRR",
    "arr": "연 환산 {{v}}",
    "payingWorkspaces": "유료 워크스페이스",
    "conversion": "전환율 {{v}}%",
    "users": "사용자",
    "activeUsers": "활성 {{v}}",
    "chats30d": "최근 30일 상담",
    "chatsTotal": "누적 {{v}}",
    "aiReplies": "AI 답변 (이번 달)",
    "aiCost": "원가 {{v}}",
    "mauTotal": "MAU (이번 달)",
    "mauOverage": "초과 {{v}}명",
    "customers": "고객",
    "messages": "메시지 {{v}}",
    "operators": "플랫폼 운영자",
    "operatorsHint": "서비스 전체 접근 권한",
    "growth": "최근 30일 유입",
    "newWorkspaces": "신규 워크스페이스",
    "newUsers": "신규 사용자",
    "newChats": "상담",
    "overageOutstanding": "미청구 초과분",
    "noOverage": "대기 중인 초과 청구가 없습니다",
    "payingCount": "{{n}}개 구독",
    "subsTotal": "전체 구독",
    "subsCanceled": "해지 {{n}}",
    "overagePending": "청구 대기 초과분",
    "overageDeferred": "집계 대기",
    "overageReview": "요금 검토",
    "overageReconciliation": "사후 대사",
    "overageSettlementReview": "결제 확인 필요",
    "overageRenewalUnverified": "예정 갱신일이 지났지만 결제 거래가 확인되지 않았습니다. Paddle 거래를 대사해 주세요",
    "overageCanceledBeforeSettlement": "구독 해지로 예약 요금이 면제되었을 수 있습니다. Paddle 거래를 확인해 주세요",
    "overagePausedBeforeSettlement": "구독 일시중지로 예약 요금의 결제 시점이 바뀌었을 수 있습니다. Paddle 거래를 확인해 주세요",
    "overageSubscriptionChangedBeforeSettlement": "구독이 변경되어 예약 요금의 결제 여부를 확인해야 합니다",
    "overageSettlementTitle": "초과 요금 결제 확인",
    "overageSettlementNotice": "Paddle에서 실제 거래를 확인한 뒤 기록하세요. 이 작업은 청구서를 결제 완료로 표시하거나 새 요금을 보내지 않습니다.",
    "overageProviderForgiven": "Paddle 면제 확인",
    "overageSettledExternally": "별도 조정 완료",
    "overageSettlementNoteHint": "Paddle 거래와 조정 근거를 20자 이상 기록하세요",
    "reconciliationOpen": "검토하기",
    "reconciliationView": "처리 이력",
    "reconciliationPrevious": "이전 처리",
    "reconciliationTitle": "초과 요금 사후 대사",
    "reconciliationOriginal": "기존 청구",
    "reconciliationOriginalMau": "기존 MAU 초과",
    "reconciliationAiCounts": "AI 초과 답변 {{original}}건 → {{current}}건",
    "reconciliationAiPending": "진행 중인 AI 답변 {{count}}건이 정리된 뒤 검토하세요",
    "reconciliationDecreaseNeedsAdjustment": "현재 사용량이 기존 청구보다 적습니다. Paddle 환불·조정 근거를 확인하고 별도 조정으로 기록하세요.",
    "reconciliationActive": "활성 고객",
    "reconciliationVerifiedMau": "원장 검증 후 청구 대상 MAU {{count}}명",
    "reconciliationUnverifiedMau": "현재 MAU 원장은 아직 검증되지 않았습니다. 차이 없음 처리 시 원장을 재검증합니다.",
    "reconciliationDecision": "처리 결과",
    "reconciliationNoDifference": "청구 차이 없음",
    "reconciliationWaived": "차액 면제",
    "reconciliationExternal": "외부 조정 완료",
    "reconciliationNotice": "이 기록은 청구서를 수정하거나 Paddle에 새 요금을 보내지 않습니다. 거래와 활동 원장을 대조한 뒤 처리하세요.",
    "reconciliationNote": "검토 근거",
    "reconciliationNoteHint": "거래와 활동 원장을 어떻게 확인했는지 20자 이상 기록하세요",
    "reconciliationReference": "외부 조정 참조번호",
    "reconciliationReferenceHint": "Paddle 거래·환불 등 확인 가능한 참조번호",
    "reconciliationSave": "검토 결과 기록",
    "reconciliationAlreadyResolved": "이미 처리된 검토 건입니다. 목록을 새로고침하세요.",
    "overageFailed": "청구 실패",
    "overageExceptions": "청구 실패·결과 확인 필요",
    "overageExceptionsGuidance": "총 {{count}}건 · 오래된 순서. Paddle에서 구독·요청 ID와 거래를 확인한 뒤 처리하세요. 결과가 불확실한 청구는 재전송하지 마세요.",
    "noOverageExceptions": "확인할 청구가 없습니다",
    "overageAttempt": "마지막 시도",
    "overageAttempts": "{{count}}회",
    "providerRequest": "요청",
    "overageChargingUncertain": "전송 도중 중단되었을 수 있어 Paddle 확인이 필요합니다",
    "overageUnconfirmed": "전송 결과가 불확실해 Paddle 확인이 필요합니다",
    "overageRejected": "Paddle가 청구를 거절했습니다",
    "overageRetryReview": "재처리 검토",
    "overageRetryTitle": "거절된 청구 재처리 승인",
    "overageRetryNotice": "Paddle에서 이 요청이 거절되고 동일 요금이 예약·결제되지 않았는지 확인하세요. 승인 후 다음 월 마감 작업이 최신 사용량과 구독을 재검증하고 요금 전송을 시도합니다.",
    "overageRetryReference": "Paddle 확인 참조번호",
    "overageRetryReferenceHint": "Paddle 요청·지원 티켓 등 확인 가능한 참조번호",
    "overageRetryNote": "재처리 근거",
    "overageRetryNoteHint": "거절과 중복 요금 부재를 확인한 방법을 20자 이상 기록하세요",
    "overageRetryApprove": "재처리 승인",
    "overageRetryReconcileFirst": "사용량 사후 대사를 먼저 처리하세요",
    "overageRetryApprovedAt": "재처리 승인",
    "overageRetryQueued": "승인 후 사용량·구독 재계산을 기다리고 있습니다",
    "overageRetryReviewNeeded": "재계산 후 수동 검토가 필요합니다",
    "subscriptions": "구독",
    "noSubs": "구독이 없습니다",
    "colWorkspace": "워크스페이스",
    "colAction": "작업",
    "colPlan": "플랜",
    "colSeats": "시트",
    "colMrr": "MRR",
    "colRenews": "갱신일",
    "linked": "연결됨",
    "notLinked": "미연결",
    "overageByPeriod": "기간별 초과 청구",
    "colPeriod": "기간",
    "charged": "청구됨",
    "pending": "대기",
    "failed": "실패",
    "colCount": "건수",
    "recentInvoices": "최근 초과 인보이스",
    "colAmount": "금액",
    "colReason": "비고",
    "periodLabel": "기간",
    "aiCostTotal": "AI 원가 합계",
    "blendedMargin": "통합 마진",
    "marginTarget": "목표 70% 이상",
    "thinMargin": "마진 70% 미만",
    "thinMarginHint": "가격표 재검토 신호",
    "fxNote": "원가는 USD 기준이며 ₩{{rate}}/$ 고정 환율로 환산했습니다 (USD_KRW_RATE).",
    "orphanUsage": "삭제된 워크스페이스의 잔여 사용량 {{n}}건 (AI {{ai}}건 · MAU {{mau}}명 · {{cost}})은 위 표에서 제외했습니다",
    "usageByWorkspace": "워크스페이스별 사용량·원가",
    "noUsage": "이번 기간 사용 기록이 없습니다",
    "colAi": "AI",
    "colMau": "MAU",
    "colCost": "원가",
    "colRevenue": "매출",
    "colMargin": "마진",
    "searchUser": "이름 또는 이메일 검색",
    "userCount": "{{n}}명",
    "noUsers": "사용자가 없습니다",
    "colRole": "역할",
    "unverified": "미인증",
    "searchWorkspace": "이름 또는 슬러그 검색",
    "wsCount": "{{n}}개",
    "noWorkspaces": "워크스페이스가 없습니다",
    "colName": "워크스페이스",
    "colMembers": "멤버",
    "colChats": "상담",
    "unassigned": "미배정",
    "activeManagers": "활성 관리자/매니저",
    "noQueueOwner": "알림 받을 관리자 없음",
    "deletionRequestsOnly": "삭제 요청만",
    "deletionRequested": "삭제 요청 · {{date}}까지 회신",
    "ownerlessQueueDetail": "미배정 상담 {{count}}건이 있지만 알림을 받을 활성 관리자/매니저가 없습니다.",
    "colCreated": "생성일",
    "view": "보기",
    "workspace": "워크스페이스",
    "noSub": "구독 없음",
    "usageVsAllowance": "사용량 / 포함량",
    "aiRepliesShort": "AI 답변",
    "aiCostLabel": "AI 원가",
    "overageHistory": "초과 청구 내역",
    "membersTitle": "멤버 {{n}}명",
    "outboundEmail": "메일 발송",
    "emailNotConfigured": "SMTP가 설정되지 않았습니다 — 인증·비밀번호 재설정·초대 메일이 발송되지 않습니다",
    "aiProvider": "AI 제공자",
    "aiNotConfigured": "AI 키가 없습니다 — 자동응답이 도움말 발췌로만 동작합니다",
    "webhookDeliveries": "결제 웹훅 수신",
    "billingChanges": "결제 변경 확인 대기",
    "billingChangesAttention": "결과를 확인 중인 구독 변경 {{count}}건 — 결제사 상태를 확인하세요",
    "billingChangesClear": "확인 대기 중인 구독 변경이 없습니다",
    "billingChangeTarget": "요청한 플랜·좌석",
    "billingChangeStarted": "요청 시각",
    "billingChangeLastChecked": "마지막 확인",
    "billingChangeCheck": "Paddle 확인",
    "billingChangeReconciled": "결제사 구독 상태를 동기화했습니다",
    "billingChangeReleased": "변경 미적용을 확인하고 잠금을 해제했습니다",
    "billingChangeReviewReady": "미적용 검토 가능",
    "billingChangeReviewPending": "확인 계속 필요",
    "billingChangeComparison": "내부 기록: {{localPlan}} {{localSeats}}석 · Paddle: {{providerPlan}} {{providerSeats}}석",
    "billingChangeProviderUpdated": "Paddle 마지막 변경",
    "billingChangeReleaseGuidance": "Paddle 구독 변경 이력 또는 지원 사례를 확인한 뒤 근거 번호와 검토 내용을 기록하세요. 잠금 해제 후 고객이 다시 구독을 변경할 수 있습니다.",
    "billingChangeReference": "Paddle 변경 이력 ID 또는 지원 사례 번호",
    "billingChangeNote": "검토 내용 (20자 이상)",
    "billingChangeRelease": "변경 미적용 확인·잠금 해제",
    "billingChangeReason": {
      "providerIdMismatch": "결제사 구독 ID가 달라 해제할 수 없습니다",
      "unknownPrice": "결제사 가격을 해석할 수 없어 해제할 수 없습니다",
      "inactiveProvider": "결제사 구독이 활성 상태가 아닙니다",
      "localMismatch": "내부 구독과 결제사 상태가 다릅니다",
      "missingTimestamp": "결제사의 마지막 변경 시각이 없습니다",
      "providerChanged": "요청 뒤 결제사 구독이 변경됐습니다. 변경 이력을 검토하세요",
      "tooRecent": "요청 후 30분이 지나야 미적용 여부를 검토할 수 있습니다",
      "secondObservation": "동일한 결제사 상태를 5분 이상 간격으로 두 번 확인해야 합니다",
      "reconciliationPending": "목표 상태를 확인했지만 내부 동기화가 끝나지 않았습니다",
      "unknown": "결제사 상태를 다시 확인하세요"
    },
    "webhookAttention": "실패·미해결·오래 멈춘 수신 {{n}}건 — 결제 반영 상태를 확인하세요",
    "webhookAllClear": "주의가 필요한 수신이 없습니다",
    "webhookAttentionFilter": "주의 필요",
    "webhookStaleReceived": "10분 넘게 멈춤",
    "webhookMore": "{{shown}} / {{total}}건 표시 · 더 보기",
    "webhookNone": "아직 수신된 결제 웹훅이 없습니다",
    "webhookNoneWithStatus": "이 상태의 수신이 없습니다",
    "webhookNoWorkspace": "알 수 없음",
    "webhookRetry": "다시 처리",
    "webhookTransactionRetry": "거래 다시 대사",
    "webhookTransactionNoEvidence": "이전 수신의 거래 증거가 없어 다시 대사할 수 없습니다. Paddle 거래 조회 권한으로 확인하세요.",
    "webhookRetried": "재처리 결과: {{status}}",
    "webhookBindPlaceholder": "워크스페이스 ID 를 지정해 연결",
    "colReceived": "수신",
    "colType": "종류",
    "colDetail": "내용",
    "webhookStatus": {
      "applied": "반영됨",
      "ignored": "무시됨",
      "unresolved": "주인 불명",
      "failed": "실패",
      "received": "처리 중"
    },
    "timezone": "시간대",
    "tzNotPinned": "{{zone}} (호스트에서 물려받음 — TZ 가 고정돼 있지 않습니다)",
    "confirmedAiCost": "확인된 AI 원가",
    "unconfirmedAiCost": "비용 확인이 필요한 AI 호출 {{count}}건이 있습니다. 확인된 원가만 표시하며 마진은 확인이 끝날 때까지 표시하지 않습니다.",
    "unconfirmedCallCount": "미확인 {{count}}건",
    "deliveryAlerts": {
      "title": "전달 알림 처리 상태",
      "help": "각 전달 알림 점검을 독립적으로 실행합니다. 작업 누락·실패·지연은 상담 API의 준비 상태와 별도로 표시합니다.",
      "refresh": "알림 처리 상태 새로 조회",
      "checking": "알림 처리 상태 조회 중…",
      "unavailable": "알림 처리 상태를 조회하지 못했습니다. 현재 상태를 확인할 수 없습니다.",
      "unknown": "현재 공유된 작업자 상태를 확인할 수 없습니다.",
      "instances": "등록된 작업자 {{total}}개 중 정상 {{healthy}}개",
      "expected": "최소 작업자 {{n}}개 예상",
      "checked": "{{at}} 기준",
      "instance": "작업자",
      "phase": "점검",
      "state": "상태",
      "lastSuccess": "마지막 정상 완료",
      "completionAge": "완료 후 경과",
      "failureCount": "실패",
      "duration": "처리 시간",
      "consecutive": "연속 {{n}}회",
      "thresholds": "완료 기록 없이 60초가 지나면 지연으로 표시합니다. 메일 처리는 150초를 기준으로 합니다.",
      "latency": "알림함 저장 지연",
      "samples": "실제 기록된 알림 표본 {{n}}개",
      "upper": "{{n}} 이하",
      "overDay": "24시간 초과",
      "within": "60초 안에 저장된 표본 {{percent}}%",
      "invalidTiming": "시각 근거가 유효하지 않은 표본 {{n}}개를 제외했습니다.",
      "sampleHelp": "현재 작업자가 시작된 이후 최근 1시간, 작업자당 저장 완료된 알림 최대 500건입니다. 재시작하면 표본이 초기화됩니다. 백분위는 히스토그램 상한값이며 소켓 전달·운영자 읽음·고객 수신을 증명하지 않습니다.",
      "statuses": {
        "ok": "정상",
        "checking": "조회 중",
        "starting": "시작 중",
        "stale": "지연",
        "degraded": "문제 있음",
        "stopped": "중지",
        "unknown": "미확인"
      },
      "phases": {
        "uncertain": "미확인 전달",
        "terminal": "실패 전달",
        "evidence": "새 제공자 사실",
        "email": "알림 메일"
      },
      "latencyUnavailable": "알림 저장 지연 측정값을 조회할 수 없습니다."
    },
    "notificationEmailReview": {
      "providerMailTime": "원래 메일의 발신 시각: {{at}}",
      "title": "알림 메일 결과 검토",
      "help": "원래 요청과 검증된 근거로 SMTP 미확인 결과와 메일 제공자의 문제를 검토합니다.",
      "refresh": "메일 검토 목록 새로고침",
      "filter": "메일 검토 상태",
      "filters": {
        "open": "검토 필요",
        "reviewed": "수동 검토 완료",
        "all": "검토 대상 메일 전체"
      },
      "workspace": "조직",
      "created": "알림 생성",
      "status": "검토 상태",
      "action": "조치",
      "needsReview": "검토 필요",
      "reviewed": "수동 검토 완료",
      "inspect": "메일 확인",
      "empty": "이 검토 상태에 해당하는 알림 메일이 없습니다.",
      "more": "메일 더 보기",
      "loading": "현재 메일 기록을 불러오는 중…",
      "queueError": "메일 목록을 불러오지 못했습니다. 새로고침해 다시 확인해 주세요.",
      "recoveryError": "저장된 검토 요청을 확인하지 못했습니다. 복구에 성공할 때까지 결과 기록을 사용할 수 없습니다.",
      "savedRequest": "저장된 메일 검토 요청의 결과를 확인해 주세요.",
      "restore": "저장된 메일 검토 복구",
      "detailTitle": "알림 메일 결과 검토",
      "scope": "관리자 알림 메일에 대해 실제 확인한 결과를 기록합니다. 메일 재발송·고객 답변 변경·보류된 발신 해제를 실행하지 않습니다.",
      "originalMessage": "원래 고객 답변 참조",
      "smtpUnknown": "원래 SMTP 결과 미확인 유지",
      "attempt": {
        "recipient": "발송 당시 수신 주소",
        "host": "발송 당시 SMTP 서버",
        "messageId": "원래 RFC Message-ID",
        "at": "발신 시도 시작"
      },
      "legacy": "발송 당시 주소·요청 정보가 기록되지 않았거나 보관 기간이 끝났습니다. 현재 계정의 주소를 원래 수신 주소로 판단하지 않습니다.",
      "acceptanceHelp": "SMTP 승인은 메일 서버가 요청을 받아들였다는 뜻입니다. 수신함 도착이나 읽음을 증명하지 않습니다. 확인한 제공자 기록이나 수신자의 근거를 적어 주세요.",
      "facts": {
        "accepted": "SMTP 승인 관측",
        "rejected": "SMTP 거절 관측",
        "unknown": "결과 미확인",
        "not_sent": "SMTP 요청 미발신"
      },
      "outcome": "확인한 메일 결과",
      "outcomes": {
        "accepted": "SMTP 승인 수동 확인",
        "not_accepted": "SMTP 미승인 수동 확인",
        "provider_issue_handled": "제공자 문제 확인 및 대응 기록"
      },
      "evidence": "확인한 근거 (10–1,000자)",
      "prepare": "검토 내용을 확인용으로 저장",
      "apply": "저장된 결과 기록",
      "acknowledge": "저장된 결과 확인 완료",
      "requestStates": {
        "prepared": "검토 저장 완료 · 결과는 아직 적용하지 않았습니다.",
        "applied": "수동 검토를 기록했습니다. 원래 SMTP 상태는 유지합니다.",
        "cancelled": "저장된 검토를 취소했습니다."
      },
      "readError": "현재 메일 사실과 검토 이력을 불러오지 못해 결과를 기록할 수 없습니다.",
      "mutationUnknown": "저장된 요청의 결과를 확인하지 못했습니다. 적용하거나 취소하기 전에 다시 확인해 주세요.",
      "changed": "새 사실이나 다른 검토로 상태가 바뀌었습니다. 저장된 검토를 취소하고 메일을 다시 열어 현재 사실을 검토해 주세요.",
      "checkRequest": "저장된 메일 검토 요청 확인",
      "cancelRequest": "저장된 메일 검토 취소",
      "retryPrepare": "같은 검토 저장 재시도",
      "refreshFacts": "메일 사실 새로고침",
      "history": "기록된 검토 이력",
      "moreHistory": "메일 검토 이력 더 보기",
      "superseded": "새 사실이나 이후 검토로 대체됨",
      "providerConfigured": "새 발신 시도에 SES 추적 설정을 사용합니다. 설정만으로 실제 이벤트 수신을 증명하지는 않습니다.",
      "providerNotConfigured": "SES 이벤트 추적이 설정되지 않았습니다. 제공자 결과는 미확인으로 유지합니다.",
      "smtpRecorded": "원래 SMTP 상태 유지: {{state}}",
      "providerHistory": "서명 검증된 SES 이벤트",
      "providerHelp": "Delivery는 수신 메일 서버의 접수를 뜻하며 수신함 도착이나 읽음을 증명하지 않습니다. 신고 기록은 실제 신고자를 숨길 수 있습니다.",
      "providerNoFacts": "이 시도의 검증된 이벤트 보관 기록이 없습니다. 전달 결과를 판단할 수 없습니다.",
      "providerUntracked": "원래 시도에 SES 추적 설정의 보관 기록이 없습니다. 현재 설정으로 과거 근거를 대신하지 않습니다.",
      "providerMessageId": "SES 메시지 식별자",
      "moreProviderHistory": "SES 이벤트 더 보기",
      "providerStates": {
        "accepted": "SES 접수",
        "delayed": "전달 지연",
        "delivered": "수신 서버 접수",
        "bounced": "반송",
        "rejected": "SES 거절",
        "rendering_failed": "메일 생성 실패",
        "complained": "신고 기록 관측"
      },
      "providerEvents": {
        "Send": "SES 접수",
        "DeliveryDelay": "전달 지연",
        "Delivery": "수신 서버 접수",
        "Bounce": "반송",
        "Reject": "SES 거절",
        "Rendering Failure": "메일 생성 실패",
        "Complaint": "신고 기록 관측"
      }
    },
    "deliveryOutcomes": {
      "providerIssues": "제공자 문제 {{count}}건 · 검토 필요 {{open}}건 (원래 SMTP 상태 유지)",
      "title": "전달 알림 처리 결과",
      "refresh": "알림 처리 결과 새로고침",
      "help": "작업 완료와 실제 알림 처리는 별개입니다. 현재 알림 대상인 발생과 저장 완료된 알림의 보관 기록을 확인합니다.",
      "statuses": {
        "checking": "확인 중",
        "unknown": "미확인",
        "attention": "확인 필요",
        "pending": "대기 중",
        "clear": "미처리 알림 없음"
      },
      "checking": "알림 처리 결과를 조회하고 있습니다…",
      "unavailable": "알림 처리 결과를 조회하지 못했습니다. 이전 건수는 지웠습니다. 새로고침으로 다시 확인하세요.",
      "unknown": "일부 측정값을 조회할 수 없습니다. 미확인 값은 0건이 아닙니다.",
      "checked": "조회 시각 {{at}}",
      "kind": "발생 유형",
      "eligible": "현재 발생",
      "waiting": "알림 저장 대기",
      "overdue": "60초 초과",
      "withoutRecipient": "알림 대상 없음",
      "oldest": "가장 오래된 대기 기한",
      "kinds": {
        "uncertain": "전달 결과 미확인",
        "terminal": "전달 실패",
        "evidence": "새 제공자 사실"
      },
      "unmeasured": "측정 불가",
      "timingUnknown": "{{n}}건의 시각을 측정할 수 없습니다",
      "coverageHelp": "수신자 수가 아닌 발생 건수입니다. 현재 권한이 있는 대상 중 한 명이라도 이번 회차의 저장 접수증이 없으면 대기입니다. 기한이 지난 재알림과 지정 대상의 권한 상실도 포함합니다. 접수증은 운영자의 읽음을 증명하지 않으며 삭제되거나 비활성인 부모는 제외합니다.",
      "reviewCounts": "검토 필요 {{open}}건 · 수동 검토 완료 {{reviewed}}건 (원래 SMTP 상태 유지)",
      "emailTitle": "미확인 전달 경고 메일",
      "emailUnknown": "메일 처리 결과를 조회할 수 없습니다.",
      "emailStates": {
        "pending": "발송 대기 메일: {{n}}건",
        "sending": "처리 중인 메일: {{n}}건",
        "uncertain": "원래 SMTP 결과 미확인: {{n}}건"
      },
      "oldestEmail": "최초 대기 시각 {{at}}",
      "emailOverdue": "{{n}}건이 처리 기준을 초과했습니다",
      "emailHelp": "대기는 60초, 처리는 150초 이후 지연으로 표시합니다. 원래 전달 문제를 해결해도 미확인 메일은 미확인으로 남습니다. 여기서 메일을 재발송하거나 전달 완료로 바꾸지 않습니다.",
      "retainedTitle": "보관 중인 알림 생성 지연",
      "retainedUnknown": "보관 중인 알림 측정값을 조회할 수 없습니다.",
      "samples": "보관된 알림 표본 {{n}}건",
      "within": "측정된 기록 중 {{percent}}%가 60초 안에 생성됐습니다",
      "upper": "≤ {{n}} ms",
      "overDay": "24시간 초과",
      "expiredClaims": "발송 임대 만료 {{n}}건",
      "retainedHelp": "성공한 알림 트랜잭션에서 최근 1시간에 생성된 기록을 측정합니다. 기록은 90일 보관하며 작업자 재시작 후에도 유지합니다. 메시지·고객 삭제 시 해당 기록도 지웁니다. 지연은 알림 기록 생성 시각으로 계산하므로 트랜잭션 커밋 대기는 제외하며 백분위는 히스토그램 상한값입니다. 미처리 발생·소켓 전달·운영자 읽음·고객 수신은 이 표본에 포함하지 않습니다."
    },
    "paymentProvider": "결제 사업자",
    "xsollaLedgerNote": "서명된 결제 알림에 보고된 금액입니다. 잔액 정산과 세금·수수료를 반영한 실제 수금액은 Xsolla 거래·정산 보고서와 대조해 주세요.",
    "amount": "금액",
    "refundReview": "부분 환불 검토",
    "paymentPaid": "결제 확인",
    "paymentRefunded": "환불 확인",
    "xsollaSettlements": "Xsolla 구독 변경 적용",
    "xsollaSettlementNote": "Xsolla가 완료로 확인한 구독 변경입니다. 표시 금액은 변경 후 정기 요금이며 잔액 충당분을 현금 매출로 합산하지 않습니다.",
    "contractAmount": "변경 후 정기 요금",
    "settlementApplied": "적용 확인",
    "xsollaPendingChanges": "Xsolla 변경 확인 대기",
    "checkoutWaiting": "고객 확인 대기",
    "settlementPending": "처리 결과 확인 중",
    "checkAgain": "다시 확인"
  },
  "onboarding": {
    "title": "시작하기",
    "subtitle": "{{n}}단계 남았습니다",
    "live": "대화 수신 중",
    "notLive": "아직 대화 없음",
    "required": "필수",
    "copySnippet": "스니펫 복사",
    "widgetSettings": "위젯 설정",
    "go": "이동",
    "step": {
      "install": "위젯 설치",
      "knowledge": "지식베이스 만들기",
      "invite": "팀원 초대",
      "hours": "운영 시간 설정"
    },
    "why": {
      "install": "이 스니펫을 사이트에 넣어야 방문자가 대화를 시작할 수 있습니다. 이것 없이는 아무것도 시작되지 않습니다",
      "knowledge": "AI 자동응답은 지식베이스 문서를 근거로 답합니다. 문서가 없으면 모든 문의가 상담원에게 넘어갑니다.",
      "invite": "상담을 나눠 받을 팀원을 초대하세요",
      "hours": "영업시간 밖에는 자동으로 부재중 안내를 보냅니다."
    },
    "needsUpgrade": "상위 플랜 필요",
    "installSeen": "설치 확인됨"
  },
  "platform": {
    "title": "플랫폼 · 운영",
    "adminOnly": "관리자 전용",
    "adminOnlyDesc": "배포·운영 콘솔은 관리자만 접근할 수 있습니다",
    "subtitle": "설계된 배포·운영·비용 구조를 확인하고 안전한 범위에서 관리합니다.",
    "overview": "개요 · 상태",
    "env": "환경",
    "version": "버전 / SHA",
    "uptime": "업타임",
    "queue": "큐",
    "onlineAgents": "온라인 상담원",
    "architecture": "아키텍처",
    "component": "컴포넌트",
    "placement": "배치",
    "scaling": "스케일링",
    "autoDeploy": "자동 배포",
    "approvalDeploy": "승인 배포",
    "cost": "비용 · 거버넌스",
    "estMonthly": "예상 월 비용 (USD)",
    "budgets": "예산 알림",
    "reporting": "리포팅",
    "requiredTags": "필수 비용 태그",
    "operations": "운영 · 큐 관리",
    "opsNote": "인프라 변경(Terraform/EKS/Atlas)은 CI·Terraform으로만 수행됩니다. 여기서는 앱이 소유한 안전한 작업만 가능합니다.",
    "resume": "재개",
    "pause": "일시정지",
    "retryFailed": "실패 재시도",
    "docs": "문서 · 링크",
    "docsNote": "상세 설계는 저장소의 ARCHITECTURE / RUNBOOK / COST / FINOPS 문서를 참고하세요",
    "demos": {
      "title": "기능 데모 영상",
      "subtitle": "전 기능을 {{resolution}}로 촬영한 클립입니다. 썸네일을 누르면 그 자리에서 재생됩니다.",
      "lastRecorded": "마지막 촬영: {{at}}",
      "emptyTitle": "아직 촬영된 영상이 없습니다",
      "emptyBefore": "서버에서",
      "emptyAfter": "를 실행하면 기능별 클립이 생성되고 이 화면에 나타납니다.",
      "playAria": "{{title}} 재생",
      "notRecorded": "미촬영",
      "console": "콘솔",
      "public": "공개"
    }
  },
  "presence": {
    "label": "응대 상태",
    "online": "응대 가능",
    "away": "자리 비움",
    "busy": "다른 업무 중"
  },
  "audit": {
    "title": "삭제 기록",
    "description": "되돌릴 수 없는 삭제가 언제 누구에 의해 일어났는지 남깁니다",
    "deleted": "삭제",
    "empty": "아직 삭제된 항목이 없습니다",
    "loadFailed": "삭제 기록을 불러오지 못했습니다",
    "showAll": "전체 {{count}}건 보기",
    "removedChats": "대화",
    "removedMessages": "메시지",
    "removedNotes": "내부 메모",
    "removedQuality": "품질 기록",
    "removedFiles": "첨부",
    "roleChanged": "권한 변경",
    "memberDeactivated": "접근 해제",
    "memberReactivated": "접근 복구",
    "exported": "반출",
    "redactedSubject": "파기된 고객"
  },
  "drafts": {
    "conflict": {
      "choiceFailed": "초안 선택을 저장하지 못했습니다. 모든 버전은 보존됩니다. 저장소를 확인한 뒤 다시 시도하세요.",
      "reply": "다른 탭의 답변 초안과 내용이 다릅니다",
      "note": "다른 탭의 메모 초안과 내용이 다릅니다",
      "body": "두 초안을 모두 보존했습니다. 내용을 비교하고 하나를 선택한 뒤 수정하거나 전송하세요.",
      "pending": "저장 결과를 확인하지 못한 메모 요청이 있습니다. 해당 초안을 열어 원래 요청의 결과를 확인하거나 취소한 뒤 다른 버전을 선택하세요.",
      "changed": "검토 중 초안이 변경되었습니다. 두 버전은 그대로 보존됩니다. 다시 비교해 주세요.",
      "version": "초안 {{count}}",
      "empty": "빈 초안 · 다른 탭에서 전송하거나 지웠을 수 있습니다",
      "mentions": "언급 대상 {{count}}명 선택",
      "openPending": "요청 확인할 초안 열기",
      "choose": "이 초안 사용",
      "download": "모든 버전 다운로드",
      "confirmTitle": "이 초안을 사용할까요?",
      "confirmBody": "선택한 글·언급 대상·첨부를 유지하고, 여기에 표시된 다른 버전은 버립니다. 메시지나 메모가 전송되지는 않습니다. 다른 버전도 보관하려면 먼저 모두 다운로드하세요.",
      "selected": "선택한 초안"
    },
    "attachments": "이동 전에 원본 파일과 초안 보관 상태를 확인하세요.",
    "files": {
      "body": "원본 파일은 이 계정의 이 브라우저에 보관됩니다. 이동 전에 초안 보관 상태를 확인하세요.",
      "unsaved": "일부 원본 파일을 보관하지 못했습니다. 탭을 유지하고 보관을 재시도하거나 복사본을 다운로드하세요. 내보내기에는 누락된 원본이 표시됩니다.",
      "missing": "일부 원본 파일을 불러오지 못해 전송을 막았습니다. 이전 전송 결과를 확인한 뒤 누락된 항목을 삭제하고 원본을 다시 첨부하세요.",
      "only": "첨부만 있는 초안",
      "download": "{{name}} 다운로드",
      "exportIncomplete": "본문과 읽을 수 있는 원본을 다운로드했습니다. 일부 원본은 없거나 읽지 못해 내보낸 파일에 이름과 누락 사유를 표시했습니다. 탭을 유지하고 이동 전에 해당 파일을 따로 다운로드하거나 다시 선택하세요.",
      "exportFailed": "초안 다운로드에 실패했습니다. 탭을 유지하고 다시 시도하거나 각 원본을 따로 다운로드하세요."
    },
    "loading": "이 기기의 초안을 불러오는 중입니다.",
    "saving": "초안을 저장하는 중입니다. 잠시 기다려 주세요.",
    "saved": "초안을 이 기기에 저장했습니다. 다른 기기에는 동기화되지 않습니다.",
    "unsaved": "초안을 저장하지 못했습니다. 이 탭에는 남아 있지만 새로고침하거나 닫으면 잃을 수 있습니다.",
    "unreadable": "기존 초안을 모두 읽지 못했습니다. 저장소 접근을 복구한 뒤 다시 확인해 주세요.",
    "retry": "초안 저장 재시도",
    "download": "초안 다운로드",
    "noteFailed": "메모 저장을 확인하지 못했습니다. 입력한 내용은 그대로 남아 있습니다.",
    "recoveryTitle": "이동 전에 초안을 보관해 주세요",
    "recoveryBody": "아직 저장하지 못한 초안이 있어 확인하는 동안 상담 화면을 잠갔습니다. 저장을 재시도하거나 파일로 내려받은 뒤 이동할 수 있습니다. 파일에는 고객에게 보내지 않은 답변과 내부 메모가 포함됩니다.",
    "continue": "저장되지 않은 내용 손실을 감수하고 이동"
  },
  "aiReviews": {
    "title": "AI 답변 검토",
    "subtitle": "고객에게 보낼 제안을 확인하고 필요하면 수정한 뒤, 읽어 본 답변을 승인하세요.",
    "reviewTitle": "AI 답변 검토",
    "openChat": "상담 열기",
    "customerMessage": "고객 메시지",
    "noMessage": "원본 메시지가 기록되지 않았습니다. 판단 전에 상담을 확인하세요.",
    "originalReply": "AI 원본 제안",
    "originalTemplate": "원본 템플릿 제안",
    "responseTemplate": "응답 템플릿",
    "templateSource": "응답 템플릿: {{name}}",
    "templateHint": "저장한 응답 템플릿에서 만든 제안입니다. 최신 정책과 고객 상황을 확인한 뒤 승인하세요.",
    "classificationConfidenceHint": "의도 분류 신뢰도는 추정치이며 템플릿 답변의 정확성을 보장하지 않습니다.",
    "noKnowledgeSource": "답변에 사용할 지식 자료가 없습니다. 정책·가격·기간을 확인한 뒤 승인하세요.",
    "unsupportedNumericClaim": "제안 답변에 지식 자료에서 확인되지 않은 숫자가 있습니다. 기간·가격·수량을 확인한 뒤 승인하세요.",
    "unverifiedActionClaim": "제안 답변이 작업 완료를 주장하지만 AI는 작업을 실행하지 않았습니다. 실제 처리 상태를 확인하고 수정하세요.",
    "unsupportedLink": "제안 답변에 자료에서 확인되지 않았거나 공개 HTTPS 주소가 아닌 링크가 있습니다. 주소를 확인한 뒤 승인하세요.",
    "confidenceHint": "AI 신뢰도는 추정치이며 답변의 정확성을 보장하지 않습니다.",
    "replyToSend": "보낼 답변",
    "editHint": "수정 내용은 전송하거나 이 검토를 닫을 때까지 유지됩니다. 승인 전에 현재 상담을 확인하세요.",
    "reason": "사유 (선택)",
    "approve": "승인하고 보내기",
    "reject": "거절하고 담당하기",
    "dismiss": "제안만 폐기",
    "checkResult": "현재 결과 확인",
    "retrySame": "같은 판단 다시 요청",
    "modifiedResult": "수정 답변 접수 완료",
    "acceptedResult": "답변 접수 완료",
    "decidedBy": "검토자",
    "formerMember": "이전 팀원",
    "takenOver": "제안을 거절하고 검토자에게 상담을 배정했습니다.",
    "dismissed": "제안을 폐기했습니다. 상담 배정은 유지됩니다.",
    "readError": "현재 검토 상태를 확인하지 못했습니다. 새로고침한 뒤 판단하세요.",
    "actionError": "판단을 접수하지 못했습니다. 현재 결과와 답변을 확인하세요.",
    "changed": "제안이나 상담이 바뀌었거나 다른 사람이 이미 판단했습니다. 현재 결과를 확인하세요.",
    "unconfirmed": "이 판단의 처리 결과를 확인하지 못했습니다.",
    "uncertainHint": "먼저 결과를 확인하세요. 다시 요청해도 같은 판단만 처리하며, 이 제안의 답변을 두 번 보내지 않습니다.",
    "discardConfirm": "검토를 닫을까요? 전송하지 않은 수정 내용은 사라집니다. 이미 요청한 판단은 처리될 수 있으니 이력에서 결과를 확인하세요.",
    "keepEditing": "검토 계속하기",
    "leave": "검토 닫기",
    "empty": "이 목록에 검토 항목이 없습니다.",
    "conversation": "상담",
    "review": "답변 검토",
    "viewResult": "결과 보기",
    "filters": {
      "pending": "검토 대기",
      "all": "전체 검토·이력"
    },
    "states": {
      "pending": "검토 대기",
      "approved": "승인됨",
      "rejected": "거절됨",
      "superseded": "새 제안으로 교체됨",
      "expired": "만료됨",
      "context_changed": "상담 변경됨"
    },
    "blocked": {
      "expired": "24시간이 지난 제안은 보낼 수 없습니다. 상담에서 새 답변을 작성하거나 제안을 폐기하세요.",
      "context_changed": "제안 이후 메시지·상태·배정이 바뀌었습니다. 상담에서 새 답변을 작성하거나 제안을 폐기하세요."
    },
    "delivery": {
      "website": "상담에 저장했습니다.",
      "pending": "전달을 기다리고 있습니다.",
      "sending": "전달 중입니다.",
      "sent": "채널에서 전달을 확인했습니다.",
      "failed": "전달에 실패했습니다. 상담에서 실패 내용을 확인하세요.",
      "uncertain": "전달 결과가 확인되지 않았습니다. 다시 보내기 전에 채널을 확인하세요.",
      "skipped": "전달이 건너뛰어졌습니다. 상담에서 상세 내용을 확인하세요.",
      "partial": "일부만 전달됐습니다. 상담에서 상세 내용을 확인하세요.",
      "retracted": "이 답변은 상담에서 삭제되었습니다."
    }
  },
  "erasureJobs": {
    "visitorRetention": "방문자 보존 정책 · {{days}}일 · 설정 버전 {{revision}}",
    "customerTitle": "고객 삭제 작업",
    "workspaceTitle": "워크스페이스 삭제 작업",
    "operationId": "작업 ID",
    "workspaceId": "워크스페이스 ID",
    "activeCount": "진행 중 {{count}}건",
    "pending": "정리 대기",
    "running": "정리 중",
    "done": "완료",
    "attempts": "시도 {{count}}회",
    "cleanupPending": "첨부 파일 또는 외부 제공자 정리를 기다리고 있습니다.",
    "retrying": "정리 단계 오류가 발생해 자동 재시도합니다.",
    "counts": "대화 {{chats}}건 · 메시지 {{messages}}건 · 파일 {{files}}건 처리",
    "noneActive": "진행 중인 삭제 작업이 없습니다.",
    "moreActive": "추가 작업 {{count}}건이 있습니다. 작업 ID로 상태를 확인하세요.",
    "recent": "최근 완료",
    "loadError": "삭제 작업 상태를 불러오지 못했습니다. 다시 시도해 주세요.",
    "lookupLabel": "작업 ID로 조회",
    "lookupPlaceholder": "24자리 작업 ID",
    "lookup": "조회",
    "lookupResult": "조회 결과",
    "invalidId": "24자리 작업 ID를 입력해 주세요.",
    "notFound": "이 작업 ID를 찾을 수 없거나 조회 권한이 없습니다.",
    "lookupError": "작업 상태를 확인하지 못했습니다. 다시 시도해 주세요."
  },
  "switchPage": {
    "documentTitle": "채널톡에서 Trifrost로 옮기기 — 코드 두 줄 | Trifrost",
    "badge": "채널톡 사용 중인 팀을 위한 안내",
    "title": "채널톡에서 옮길 때 바꾸는 코드는 두 줄입니다",
    "subtitle": "사이트 곳곳의 ChannelIO 호출과 회원 서명 코드는 그대로 둡니다. 스크립트 주소와 키만 바꾸면 같은 버튼, 같은 로그인 회원, 같은 상담 흐름이 Trifrost로 이어집니다.",
    "ctaStart": "무료로 시작하기",
    "ctaHelp": "이전 상담 요청",
    "freeNote": "Free 플랜(상담원 2명, 월 활성 고객 1,000명, AI 답변 50건)에서 결제 없이 먼저 설치해 확인할 수 있습니다.",
    "codeTitle": "바뀌는 것",
    "before": "지금 (채널톡)",
    "after": "옮긴 뒤 (Trifrost)",
    "codeNote": "memberHash를 만드는 서버 코드는 손대지 않고, 서명에 쓰는 비밀키 값만 Trifrost에서 발급한 값으로 바꿉니다. 비밀키를 문자열 그대로 쓰든 hex로 디코딩해 쓰든 둘 다 인정합니다.",
    "stepsTitle": "옮기는 순서",
    "stepsSubtitle": "이 순서대로 하면 로그인한 회원의 고객 기록과 대화가 끊기지 않습니다.",
    "steps": {
      "secret": {
        "title": "회원 인증 비밀키 만들기",
        "body": "콘솔 설정 → 위젯 → 회원 인증에서 비밀키를 발급해 사이트 서버 환경변수에 넣습니다. 비밀키는 한 번만 보이고, 교체하면 이전 키가 24시간 함께 인정됩니다."
      },
      "import": {
        "title": "고객 목록 가져오기",
        "body": "채널톡에서 내려받은 고객 CSV에 회원ID 열을 넣어 올립니다. 각 회원이 처음 로그인하는 순간 가져온 기록으로 바로 연결됩니다. 중복·충돌은 미리보기에서 오류로 막습니다."
      },
      "code": {
        "title": "코드 두 줄 바꾸기",
        "body": "로더의 스크립트 주소와 pluginKey만 바꿉니다. 먼저 스테이징 페이지에서 바꿔 보고, 확인되면 운영 사이트에 반영하세요."
      }
    },
    "keepTitle": "그대로 동작하는 호출",
    "keepBody": "아래 호출과 boot 옵션은 고치지 않아도 같은 의미로 동작합니다. profile의 이름·이메일·mobileNumber는 고객 정보로 들어옵니다.",
    "memberTitle": "로그인 회원은 기기와 상관없이 한 사람",
    "memberBody": "memberId와 memberHash를 서버에서 HMAC-SHA256으로 검증합니다. 같은 회원은 PC와 휴대폰 어디서 문의해도 한 고객 기록, 한 대화로 모이고, 로그인 전에 남긴 익명 대화도 이어집니다.",
    "memberSafety": "서명이 틀리면 익명 방문자로 계속 연결하고 브라우저 콘솔에 이유를 남깁니다. 로그아웃(shutdown)하면 그 브라우저에서 회원 자격이 지워집니다.",
    "gapsTitle": "아직 안 되는 것",
    "gapsSubtitle": "옮기기 전에 확인하세요. 이 중 하나가 꼭 필요하면 이전 상담에서 일정부터 말씀드립니다.",
    "gaps": {
      "kakao": {
        "title": "카카오 상담톡",
        "body": "검증된 카카오 딜러사 게이트웨이 계약이 있어야 연결됩니다. 알림톡 발송 기능은 없습니다."
      },
      "history": {
        "title": "과거 상담 이력 이전",
        "body": "고객 목록·회원 연결과 상담 이력 보관함 이전을 지원합니다. 원본 계정 API 권한이 필요합니다. 선택적으로 파일당 3 MB 이하 첨부를 복사하며 전체 JSON은 6 MB 이내입니다."
      },
      "unsupported": {
        "title": "일부 ChannelIO 호출",
        "body": "openWorkflow, addTags, removeTags, setAppearance, openSupportBot 등은 오류 없이 무시되고 개발자 콘솔에 한 번 안내가 나옵니다."
      },
      "track": {
        "title": "track 이벤트 저장",
        "body": "초기화된 세션과 사이트의 수집 동의 설정 후 track 이벤트를 저장하고 태그 규칙에 연결합니다. 기존 채널톡 캠페인 설정은 별도로 옮겨야 합니다."
      },
      "mobile": {
        "title": "모바일 앱 SDK",
        "body": "iOS·Android·Flutter·React Native SDK는 없습니다. 웹사이트와 모바일 웹은 지원합니다."
      }
    },
    "faqTitle": "자주 묻는 질문",
    "faq": {
      "rollback": {
        "q": "문제가 생기면 되돌릴 수 있나요?",
        "a": "네. 채널톡 계정과 설정은 그대로 남아 있으므로 스크립트 주소와 키를 원래 값으로 되돌리면 바로 채널톡으로 돌아갑니다."
      },
      "price": {
        "q": "비용은 얼마나 드나요?",
        "a": "상담원 수, 월 활성 고객 수, AI 답변 수로 정해집니다. 지금 쓰는 양을 넣어 월 예상액을 확인해 보세요."
      },
      "staging": {
        "q": "운영 사이트를 바꾸기 전에 시험할 수 있나요?",
        "a": "스테이징이나 테스트 페이지 한 곳만 먼저 바꿔 로그인·로그아웃·문의를 확인하세요. 같은 계정으로 휴대폰과 PC에서 문의하면 콘솔의 한 고객·한 대화에 모이는지 보면 됩니다."
      }
    },
    "pricingLink": "요금 계산기 열기",
    "finalTitle": "오늘 스테이징에서 먼저 바꿔 보세요",
    "finalSubtitle": "Free 플랜으로 설치하고, 회원 로그인과 문의가 그대로 이어지는지 확인한 뒤 결정하면 됩니다."
  }
}
