export const ADMIN_SUCCESS = { code: '0000', message: 'OK' };
/**
 * 각 기능에 따른 코드 앞에 두자리
 * 관리자 (01)
 * 기업 (02)
 * FC (03)
 * 인증 (06)
 * 엑셀 (08)
 * 청구서 (09)
 */
export const INVALID_ACCOUNT_ID = { code: 'E0101', message: '아이디 또는 비밀번호를 확인해주세요.' };

// 관리자 (01)
export const NOT_FOUND_ADMIN = { code: 'E0101', message: '존재하지 않는 관리자입니다.' }

// 기업 (02)
export const CONTRACT_DATE_VALIDATION = { code: 'E0201', message: '계약시작일은 계약종료일보다 클 수 없습니다.' }
export const CONTRACT_DATE_DUPLICATE = { code: 'E0202', message: '중복되는 계약이 존재합니다.' }
export const NOT_ACTIVE_AGENCY = { code: 'E0203', message: '계약중이지 않은 기업입니다.' }
export const NOT_FOUND_AGENCY = { code: 'E0204', message: '존재하지 않는 기업입니다.' }
export const CONTRACT_SUBSCRIPTION_USE = { code: 'E0205', message: '구독중인 회원이 있어 삭제할 수 없습니다. (계약코드: #계약코드)' }
export const INVALID_NEXT_PAY_DAY = { code: 'E0206', messsage: '다음구독예정일은 오늘 이후의 날짜부터 가능합니다.' }
export const DELIQUENT_AGENCY_MEMBER = { code: 'E0207', message: '해당 기업은 불량기업이여서 로그인이 불가능합니다.' };

// FC (03)
export const INVALID_LOGIN_ID_FORMAT = { code: 'E0301', message: '로그인아이디 형식이 올바르지 않습니다.'}
export const INVALID_PASSWORD_FORMAT = { code: 'E0302', message: '비밀번호 형식이 올바르지 않습니다.'}

// 광고 (07)
export const NOT_FOUND_MONTH = { code: 'E0701', message: '월에 대한 데이터가 없습니다.' };

// 엑셀 (08)
export const UPLOAD_DATA_NOT_FOUND = { code: 'E0801', message: '업로드 데이터 없음'}
export const DUPLICATE_UPLOAD_FILE_NAME_FOUND = { code: 'E0802', message: '파일 내 중복값 발견 (중복값: #중복코드 #길이)'}
export const NOT_FOUND_REQUIRED_PARAMETER = { code: 'E0803', message: '필수값 누락' };
export const NOT_FOUND_FILE = { code: 'E0804', message: '파일 누락' };
export const FAILED_UPLOAD = { code: 'E0805', message: '업로드 실패'}
export const NOT_FOUND_RECOVERY_DATA = { code: 'E0806', message: '복구할 데이터 없음'}
export const DUPLICATE_LOGINID_IN_AGENCY = { code: 'E0807', message: '이미 등록된 계정이 존재합니다. (로그인 ID: #계정 #길이)'}
export const DUPLICATE_PHONE_IN_AGENCY = { code: 'E0808', message: '이미 등록된 계정이 존재합니다. (전화번호: #계정 #길이)'}
export const DUPLICATE_EMAIL_IN_AGENCY = { code: 'E0809', message: '이미 등록된 계정이 존재합니다. (이메일: #계정 #길이)'}
export const INVALID_LOGIN_ID_FORMAT_IN_EXCEL = { code: 'E0810', message: '올바르지 않은 형식의 값이 존재합니다. (로그인아이디: #입력값 #길이)'}
export const INVALID_PASSWORD_FORMAT_IN_EXCEL = { code: 'E0811', message: '올바르지 않은 형식의 값이 존재합니다. (비밀번호: #입력값 #길이)'}
export const INVALID_PHONE_FORMAT_IN_EXCEL = { code: 'E0812', message: '올바르지 않은 형식의 값이 존재합니다. (전화번호: #입력값 #길이)'}
export const INVALID_EMAIL_FORMAT_IN_EXCEL = { code: 'E0813', message: '올바르지 않은 형식의 값이 존재합니다. (이메일: #입력값 #길이)'}
export const INVALID_FORMAT = { code: 'E0814', message: '올바르지 않은 형식의 값이 존재합니다.'}
export const NOT_FOUND_FC_IN_SUBSCRIBE = { code: 'E0815', message: '등록되지 않은 계정이 존재합니다. (로그인 ID: #계정 #길이)'}

// 청구서 (09)
export const DUPLICATE_INVOICE = { code: 'E0901', message: '이미 존재하는 청구서 입니다.'}

// 영업대리점(10)
export const CONTRACT_CHANNEL_USE = { code: 'E1001', message: '해당 채널을 통해 가입된 회원이 있어 삭제할 수 없습니다. (채널코드: #채널코드)' }
export const CONTRACT_SALES_USE = { code: 'E1002', message: '해당 영업대리점을 통해 가입된 기업이 있어 삭제할 수 없습니다.' };

// 공통(09)
export const DUPLICATE_DATA = { code: 'E0901', message: '중복된 값이 존재합니다.'}
export const UNAUTHORIZED = { code: 'E0601', message: '인증정보가 유효하지 않습니다.' }

// 기업조직/계약 1:N 신규 (task-688)
//* 사전 확정 설계 계약 기준 — 동일 코드가 기존 다른 곳에서 사용 중일 수 있으나, 호출 컨텍스트(조직/계약/회원) 분리로 충돌 없음.
export const INVALID_PARAMETER = { code: 'E0001', message: '필수값이 누락되었거나 형식이 올바르지 않습니다.' };
export const DUPLICATE_CONTRACT_PER_ORG = { code: 'E0202', message: '동일 조직 내 활성 계약이 이미 존재합니다.' };
export const ORG_NOT_FOUND = { code: 'E0301', message: '존재하지 않는 조직입니다.' };
export const ORG_AGENCY_MISMATCH = { code: 'E0302', message: '해당 조직은 지정한 기업 소속이 아닙니다.' };
export const MEMBER_ORG_REQUIRED = { code: 'E0303', message: '회원의 소속 조직(orgId)이 지정되지 않았습니다.' };
export const ORG_HAS_ACTIVE_MEMBERS = { code: 'E0304', message: '조직에 활성 회원이 존재하여 삭제할 수 없습니다.' };
export const ORG_HAS_ACTIVE_CONTRACTS = { code: 'E0305', message: '조직에 활성 계약이 존재하여 삭제할 수 없습니다.' };
export const PRODUCT_NOT_FOUND_OR_INACTIVE = { code: 'E0306', message: '존재하지 않거나 비활성 상태의 상품입니다.' };
export const CONTRACT_NOT_FOUND = { code: 'E0307', message: '존재하지 않는 계약입니다.' };
export const DUPLICATE_MEMBER_EMAIL = { code: 'E0308', message: '이미 등록된 이메일입니다.' };
export const CROSS_AGENCY_MOVE_FORBIDDEN = { code: 'E0309', message: '다른 기업의 조직으로 이동할 수 없습니다.' };
export const DUPLICATE_ORG_NAME = { code: 'E0310', message: '동일 기업 내 동일 이름의 조직이 이미 존재합니다.' };
//* 조직트리 이동 순환 차단(task: 조직트리 관리) — 자기 자신/자기 하위로 이동 금지.
export const ORG_CIRCULAR_MOVE = { code: 'E0311', message: '조직을 자기 자신 또는 하위 조직으로 이동할 수 없습니다.' };
//* 회원 소속 일괄배정/조직관리자 지정 — 대상 회원 없음/기업 불일치.
export const MEMBER_NOT_FOUND = { code: 'E0312', message: '대상 회원을 찾을 수 없습니다.' };
export const MEMBER_AGENCY_MISMATCH = { code: 'E0313', message: '대상 회원이 조직과 동일한 기업 소속이 아닙니다.' };
export const CORP_FORBIDDEN = { code: 'E0401', message: '기업 권한이 없습니다.' };

// 기업계약 구독계정수(seat) 하한 판정 (후불정산·기업계약 변경안 3-4)
//* 프론트는 code 문자열과 data.{current,after,seat}를 그대로 읽는다 — 계약 유지 필수.
export const SEAT_BELOW_CONTRACT = {
  code: 'SEAT_BELOW_CONTRACT',
  message:
    '계약 구독계정수 하한 미만으로는 처리할 수 없습니다. 내부 관리자에게 요청해주세요.',
};
export const SEAT_BELOW_CONTRACT_WARN = {
  code: 'SEAT_BELOW_CONTRACT_WARN',
  message: '처리 후 활성 구독계정수가 계약 구독계정수 하한 미만이 됩니다.',
};


