이호영 이호영 01-16
Merge branch 'master' of http://hylee@vcs.iten.co.kr:9999/hylee/mjon_git
@cdd0bff537dfe351289e39c54842621aeaf9e98e
 
src/main/java/itn/com/cmm/MjonBTSendVO.java (added)
+++ src/main/java/itn/com/cmm/MjonBTSendVO.java
@@ -0,0 +1,130 @@
+package itn.com.cmm;
+
+import lombok.Getter;
+import lombok.Setter;
+import lombok.ToString;
+
+@Getter
+@Setter
+@ToString
+public class MjonBTSendVO{
+
+	
+	/**
+	 * @description : 수신자번호
+	 */
+	private String  phone;
+
+	/**
+	 * @description : [*이름*] - 치환문자
+	 */
+	private String 	name;
+	
+	/**
+	 * @description : [*1*] - 치환문자
+	 */
+	private String  rep1;
+	
+	/**
+	 * @description : [*2*] - 치환문자
+	 */
+	private String  rep2;
+	
+	/**
+	 * @description : [*3*] - 치환문자
+	 */
+	private String  rep3;
+	
+	/**
+	 * @description : [*4*] - 치환문자
+	 */
+	private String  rep4;
+	
+	/**
+	 * @description : 문자ID
+	 */
+	private String 	msgId;
+
+	/**
+	 * @description : 전송그룹ID (대량문자의 경우 하나의 그룹으로 세팅)
+	 */
+	private String msgGroupId; 
+	
+	/**
+	 * @description : 문자온 일반회원ID
+	 */
+	private String  userId;
+
+	/**
+	 * @description : 발신번호 (하이픈 등의 문자를 제외한 12byte이하의 숫자로 입력한다.)
+	 */
+	private String  callFrom;
+	/**
+	 * @description : 수신번호 (하이픈 등의 문자를 제외한 12byte이하의 숫자로 입력한다.)
+	 */
+	private String  callTo; 
+	/**
+	 * @description : 예약 발송일시
+	 */
+	private String  reqDate;
+	/**
+	 * @description :전송사(04:다우, 05:JJ, 07:IVT, 01:아이하트 , 02:현대퓨처넷, 03:아이엠오) 
+	 */
+	private String  agentCode;
+
+	/**
+	 * @description : MMS용 메시지제목
+	 */
+	private String  subject;
+	
+	/**
+	 * @description : SMS용 메시지본문
+	 */
+	private String  smsTxt;
+
+	/**
+	 * @description : 메세지타입(4: SMS 전송, 5: URL 전송, 6: MMS전송, 7: BARCODE전송, 8: 카카오 알림톡 전송)
+	 */
+	private String  msgType;
+	
+
+	/**
+	 * @description : 첨부파일 갯수
+	 */
+	private String 	fileCnt;
+	
+	/**
+	 * @description : 파일이름1
+	 */
+	private String 	filePath1;
+	
+	/**
+	 * @description : 파일이름2
+	 */
+	private String 	filePath2;
+	
+	/**
+	 * @description : 파일이름3
+	 */
+	private String 	filePath3;
+	
+
+
+	/**
+	 * @description : event 여부 / group tb에 넣는 용도 / 기본값 N 
+	 */
+	private String 	eventYn="N";
+	
+	
+	
+	/**
+	 * @description : 개별단가
+	 */
+	private String 	eachPrice;
+	
+
+	
+	
+	
+	
+}
src/main/java/itn/let/kakao/kakaoComm/KakaoSendUtil.java
--- src/main/java/itn/let/kakao/kakaoComm/KakaoSendUtil.java
+++ src/main/java/itn/let/kakao/kakaoComm/KakaoSendUtil.java
@@ -603,6 +603,313 @@
 		return kakaoSendAdvcListVO;
 	}
 
+	
+	
+
+	public List<KakaoSendAdvcVO> populateSendListsBT(KakaoVO kakaoVO
+														, boolean isHolidayNotified
+														, StatusResponse statusResponse
+														, UserManageVO userManageVO
+														, List<String> resultSpamTxt
+														) throws Exception {
+		
+		//사용자 현재 보유 금액 불러오기(문자 발송 금액 차감 이전 금액)
+//		String befCash = kakaoVO.getBefCash();
+
+		// ftToString bt 같이사용
+		log.info("kakaoVO.ftToString() ::  [{}]", kakaoVO.ftToString());		
+		
+
+		// 예약 시간 기본값 설정
+		Date now = new Date();
+		SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
+		
+		String atSmishingYn = userManageVO.getAtSmishingYn();
+		String exceptSpamYn = userManageVO.getExceptSpamYn();
+		
+		
+		List<KakaoSendAdvcVO> kakaoSendAdvcListVO = new ArrayList<>();
+		// BT 같이 사용함
+		Calendar calendar = setupBaseDateFT(kakaoVO);
+		
+		
+		
+		 // BT 내용
+		String templateContent = kakaoVO.getTemplateContent();
+		 // 실패 대체 문자
+		String subMsgTxt = kakaoVO.getSubMsgTxt();
+		log.info(" + StringUtils.isNotEmpty(subMsgTxt) :: [{}]", StringUtils.isNotEmpty(subMsgTxt));
+		if(StringUtils.isNotEmpty(subMsgTxt)) {
+			kakaoVO.setSubMsgSendYn("Y");
+			
+			// 광고문자면 처리 - 광고 Y
+			if ("Y".equals(kakaoVO.getAdFlag())) {
+				subMsgTxt = "(광고)" + subMsgTxt + "\n" + "무료거부 0808800858";
+			}
+			
+		}
+		
+		
+
+		// 사용자 개인 단가 정보 불러오기
+		MberManageVO mberManageVO = mjonMsgDataService.selectMberManageInfo(kakaoVO.getUserId());
+		// 시스템 기본 단가 정보 불러오기
+		JoinSettingVO sysJoinSetVO = mjonMsgDataService.selectJoinSettingInfo();
+
+		// 카톡 스미싱 yn은 몯 at로 통일
+		kakaoVO.setAtSmishingYn(mberManageVO.getAtSmishingYn());
+
+		// 치환 문구가 있는지 확인
+		Boolean replaceYN = MsgSendUtils.getReplaceYN(templateContent);
+		Boolean replaceSubYN = MsgSendUtils.getReplaceYN(subMsgTxt);
+
+
+/** 리스트명 수정해야함 */
+		/** @MSGID KEY값 */
+		List<String> idList = mjonCommon.getNextCustomMsgCId(kakaoVO.getMjonFTSendVOList().size());
+
+
+		Map<String, Function<MjonFTSendVO, String>> placeholders = new HashMap<>();
+		placeholders.put("[*이름*]", MjonFTSendVO::getName);
+		placeholders.put("[*1*]", MjonFTSendVO::getRep1);
+		placeholders.put("[*2*]", MjonFTSendVO::getRep2);
+		placeholders.put("[*3*]", MjonFTSendVO::getRep3);
+		placeholders.put("[*4*]", MjonFTSendVO::getRep4);
+
+		String imageType = kakaoVO.getImageType();
+/** 단가 수정해야함 */
+		// 개인단가
+		Float kakaoMemberFtPrice = 
+				imageType  == null ? mberManageVO.getKakaoFtPrice() :
+				"I".equals(imageType) ? mberManageVO.getKakaoFtImgPrice() :
+				"W".equals(imageType) ? mberManageVO.getKakaoFtWideImgPrice() :
+				mberManageVO.getKakaoFtPrice();
+		
+		// 시스템단가
+		Float kakaoSysJoinFtPrice = 
+				imageType  == null ? sysJoinSetVO.getKakaoFtPrice() :
+				"I".equals(imageType) ? sysJoinSetVO.getKakaoFtImgPrice() :
+				"W".equals(imageType) ? sysJoinSetVO.getKakaoFtWideImgPrice() :
+				sysJoinSetVO.getKakaoFtPrice();
+
+		Float kakaoFtPrice = 
+				getValidPrice(kakaoMemberFtPrice, kakaoSysJoinFtPrice);
+		
+		// 대체문자가 있을경우 사용 
+		float shortPrice = getValidPrice(mberManageVO.getShortPrice(), sysJoinSetVO.getShortPrice());
+		float longPrice = getValidPrice(mberManageVO.getLongPrice(), sysJoinSetVO.getLongPrice());
+		float picturePrice = getValidPrice(mberManageVO.getPicturePrice(), sysJoinSetVO.getPicturePrice());
+
+		boolean hasPerformedSpamCheck = false; // 치환 문자가 없는 경우, 스팸 체크가 한 번만 수행되도록 제어
+		boolean hasPerformedSubSpamCheck = false; // 치환 문자가 없는 경우, 스팸 체크가 한 번만 수행되도록 제어
+		boolean hasPerformedDelayYn = false; // 치환 문자가 없는 경우, 
+
+
+		
+		String imgFilePath = "";
+		if(StringUtils.isNotEmpty(kakaoVO.getAtchFileId()) &&  
+				("I".equals(imageType) ||	"W".equals(imageType))) {
+			imgFilePath = mjonMsgDAO.selectPhotoImgFileRealPath(kakaoVO.getAtchFileId());
+		}
+		
+		
+
+		/** @jsonStr 필요유무 */
+		boolean hasButtons =  CollectionUtils.isNotEmpty(kakaoVO.getButtonVOList());
+		String sharedJsonStr = null;
+		
+
+		// 치환데이터가 없는 경우 한 번만 계산하기 위한 캐시 변수 추가
+		Map<String, Object> sharedPricingResult = null;
+		// 치환데이터가 없는 경우 for문 전에 한 번만 계산
+		if (!replaceSubYN && StringUtils.isNotEmpty(subMsgTxt)) {
+		    sharedPricingResult = calculateSubMsgPricing(subMsgTxt, imgFilePath, shortPrice, longPrice, picturePrice, kakaoFtPrice);
+		    
+		    // 사전계산에서 INVALID인 경우 즉시 리턴
+		    String preSendType = (String) sharedPricingResult.get("sendType");
+		    if ("INVALID".equals(preSendType)) {
+		        statusResponseSet(statusResponse, HttpStatus.BAD_REQUEST, "전송 문자 길이를 초과하였습니다.");
+		        return kakaoSendAdvcListVO;
+		    }
+		}
+
+
+/** 리스트명 수정해야함 */
+		List<MjonFTSendVO> mjonFTSendVOList = kakaoVO.getMjonFTSendVOList();
+
+		for (int i = 0; i < mjonFTSendVOList.size(); i++) {
+			MjonFTSendVO mjonFTSendVO = mjonFTSendVOList.get(i);
+
+
+/** createFTSendVO 수정해야함 */
+			KakaoSendAdvcVO sendVO = createFTSendVO(kakaoVO, calendar);
+			// 공통 가격 설정
+			sendVO.setSmsPrice(Float.toString(shortPrice));
+			sendVO.setMmsPrice(Float.toString(longPrice));
+			sendVO.setPicturePrice(Float.toString(picturePrice));
+
+			sendVO.setCallTo(mjonFTSendVO.getPhone());
+			sendVO.setMsgId(idList.get(i));
+			
+
+			// 친구톡 문자 
+			String templateContentTemp = templateContent;
+			// 치환 문자면
+			if(replaceYN) {
+				
+				// 각 치환 구문을 확인하고 치환할 값이 없으면 오류 반환
+				for (Map.Entry<String, Function<MjonFTSendVO, String>> entry : placeholders.entrySet()) {
+					String placeholder = entry.getKey();
+					String value = entry.getValue().apply(mjonFTSendVO);
+					if (templateContentTemp.contains(placeholder)) {
+						if (StringUtils.isEmpty(value)) {
+							statusResponseSet(statusResponse, HttpStatus.BAD_REQUEST, "치환 문구중 " + placeholder + " 데이터가 없습니다.");
+							return null;
+						}
+						templateContentTemp = templateContentTemp.replace(placeholder, value);
+					}
+				}
+			}
+			sendVO.setTemplateContent(templateContentTemp);
+			
+			// 실패 대체 문자
+			String subMsgTxtTemp = null;
+			if(StringUtils.isNotEmpty(subMsgTxt)) {
+				subMsgTxtTemp = subMsgTxt;
+				
+				if(replaceSubYN) {
+					// 각 치환 구문을 확인하고 치환할 값이 없으면 오류 반환
+					for (Map.Entry<String, Function<MjonFTSendVO, String>> entry : placeholders.entrySet()) {
+						String placeholder = entry.getKey();
+						String value = entry.getValue().apply(mjonFTSendVO);
+						if (subMsgTxtTemp.contains(placeholder)) {
+							if (StringUtils.isEmpty(value)) {
+								statusResponseSet(statusResponse, HttpStatus.BAD_REQUEST, "치환 문구중 " + placeholder + " 데이터가 없습니다.");
+								return null;
+							}
+							subMsgTxtTemp = subMsgTxtTemp.replace(placeholder, value);
+						}
+					}
+				}
+			}
+			sendVO.setSubMsgTxt(subMsgTxtTemp);
+			
+			
+			//대체문자가 있으면
+			// Step 1-4: 실패 대체 문자 치환데이터 설정
+			if(StringUtils.isNotEmpty(subMsgTxtTemp)) { // 대체문자가 있나?
+				
+				// 최적화된 계산 로직
+				Map<String, Object> pricingResult;
+				
+				if (replaceSubYN) {
+					// 치환데이터 있음 → 매번 새로 계산
+					pricingResult = calculateSubMsgPricing(subMsgTxtTemp, imgFilePath, 
+															shortPrice, longPrice, picturePrice, kakaoFtPrice);
+
+					// INVALID 체크
+					String resultSendType = (String) pricingResult.get("sendType");
+					if ("INVALID".equals(resultSendType)) {
+						statusResponseSet(statusResponse, HttpStatus.BAD_REQUEST, "전송 문자 길이를 초과하였습니다.");
+						return kakaoSendAdvcListVO;
+					}
+				} else {
+					// 치환데이터 없음 → 미리 계산된 결과 재사용
+					pricingResult = sharedPricingResult;
+				}
+				
+				
+				// 결과 적용
+				applyPricingResult(sendVO, pricingResult);
+				
+				
+			}else {
+				// 대체문자가 없으면 카카오톡 단가 그대로 사용
+				sendVO.setEachPrice( Float.toString(kakaoFtPrice) );
+			}
+
+			
+			// 스팸 단어 체크
+			// exceptSpam는 사용자 스팸 단어 체크할건지에 대한 여부 N : 체크
+			if("N".equals(exceptSpamYn)) {
+				// 친구톡 내용
+				if(replaceYN) {
+					checkSpamAndSetStatus(kakaoVO
+							, templateContentTemp
+							, resultSpamTxt, isHolidayNotified);	
+				}else if(!hasPerformedSpamCheck) {
+					checkSpamAndSetStatus(kakaoVO
+							, templateContentTemp
+							, resultSpamTxt, isHolidayNotified);
+					hasPerformedSpamCheck = true;
+				}
+				// 대체문자 내용
+				if(StringUtils.isNotEmpty(subMsgTxtTemp)) { 
+					if(replaceSubYN) {
+						checkSpamAndSetStatus(kakaoVO
+								, subMsgTxtTemp
+								, resultSpamTxt, isHolidayNotified);						
+					}else if(!hasPerformedSubSpamCheck) {
+						checkSpamAndSetStatus(kakaoVO
+								, subMsgTxtTemp
+								, resultSpamTxt, isHolidayNotified);
+						hasPerformedSubSpamCheck = true;
+					}
+
+				}
+			}
+
+			log.info(" kakaoVO.toString() :: [{}]",kakaoVO.ftToString());
+
+			
+			/* @isHolidayNotified
+			 *  - 관리자 알림 설정으로 인해 
+			 *  - 해당 시간이면 지연 미처리
+			 * @smishingYn
+			 *  - 회원 별 '스미싱 온' 상태값
+			 *  - Y면 알림, 지연 처리해야 함
+			 * */
+			if("Y".equalsIgnoreCase(atSmishingYn) && isHolidayNotified) {
+				kakaoVO.setSpamStatus("Y");
+				kakaoVO.setSmishingYn("Y");
+				kakaoVO.setAtDelayYn("Y");
+			}
+			
+			// 지연 여부 처리
+			if (( "Y".equalsIgnoreCase(atSmishingYn) || "Y".equalsIgnoreCase(kakaoVO.getAtDelayYn()))
+					&& !hasPerformedDelayYn && isHolidayNotified) {
+				calendar.add(Calendar.MINUTE, 30); // 모든 시간을 30분 뒤로 미룸
+				// TEST
+//				calendar.add(Calendar.MINUTE, 5); // 모든 시간을 30분 뒤로 미룸
+				hasPerformedDelayYn = true;
+			}
+			
+			sendVO.setReqDate(sdf.format(calendar.getTime())); // 분할된 시간 설정 또는 기본 예약 시간 사용
+			
+			
+			
+
+			// 타이틀이나 버튼이 있고
+			if(hasButtons || StringUtils.isNotEmpty(kakaoVO.getTemplateImageUrl())) {
+				// 
+				if (StringUtils.isEmpty(sharedJsonStr)) {
+					// 치환 데이터가 없고 아직 생성되지 않았으면 한 번만 생성
+					sharedJsonStr = kakaoApiJsonSave.kakaoApiFTJsonSave_advc(kakaoVO);
+					sendVO.setJsonStr(sharedJsonStr);
+				}
+				sendVO.setBizJsonName(idList.get(0));
+				
+			}
+			
+			kakaoSendAdvcListVO.add(sendVO);
+			log.info(" sendVO.toString() :: [{}]",sendVO.toString());
+		}
+
+		
+		return kakaoSendAdvcListVO;
+	}
+
+	
 	private void checkSpamAndSetStatus(KakaoVO kakaoVO
 			, String chkText
 			, List<String> resultSpamTxt, boolean isHolidayNotified) throws Exception {
src/main/java/itn/let/kakao/kakaoComm/KakaoVO.java
--- src/main/java/itn/let/kakao/kakaoComm/KakaoVO.java
+++ src/main/java/itn/let/kakao/kakaoComm/KakaoVO.java
@@ -4,6 +4,7 @@
 import java.util.List;
 import java.util.Map;
 
+import itn.com.cmm.MjonBTSendVO;
 import itn.com.cmm.MjonFTSendVO;
 import itn.let.mjo.msg.service.MjonMsgVO;
 import lombok.Getter;
@@ -266,7 +267,11 @@
 
 	private List<Map<String, String>> varListMap;
 
+	
+	
 	private List<MjonFTSendVO> mjonFTSendVOList = new ArrayList<>();
+	
+	private List<MjonBTSendVO> mjonBTSendVOList = new ArrayList<>();
 	
 	@Override
 	public String toString() {
@@ -304,6 +309,18 @@
 		mjonFTListSb.append("]");
 		
 		
+		
+		StringBuilder mjonBTListSb = new StringBuilder("[");
+		if (mjonBTSendVOList != null && !mjonBTSendVOList.isEmpty()) {
+			String prefix = "";
+			for (MjonBTSendVO vo : mjonBTSendVOList) {
+				mjonBTListSb.append(prefix).append(vo == null ? "null" : vo.toString());
+				prefix = ", ";
+			}
+		}
+		mjonBTListSb.append("]");
+		
+		
 		return "KakaoSendAdvcVO[" +
 			"\n senderKey=[" + senderKey + "]" +
 			"\n , subMsgTxtReplYn=[" + subMsgTxtReplYn + "]" +
@@ -331,6 +348,7 @@
 			"\n , befCash=[" + getBefCash() + "]" +
 			"\n , befPoint=[" + getBefPoint() + "]" +
 			"\n , mjonFTSendVOList=" + mjonFTListSb.toString() +
+			"\n , mjonBTSendVOList=" + mjonBTListSb.toString() +
 			"\n ]";
 	}
 	
 
src/main/java/itn/let/kakao/user/kakaoBt/service/KakaoBrandMsgService.java (added)
+++ src/main/java/itn/let/kakao/user/kakaoBt/service/KakaoBrandMsgService.java
@@ -0,0 +1,12 @@
+package itn.let.kakao.user.kakaoBt.service;
+
+import javax.servlet.http.HttpServletRequest;
+
+import itn.let.kakao.kakaoComm.KakaoVO;
+import itn.let.mail.service.StatusResponse;
+
+public interface KakaoBrandMsgService {
+
+	StatusResponse insertKakaoBtSandAjax_advc(KakaoVO kakaoVO, HttpServletRequest request) throws Exception;
+
+}
 
src/main/java/itn/let/kakao/user/kakaoBt/service/KakaoBrandMsgTemplateService.java (added)
+++ src/main/java/itn/let/kakao/user/kakaoBt/service/KakaoBrandMsgTemplateService.java
@@ -0,0 +1,26 @@
+package itn.let.kakao.user.kakaoBt.service;
+
+import java.util.List;
+
+import itn.let.kakao.kakaoComm.KakaoVO;
+
+public interface KakaoBrandMsgTemplateService {
+
+	//친구톡 템플릿 저장처리
+	int insertKakaoFriendsTemplateData(KakaoVO kakaoVO) throws Exception;
+	
+	//친구톡 템플릿 리스트 불러오기
+	List<KakaoVO> selectKakaoFriendsTemplateList(KakaoVO kakaoVO) throws Exception;
+	
+	//친구톡 템플릿 삭제처리하기
+	int deleteKakaoFriendstalkTemplate(KakaoVO kakaoVO) throws Exception;
+	
+	//친구톡 템플릿 상세정보 조회
+	KakaoVO selectKakaoFriendsTemplateDetail(KakaoVO kakaoVO) throws Exception;
+	
+	//친구톡 템플릿 수정처리하기
+	int updateKakaoFriendsTemplateData(KakaoVO kakaoVO) throws Exception;
+	
+	//친구톡 템플릿 이미지 삭제시 템플릿 데이터 변경 처리
+	int updateKakaoFriendsTemplateImageDataDel(KakaoVO kakaoVO) throws Exception;
+}
 
src/main/java/itn/let/kakao/user/kakaoBt/service/impl/KakaoBrandMsgServiceImpl.java (added)
+++ src/main/java/itn/let/kakao/user/kakaoBt/service/impl/KakaoBrandMsgServiceImpl.java
@@ -0,0 +1,292 @@
+package itn.let.kakao.user.kakaoBt.service.impl;
+
+import java.time.Duration;
+import java.time.Instant;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
+import org.springframework.stereotype.Service;
+
+import egovframework.rte.fdl.cmmn.EgovAbstractServiceImpl;
+import egovframework.rte.fdl.idgnr.EgovIdGnrService;
+import egovframework.rte.fdl.security.userdetails.util.EgovUserDetailsHelper;
+import itn.com.cmm.LoginVO;
+import itn.com.utl.fcc.service.EgovStringUtil;
+import itn.let.kakao.kakaoComm.KakaoSendAdvcVO;
+import itn.let.kakao.kakaoComm.KakaoSendUtil;
+import itn.let.kakao.kakaoComm.KakaoVO;
+import itn.let.kakao.user.kakaoAt.service.impl.KakaoAlimTalkDAO;
+import itn.let.kakao.user.kakaoBt.service.KakaoBrandMsgService;
+import itn.let.mail.service.StatusResponse;
+import itn.let.mjo.mjocommon.MjonCommon;
+import itn.let.mjo.msg.service.MjonMsgVO;
+import itn.let.mjo.msg.service.impl.MjonMsgDAO;
+import itn.let.mjo.msgdata.service.MjonMsgDataService;
+import itn.let.module.base.PriceAndPoint;
+import itn.let.uss.umt.service.EgovUserManageService;
+import itn.let.uss.umt.service.UserManageVO;
+import lombok.extern.slf4j.Slf4j;
+
+@Slf4j
+@Service("KakaoBrandMsgService")
+public class KakaoBrandMsgServiceImpl  extends EgovAbstractServiceImpl implements KakaoBrandMsgService{
+
+	@Resource(name = "egovFriendstalkTemplateIdService")
+	private EgovIdGnrService idgenFriendTalkTmpId;
+
+	@Resource(name="kakaoBrandMsgTemplateDAO")
+	private KakaoBrandMsgTemplateDAO kakaoBrandMsgTemplateDAO;
+
+	@Resource(name="mjonMsgDAO")
+	private MjonMsgDAO mjonMsgDAO;
+	
+	/** userManageService */
+	@Resource(name = "userManageService")
+	private EgovUserManageService userManageService;
+
+	@Resource(name = "egovMjonMsgGroupIdGnrService")
+	private EgovIdGnrService idgenMjonMsgGroupId;
+
+	
+	@Resource(name="kakaoAlimTalkDAO")
+	private KakaoAlimTalkDAO kakaoAlimTalkDAO;
+
+	@Resource(name = "MjonMsgDataService")
+	private MjonMsgDataService mjonMsgDataService;
+	
+	@Autowired
+	KakaoSendUtil kakaoSendUtil;
+	
+	@Autowired
+	private MjonCommon mjonCommon;
+	
+	@Autowired
+	private PriceAndPoint priceAndPoint;
+	
+	@Override
+	public StatusResponse insertKakaoBtSandAjax_advc(KakaoVO kakaoVO, HttpServletRequest request) throws Exception {
+		StatusResponse statusResponse = new StatusResponse();
+		
+		log.info(" + kakaoVO.toString() :: [{}]", kakaoVO.toString()); 
+		
+		log.info(" + kakaoVO.toString() :: [{}]", kakaoVO.ftToString()); 
+		
+
+//		if(1==1) {
+//			throw new RuntimeException("강제로 발생시킨 예외");
+//		}
+		
+		// 측정할 메소드 호출 전 시간 기록
+		Instant start = Instant.now();
+//		KakaoSendAdvcVO
+
+		Map<String, Object> returnMap = new HashMap<>();
+		Map<String, Object> apiReturnMap = new HashMap<>();
+		
+		String userId = "";
+		if("A".equals(kakaoVO.getSendKind()))
+		{
+			userId = kakaoVO.getMberId();
+		}else {
+
+			LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()
+					? (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser()
+					: null;
+			userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId());
+	
+			if (userId.equals("")) {
+				return new StatusResponse(HttpStatus.BAD_REQUEST, "로그인 후 이용이 가능합니다.");
+			}
+
+		}
+		
+		kakaoVO.setUserId(userId);
+
+		/**
+		 * 회원 정지된 상태이면 문자 발송이 안되도록 처리함 현재 로그인 세션도 만료 처리함
+		 */
+		boolean mberSttus = userManageService.selectUserStatusInfo(userId);
+		if (!mberSttus) {
+			request.getSession().invalidate();
+			// UNAUTHORIZED : 인증되지 않은 사용자가 접근하려고 할 때
+			return new StatusResponse(HttpStatus.UNAUTHORIZED,
+					"현재 고객님께서는 문자온 서비스 이용이 정지된 상태로 친구톡을 발송하실 수 없습니다. 이용정지 해제를 원하시면 고객센터로 연락주시기 바랍니다.", "STAT_1070");
+		}
+		
+
+		/**
+		 * 친구톡은 발송 시간 제약이 있음
+		 */
+		if(kakaoSendUtil.isRestrictedFriendTalkTime(kakaoSendUtil.resolveBaseDate(kakaoVO))) {
+			// UNAUTHORIZED : 인증되지 않은 사용자가 접근하려고 할 때
+			return new StatusResponse(HttpStatus.BAD_REQUEST,
+					"브랜드메시지는 20시 50분부터 익일 08시까지 발송이 제한됩니다.","STAT_2080");
+		}
+		
+
+/** @isHolidayNotified 
+ * @false : 알림 X
+ * @true  : 알림 O */
+		boolean isHolidayNotified = mjonCommon.processUserAndCheckFT(kakaoVO);
+		
+
+		UserManageVO userManageVO = mjonCommon.getUserManageInfo(userId);
+		
+
+		// 스팸관련 키워드 select
+		List<String> resultSpamTxt = mjonMsgDataService.selectSpamKeywordList();
+		
+/** @카카오톡 전송 list 셋팅 -------------------------------------------*/
+		List<KakaoSendAdvcVO> kakaoSendAdvcListVO = kakaoSendUtil.populateSendListsBT(kakaoVO, isHolidayNotified, statusResponse, userManageVO, resultSpamTxt);
+		if (statusResponse.getStatus() != null && !statusResponse.getStatus().equals(HttpStatus.OK)) {
+			log.error(" + populateSendLists 처리 중 오류 발생: {}", statusResponse.getMessage());
+			return statusResponse;
+		}
+		
+
+/** @전송금액 확인 --------------------------------------------------*/
+		if (!kakaoSendUtil.isCashSufficient(userId, kakaoSendAdvcListVO)) {
+			log.error("Insufficient balance for message sending.");
+			return new StatusResponse(HttpStatus.BAD_REQUEST, "문자 발송에 필요한 보유 잔액이 부족 합니다.", "STAT_1060");
+		}
+		
+
+/** @json파일이 있을 떄 biz_attachments insert */
+		kakaoSendUtil.insertKakaoAtDataJsonInfo_advc(kakaoSendAdvcListVO);
+		
+		
+
+		Map<String, List<KakaoSendAdvcVO>> priceGroupedMessages = kakaoSendAdvcListVO.stream()
+				.collect(Collectors.groupingBy(KakaoSendAdvcVO::getEachPrice));
+		// instTotalCnt : 화면에서 보여줄 총 발송건수
+		int instTotalCnt = 0;
+		
+
+		// 임시
+		List<String> nextMsgGroupIdA = new ArrayList<>();
+			// 대안: entrySet() 직접 사용
+		String apiMsgGroupId = "";
+		String apiMsgType = "";
+		for (Map.Entry<String, List<KakaoSendAdvcVO>> entry : priceGroupedMessages.entrySet()) {
+			    // entry 사용
+
+			List<KakaoSendAdvcVO> groupedMsgList = entry.getValue(); // 해당 가격의 메시지 리스트
+
+			String nextMsgGroupId = idgenMjonMsgGroupId.getNextStringId();
+			groupedMsgList.forEach(t -> t.setMsgGroupId(nextMsgGroupId));
+
+			// api 전달 값
+			apiMsgGroupId = StringUtils.isNotEmpty(apiMsgGroupId)
+					? apiMsgGroupId + "," + nextMsgGroupId
+					: nextMsgGroupId;
+			
+			apiMsgType = StringUtils.isNotEmpty(apiMsgType)
+					? apiMsgType + "," + kakaoSendAdvcListVO.get(0).getMsgType()
+							: kakaoSendAdvcListVO.get(0).getMsgType();
+
+			// 발송 데이터 삽입
+			int instCnt = kakaoSendUtil.insertKakaoData_advc(groupedMsgList);
+//			int instCnt = 6;
+			
+			if(instCnt > 0) {
+
+				instTotalCnt += instCnt;
+
+				KakaoSendAdvcVO sendVO = groupedMsgList.get(0);
+
+/** @groupData 테이블 insert */
+				kakaoSendUtil.insertKakaoGroupDataTb_advc(instCnt, kakaoVO, sendVO);
+
+
+				
+/** @biz_kakao_price에 insert (대체문자 환불관련 테이블)*/
+				priceAndPoint.insertBizFtKakaoPrice(kakaoVO.getUserId(), sendVO.getMsgGroupId()); 
+				
+				
+				priceAndPoint.insertCashAndPoint(kakaoVO.getUserId()
+						, -Float.parseFloat(sendVO.getTotPrice())
+						, "카카오 친구톡 총 "+groupedMsgList.size()+"건 중 " + instCnt + "건 발송"
+						, nextMsgGroupId
+					);
+
+
+/** @SLACK발송 */ 
+				/** @발송조건이되면 발송 */ 
+				if(isHolidayNotified 
+						&& ("Y".equals(userManageVO.getAtSmishingYn()) || "Y".equals(kakaoVO.getAtDelayYn()))
+						) {
+					mjonCommon.getAdminKakaoAtSendSlack(sendVO);
+				}else if("Y".equals(kakaoVO.getAtSmishingYn())){
+				/** @발송조건이 안되면 DB INSERT */ 
+					mjonMsgDAO.insertSpamPassMsgData(MjonMsgVO.builder()
+							.msgGroupId(nextMsgGroupId)
+							.userId(kakaoVO.getUserId())
+							.reqDate(kakaoVO.getReqDate())
+							.smsTxt(groupedMsgList.get(0).getTemplateContent())
+							.totalCallCnt(instCnt)
+							.callFrom(kakaoVO.getCallFrom())
+							.msgType("8")
+							.reserveYn(kakaoVO.getReserveYn())
+							.build()
+						);
+				}
+				
+				nextMsgGroupIdA.add(nextMsgGroupId);
+				
+			}
+			
+		}
+
+		apiReturnMap.put("resultSts", instTotalCnt);
+		// 그룹 ID
+		apiReturnMap.put("msgGroupId", apiMsgGroupId);
+		// 메세지 타입
+		apiReturnMap.put("msgType", apiMsgType);
+		
+		returnMap.put("resultSts", instTotalCnt);
+		returnMap.put("reserYn", kakaoVO.getReserveYn());
+		returnMap.put("groupIds", nextMsgGroupIdA);
+		
+		
+		// 측정할 메소드 호출 후 시간 기록
+		Instant end = Instant.now();
+
+		log.info(" + start :: [{}]", start);
+		// 실행 시간 계산 (나노초, 밀리초, 초)
+		long seconds = Duration.between(start, end).getSeconds();
+		log.info("메소드 실행 시간 (초): {} s", seconds);
+		double minutes = seconds / 60.0; // 소수점 포함을 위해 60.0으로 나눔
+
+		returnMap.put("second", seconds+" s");
+		returnMap.put("minutes", minutes+" min");
+		
+
+//		System.out.println("메소드 실행 시간 (분): " + minutes + " min");
+		
+		
+		
+		
+//		priceAndPoint.getBefCash(userId);
+		
+		
+		
+
+		statusResponse.setStatus(HttpStatus.OK);
+		statusResponse.setObject(returnMap);
+		apiReturnMap.put("result", HttpStatus.OK);
+		apiReturnMap.put("message", "전송이 완료되었습니다.");
+		statusResponse.setApiReturn(apiReturnMap);
+		
+		return statusResponse;
+	}
+	
+}
 
src/main/java/itn/let/kakao/user/kakaoBt/service/impl/KakaoBrandMsgTemplateDAO.java (added)
+++ src/main/java/itn/let/kakao/user/kakaoBt/service/impl/KakaoBrandMsgTemplateDAO.java
@@ -0,0 +1,163 @@
+package itn.let.kakao.user.kakaoBt.service.impl;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.springframework.stereotype.Repository;
+
+import egovframework.rte.psl.dataaccess.EgovAbstractDAO;
+import itn.let.kakao.admin.kakaoAt.service.MjonKakaoTemplateButtonVO;
+import itn.let.kakao.kakaoComm.KakaoButtonVO;
+import itn.let.kakao.kakaoComm.KakaoVO;
+
+@Repository("kakaoBrandMsgTemplateDAO")
+public class KakaoBrandMsgTemplateDAO  extends EgovAbstractDAO{
+
+	
+	//친구톡 템플릿 저장하기
+	public int insertKakaoFriendsTemplateData(KakaoVO kakaoVO) throws Exception{
+		
+		int result = 0;
+		try {
+			
+			result = update("kakaoFriendsTalkTemplateDAO.insertKakaoFriendsTemplateData", kakaoVO);
+			
+		} catch (Exception e) {
+			System.out.println("insertKakaoFriendsTemplateData DAO Error !!! " + e);
+		}
+		
+		return result;
+	}
+	
+	public int insertKakaoFriendsTemplateButtonData(MjonKakaoTemplateButtonVO buttonVO) throws Exception{
+		int result = 0;
+		
+		try {
+			
+			result = update("kakaoFriendsTalkTemplateDAO.insertKakaoFriendsTemplateButtonData", buttonVO);
+			
+		} catch (Exception e) {
+			System.out.println("insertKakaoFriendsTemplateButtonData DAO Error !!! " + e);
+		}
+		
+		return result;
+		
+	}
+	
+	//친구톡 템플릿 리스트 불러오기
+	@SuppressWarnings("unchecked")
+	public List<KakaoVO> selectKakaoFriendsTemplateList(KakaoVO kakaoVO) throws Exception{
+		List<KakaoVO> result = new ArrayList<KakaoVO>();
+		
+		try {
+			
+			result = (List<KakaoVO>) list("kakaoFriendsTalkTemplateDAO.selectKakaoFriendsTemplateList", kakaoVO);
+			
+		} catch (Exception e) {
+			System.out.println("selectKakaoFriendsTemplateList DAO Error !!! " + e);
+		}
+		
+		return result;
+	}
+	
+	@SuppressWarnings("unchecked")
+	public List<KakaoButtonVO> selectKakaoFriendsTemplateButtons(MjonKakaoTemplateButtonVO buttonVO) throws Exception{
+		
+		List<KakaoButtonVO> result = new ArrayList<KakaoButtonVO>();
+		
+		try {
+			
+			result = (List<KakaoButtonVO>) list("kakaoFriendsTalkTemplateDAO.selectKakaoFriendsTemplateButtons", buttonVO);
+			
+		} catch (Exception e) {
+			System.out.println("selectKakaoFriendsTemplateButtons DAO Error !!! " + e);
+		}
+		
+		return result;
+	}
+	
+	//친구톡 템플릿 삭제처리하기
+	public int deleteKakaoFriendstalkTemplate(KakaoVO kakaoVO) throws Exception{
+		
+		int result = 0;
+		
+		try {
+			
+			result = update("kakaoFriendsTalkTemplateDAO.deleteKakaoFriendstalkTemplate", kakaoVO);
+			
+		} catch (Exception e) {
+			System.out.println("deleteKakaoFriendstalkTemplate DAO Error !!! " + e);
+		}
+		
+		return result;
+		
+	}
+	
+	//친구톡 템플릿 삭제처리하기
+	public int deleteKakaoFriendstalkButtons(KakaoVO kakaoVO) throws Exception{
+		int result = 0;
+		
+		try {
+			
+			result = update("kakaoFriendsTalkTemplateDAO.deleteKakaoFriendstalkButtons", kakaoVO);
+			
+		} catch (Exception e) {
+			System.out.println("deleteKakaoFriendstalkButtons DAO Error !!! " + e);
+		}
+		
+		return result;
+	}
+	
+	
+	//친구톡 템플릿 상세정보 조회
+	public KakaoVO selectKakaoFriendsTemplateDetail(KakaoVO kakaoVO) throws Exception{
+		
+		KakaoVO result = new KakaoVO();
+		
+		try {
+			
+			result = (KakaoVO) select("kakaoFriendsTalkTemplateDAO.selectKakaoFriendsTemplateDetail", kakaoVO);
+			
+		} catch (Exception e) {
+			System.out.println("selectKakaoFriendsTemplateDetail DAO Error !!! " + e);
+		}
+		
+		return result;
+		
+	}
+	
+	//친구톡 템플릿 수정처리하기
+	public int updateKakaoFriendsTemplateData(KakaoVO kakaoVO) throws Exception{
+		
+		int result = 0;
+		
+		try {
+			
+			result = update("kakaoFriendsTalkTemplateDAO.updateKakaoFriendsTemplateData", kakaoVO);
+			
+		} catch (Exception e) {
+			System.out.println("updateKakaoFriendsTemplateData DAO Error !!! " + e);
+		}
+		
+		return result;
+		
+	}
+	
+	//친구톡 템플릿 이미지 삭제시 템플릿 데이터 변경 처리
+	public int updateKakaoFriendsTemplateImageDataDel(KakaoVO kakaoVO) throws Exception{
+		
+		int result = 0;
+		
+		try {
+			
+			result = update("kakaoFriendsTalkTemplateDAO.updateKakaoFriendsTemplateImageDataDel",kakaoVO);
+			
+		} catch (Exception e) {
+			System.out.println("updateKakaoFriendsTemplateData DAO Error !!! " + e);
+		}
+		
+		return result;
+		
+	}
+	
+}
 
src/main/java/itn/let/kakao/user/kakaoBt/service/impl/KakaoBrandMsgTemplateServiceImpl.java (added)
+++ src/main/java/itn/let/kakao/user/kakaoBt/service/impl/KakaoBrandMsgTemplateServiceImpl.java
@@ -0,0 +1,227 @@
+package itn.let.kakao.user.kakaoBt.service.impl;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.annotation.Resource;
+
+import org.springframework.stereotype.Service;
+
+import egovframework.rte.fdl.cmmn.EgovAbstractServiceImpl;
+import egovframework.rte.fdl.idgnr.EgovIdGnrService;
+import itn.let.kakao.admin.kakaoAt.service.MjonKakaoTemplateButtonVO;
+import itn.let.kakao.kakaoComm.KakaoButtonVO;
+import itn.let.kakao.kakaoComm.KakaoVO;
+import itn.let.kakao.user.kakaoBt.service.KakaoBrandMsgTemplateService;
+
+@Service("KakaoBrandMsgTemplateService")
+public class KakaoBrandMsgTemplateServiceImpl  extends EgovAbstractServiceImpl implements KakaoBrandMsgTemplateService{
+
+	@Resource(name = "egovFriendstalkTemplateIdService")
+	private EgovIdGnrService idgenFriendTalkTmpId;
+
+	@Resource(name="kakaoBrandMsgTemplateDAO")
+	private KakaoBrandMsgTemplateDAO kakaoBrandMsgTemplateDAO;
+	
+	//친구톡 템플릿 저장처리
+	@Override
+	public int insertKakaoFriendsTemplateData(KakaoVO kakaoVO) throws Exception{
+		
+		int result = 0;
+		int resultBtn = 0;
+		try {
+			
+			String tmpIdgen = idgenFriendTalkTmpId.getNextStringId();
+			kakaoVO.setFriendId(tmpIdgen);
+			System.out.println("++++++++++++++++++ tmpIdgen ::: "+tmpIdgen);
+			result = kakaoBrandMsgTemplateDAO.insertKakaoFriendsTemplateData(kakaoVO);
+			
+			if(result > 0) {
+				
+				for(KakaoButtonVO button: kakaoVO.getButtonVOList()) {
+					
+					MjonKakaoTemplateButtonVO tmpButtonVO = new MjonKakaoTemplateButtonVO();
+					
+					tmpButtonVO.setTemplateId(tmpIdgen);
+					tmpButtonVO.setTemplateUseType("F");
+					tmpButtonVO.setButtonName(button.getName());
+					tmpButtonVO.setButtonLinktype(button.getLinkType());
+					tmpButtonVO.setButtonLinkpc(button.getLinkPc());
+					tmpButtonVO.setButtonLinkmo(button.getLinkMo());
+					tmpButtonVO.setButtonLinkios(button.getLinkIos());
+					tmpButtonVO.setButtonLinkand(button.getLinkAnd());
+					tmpButtonVO.setUserId(kakaoVO.getUserId());
+					
+					int resultCnt = kakaoBrandMsgTemplateDAO.insertKakaoFriendsTemplateButtonData(tmpButtonVO);
+					resultBtn = resultBtn + resultCnt;
+					
+				}
+				
+			}
+			
+		} catch (Exception e) {
+			System.out.println("insertKakaoFriendsTemplateData ServiceImple Error !!! " + e);
+			return result = 0;
+		}
+		
+		return result;
+	}
+	
+	//친구톡 템플릿 리스트 불러오기
+	@Override
+	public List<KakaoVO> selectKakaoFriendsTemplateList(KakaoVO kakaoVO) throws Exception{
+		
+		List<KakaoVO> resultList = new ArrayList<KakaoVO>();
+		List<KakaoVO> resultFinalTemplateList = new ArrayList<KakaoVO>();
+		
+		try {
+			
+			resultList = kakaoBrandMsgTemplateDAO.selectKakaoFriendsTemplateList(kakaoVO);
+			
+			//각 템플릿별 버튼 정보 추가해주기
+			for(KakaoVO templateVO : resultList) {
+				
+				List<KakaoButtonVO> buttonList = new ArrayList<KakaoButtonVO>();
+				MjonKakaoTemplateButtonVO buttonVO = new MjonKakaoTemplateButtonVO();
+				buttonVO.setTemplateId(templateVO.getFriendId());
+				buttonVO.setTemplateUseType("F");
+				buttonList = kakaoBrandMsgTemplateDAO.selectKakaoFriendsTemplateButtons(buttonVO);
+				
+				if(buttonList != null) {
+					templateVO.setButtonVOList(buttonList);
+				}
+				
+				resultFinalTemplateList.add(templateVO);
+				
+			}
+			
+		} catch (Exception e) {
+			System.out.println("selectKakaoFriendsTemplateList ServiceImple Error !!! " + e);
+		}
+		
+		return resultFinalTemplateList;
+		
+	}
+	
+	//친구톡 템플릿 삭제처리하기
+	@Override
+	public int deleteKakaoFriendstalkTemplate(KakaoVO kakaoVO) throws Exception{
+		int result = 0;
+		
+		try {
+			
+			//친구톡 템플릿 정보 삭제 - Delete_yn 컬럼 값 변경 처리함
+			result = kakaoBrandMsgTemplateDAO.deleteKakaoFriendstalkTemplate(kakaoVO);
+			
+			if(result > 0) {//템플릿에 등록된 버튼 삭제 - 상태값 컬럼이 없어서 삭제처리 보류 
+				
+				//int resultBtn = kakaoFriendsTalkTemplateDAO.deleteKakaoFriendstalkButtons(kakaoVO);
+				
+			}
+			
+		} catch (Exception e) {
+			System.out.println("deleteKakaoFriendstalkTemplate ServiceImple Error !!! " + e);
+		}
+		
+		return result;
+	}
+	
+	//친구톡 템플릿 상세정보 조회
+	@Override
+	public KakaoVO selectKakaoFriendsTemplateDetail(KakaoVO kakaoVO) throws Exception{
+		
+		KakaoVO result = new KakaoVO();
+		
+		try {
+			
+			result = kakaoBrandMsgTemplateDAO.selectKakaoFriendsTemplateDetail(kakaoVO);
+			
+			//템플릿에 등록된 버튼정보가 있는지 확인하여 추가
+			if(result != null) {
+				
+				List<KakaoButtonVO> buttonList = new ArrayList<KakaoButtonVO>();
+				MjonKakaoTemplateButtonVO buttonVO = new MjonKakaoTemplateButtonVO();
+				buttonVO.setTemplateId(kakaoVO.getFriendId());
+				buttonVO.setTemplateUseType("F");
+				buttonList = kakaoBrandMsgTemplateDAO.selectKakaoFriendsTemplateButtons(buttonVO);
+				
+				if(buttonList != null) {
+					result.setButtonVOList(buttonList);
+				}
+				
+			}
+			
+		} catch (Exception e) {
+			System.out.println("selectKakaoFriendsTemplateDetail ServiceImple Error !!! " + e);
+		}
+		
+		return result;
+		
+	}
+	
+	//친구톡 템플릿 수정처리하기
+	@Override
+	public int updateKakaoFriendsTemplateData(KakaoVO kakaoVO) throws Exception{
+		
+		int result = 0;
+		int resultBtn = 0;
+		
+		try {
+			
+			//템플릿 정보 수정
+			result = kakaoBrandMsgTemplateDAO.updateKakaoFriendsTemplateData(kakaoVO);
+			
+			String friendId = kakaoVO.getFriendId();
+			if(result > 0) {
+				
+				//기존 버튼 정보 삭제
+				int resultBtnCnt = kakaoBrandMsgTemplateDAO.deleteKakaoFriendstalkButtons(kakaoVO);
+				
+				//신규 버튼 정보 입력
+				for(KakaoButtonVO button: kakaoVO.getButtonVOList()) {
+					
+					MjonKakaoTemplateButtonVO tmpButtonVO = new MjonKakaoTemplateButtonVO();
+					
+					tmpButtonVO.setTemplateId(friendId);
+					tmpButtonVO.setTemplateUseType("F");
+					tmpButtonVO.setButtonName(button.getName());
+					tmpButtonVO.setButtonLinktype(button.getLinkType());
+					tmpButtonVO.setButtonLinkpc(button.getLinkPc());
+					tmpButtonVO.setButtonLinkmo(button.getLinkMo());
+					tmpButtonVO.setButtonLinkios(button.getLinkIos());
+					tmpButtonVO.setButtonLinkand(button.getLinkAnd());
+					tmpButtonVO.setUserId(kakaoVO.getUserId());
+					
+					int resultCnt = kakaoBrandMsgTemplateDAO.insertKakaoFriendsTemplateButtonData(tmpButtonVO);
+					resultBtn = resultBtn + resultCnt;
+					
+				}
+				
+			}
+			
+		} catch (Exception e) {
+			System.out.println("updateKakaoFriendsTemplateData ServiceImple Error !!! " + e);
+		}
+		
+		return result;
+	}
+	
+	//친구톡 템플릿 이미지 삭제시 템플릿 데이터 변경 처리
+	@Override
+	public int updateKakaoFriendsTemplateImageDataDel(KakaoVO kakaoVO) throws Exception{
+		
+		int result = 0;
+		
+		try {
+			
+			result = kakaoBrandMsgTemplateDAO.updateKakaoFriendsTemplateImageDataDel(kakaoVO);
+			
+		} catch (Exception e) {
+			System.out.println("updateKakaoFriendsTemplateData ServiceImple Error !!! " + e);
+		}
+		
+		return result;
+		
+	}
+	
+}
 
src/main/java/itn/let/kakao/user/kakaoBt/web/KakaoBrandMsgSendController.java (added)
+++ src/main/java/itn/let/kakao/user/kakaoBt/web/KakaoBrandMsgSendController.java
@@ -0,0 +1,232 @@
+package itn.let.kakao.user.kakaoBt.web;
+
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.List;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.ResponseEntity;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.ModelMap;
+import org.springframework.web.bind.annotation.ModelAttribute;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import egovframework.rte.fdl.idgnr.EgovIdGnrService;
+import egovframework.rte.fdl.security.userdetails.util.EgovUserDetailsHelper;
+import itn.com.cmm.EgovMessageSource;
+import itn.com.cmm.LoginVO;
+import itn.com.cmm.util.MJUtil;
+import itn.com.utl.fcc.service.EgovStringUtil;
+import itn.let.kakao.kakaoComm.KakaoSendUtil;
+import itn.let.kakao.kakaoComm.KakaoVO;
+import itn.let.kakao.kakaoComm.kakaoApi.service.KakaoApiService;
+import itn.let.kakao.user.kakaoAt.service.KakaoAlimTalkService;
+import itn.let.kakao.user.kakaoBt.service.KakaoBrandMsgService;
+import itn.let.kakao.user.kakaoFt.service.KakaoFriendsTalkTemplateService;
+import itn.let.mail.service.StatusResponse;
+import itn.let.mjo.msgdata.service.MjonMsgDataService;
+import itn.let.mjo.msgholiday.service.MsgHolidayService;
+import itn.let.mjo.symbol.service.MjonSymbolService;
+import itn.let.mjo.symbol.service.MjonSymbolVO;
+import itn.let.sym.site.service.EgovSiteManagerService;
+import itn.let.uss.umt.service.EgovUserManageService;
+import itn.let.uss.umt.service.MberManageVO;
+
+@Slf4j
+@Controller
+public class KakaoBrandMsgSendController {
+
+	@Resource(name = "egovMjonMsgGroupIdGnrService")
+	private EgovIdGnrService idgenMjonMsgGroupId;
+	
+	/** EgovMessageSource */
+	@Resource(name="egovMessageSource")
+	EgovMessageSource egovMessageSource;
+	
+	@Resource(name = "mjonSymbolService")
+	private MjonSymbolService mjonSymbolService;
+	
+	@Resource(name = "kakaoApiService")
+	private KakaoApiService kakaoApiService;
+	
+	@Resource(name = "MjonMsgDataService")
+	private MjonMsgDataService mjonMsgDataService;
+	
+	@Resource(name = "kakaoFriendsTalkTemplateService")
+	private KakaoFriendsTalkTemplateService kakaoFtTemplateService;
+
+	@Resource(name = "KakaoBrandMsgService")
+	private KakaoBrandMsgService kakaoBrandMsgService;
+	
+//	@Resource(name = "KakaoFriendsTalkService")
+//	private KakaoFriendsTalkService kakaoFriendsTalkService;
+	
+	/** userManageService */
+	@Resource(name = "userManageService")
+	private EgovUserManageService userManageService;
+	
+	@Resource(name = "kakaoAlimTalkService")
+	private KakaoAlimTalkService kakaoAlimTalkService;
+	
+	/** 사이트 설정 */ 
+	@Resource(name = "egovSiteManagerService")
+	EgovSiteManagerService egovSiteManagerService;	
+	
+	@Resource(name = "MsgHolidayService")
+    private MsgHolidayService msgHolidayService;
+	
+	@Autowired
+	KakaoSendUtil kakaoSendUtil;
+	
+	
+	
+
+	/**
+	 * @methodName	: KakaoAlimtalkMsgDataView 
+	 * @author		: 이호영
+	 * @date		: 2025. 12. 18.
+	 * @description	: 브랜드 메시지 발송화면 이동
+	 * @return : String
+	 * @param model
+	 * @param kakaoVO
+	 * @return
+	 * @throws Exception
+	 * 
+	 */
+	@RequestMapping(value= {"/web/mjon/kakao/brandMsg/kakaoBrandMsgDataView.do"})
+	public String KakaoAlimtalkMsgDataView(ModelMap model
+			, @ModelAttribute("kakaoVO")  KakaoVO kakaoVO) throws Exception {
+
+
+		LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null;
+		String author = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getAuthority());
+		String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId());
+		
+		/*if(userId == "") {
+			return "redirect:/web/user/login/login.do";
+		}*/
+		
+		model.addAttribute("loginVO", loginVO);
+		
+			
+		if(!"".equals(userId) && !"ROLE_ADMIN".equals(author)) {
+		
+			//사용자 등록 발신프로필 정보 조회해오기
+			kakaoVO.setUserId(userId);
+			List<KakaoVO> resultProfileList = kakaoApiService.selectKakaoProfileList(kakaoVO);
+			model.addAttribute("resultProfileList", resultProfileList);
+			
+			// 특수문자 리스트 불러오기
+			MjonSymbolVO symbolVO = new MjonSymbolVO();
+			List<MjonSymbolVO> symbolList = mjonSymbolService.selectMjonSymbolList(symbolVO);
+			model.addAttribute("symbolList", symbolList);
+			
+			//아이디 발신번호 리스트 불러오기.
+			List<String> resultSendPhonList = mjonMsgDataService.selectSendPhonNumList(userId);
+			List<String> resultPhonList = new ArrayList<String>();
+			MJUtil mjUtil = new MJUtil();
+			for(String phone : resultSendPhonList) {
+				resultPhonList.add(mjUtil.addDash(phone));
+			}
+			model.addAttribute("resultPhonList", resultPhonList);
+			
+			
+			MberManageVO mberManageVO = mjonMsgDataService.selectMberManageInfo(userId);
+			
+			model.addAttribute("atSmishingYn", mberManageVO.getAtSmishingYn());
+			
+			//3.사용자 개인단가 정보가 0이 아니면 개인단가 사용, 없으면 시스템 기본 단가 사용
+			/*Float shortPrice = mberManageVO.getShortPrice();
+			Float longPrice = mberManageVO.getLongPrice();
+			Float picturePrice = mberManageVO.getPicturePrice();
+			Float picture2Price = mberManageVO.getPicture2Price();
+			Float picture3Price = mberManageVO.getPicture3Price();*/
+			BigDecimal userMoney = new BigDecimal(mberManageVO.getUserMoney()).setScale(2, RoundingMode.HALF_EVEN);
+			
+			model.addAttribute("userMoney", userMoney);
+			
+
+			Calendar cal = Calendar.getInstance();
+			//////////////////////////////////////////////////////////////////
+			
+			//최근 전송 내역
+//			MjonMsgDataVO searchVO = new MjonMsgDataVO();
+//			Date now = new Date();
+//			SimpleDateFormat format = new SimpleDateFormat("yyyy/MM/dd");
+//			cal.setTime(now);
+//			cal.add(Calendar.DATE, -3);
+//			String chkDate = format.format(cal.getTime());
+//			searchVO.setUserId(userId);
+//			searchVO.setMyMsgStDt(chkDate);	//검색 시작일 저장 - 현재날짜로 부터 3일 이전 날짜로 시작
+//				model.addAttribute("resultLatestMsgList", mjonMsgDataService.selectLatestMsgList(searchVO));
+			
+			//자주보내는 번호
+//				model.addAttribute("resultBookMarkMsgList", mjonMsgDataService.selectBookMarkMsgList(searchVO));
+			
+			// 사용자 정의 단가 정보 불러오기(시스템 단가 혹은 협의 단가)
+			model.addAttribute("sendPrice", kakaoSendUtil.selectSendPriceOfKakaoAtAndSmsAndMms(userId));
+			
+			
+			//사용자 템플릿 정보 조회
+			String friendId = kakaoVO.getFriendId();
+			KakaoVO resultTemplateVO = new KakaoVO();
+			
+			if(friendId != null) {
+				resultTemplateVO = kakaoFtTemplateService.selectKakaoFriendsTemplateDetail(kakaoVO);
+			}
+			model.addAttribute("resultTemplateVO", resultTemplateVO);
+			
+			
+			//친구톡 발송시간 체크 하기 - 20:50 ~ 익일 08:00 사이에는 발송 금지
+			int hour = cal.get(Calendar.HOUR_OF_DAY);
+			int minute = cal.get(Calendar.MINUTE);
+			
+			int time = hour * 60 + minute; // 하루 기준 분 단위
+
+			boolean sendStatus = !(time < 480 || time >= 1250); // 08:00(480), 20:50(1250)
+
+			if(!sendStatus) {
+				System.out.println("발송금지 시간 " + hour + ":" + minute);
+			}
+			
+			System.out.println("발송상태는 ::: "+sendStatus);
+			model.addAttribute("sendStatus", sendStatus);
+		
+		}
+		
+//		return "web/kakao/msgdata/ft/KakaoFriendsTalkMsgDataView";
+		return "web/kakao/msgdata/bt/brandMsgDataView";
+	}
+	
+	
+	
+	/**
+	 * @methodName	: kakaoFriendsTalkMsgSendAjax_advc 
+	 * @author		: 이호영
+	 * @date		: 2025. 12. 18.
+	 * @description	: 브랜드 메시지 발송 로직
+	 * @return : ResponseEntity<StatusResponse>
+	 * @param kakaoVO
+	 * @param request
+	 * @return
+	 * @throws Exception
+	 * 
+	 */
+	@RequestMapping(value = "/web/mjon/kakao/brandMsg/kakaoBrandMsgSendAjax_advc.do")
+	public ResponseEntity<StatusResponse> kakaoBrandMsgSendAjax_advc(
+			@RequestBody KakaoVO kakaoVO,
+			HttpServletRequest request
+			) throws Exception {
+		System.out.println(" :: sendMsgData_bt_advc :: ");
+		return ResponseEntity.ok().body(kakaoBrandMsgService.insertKakaoBtSandAjax_advc(kakaoVO, request)) ;
+		
+	}
+	
+}
 
src/main/java/itn/let/kakao/user/kakaoBt/web/KakaoBrandMsgTemplateController.java (added)
+++ src/main/java/itn/let/kakao/user/kakaoBt/web/KakaoBrandMsgTemplateController.java
@@ -0,0 +1,89 @@
+package itn.let.kakao.user.kakaoBt.web;
+
+import java.time.LocalDateTime;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.ui.ModelMap;
+import org.springframework.web.bind.annotation.ModelAttribute;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.multipart.MultipartFile;
+import org.springframework.web.multipart.MultipartHttpServletRequest;
+import org.springframework.web.servlet.ModelAndView;
+
+import egovframework.rte.fdl.security.userdetails.util.EgovUserDetailsHelper;
+import egovframework.rte.ptl.mvc.tags.ui.pagination.PaginationInfo;
+import itn.com.cmm.EgovMessageSource;
+import itn.com.cmm.LoginVO;
+import itn.com.cmm.RestResponse;
+import itn.com.cmm.service.EgovCmmUseService;
+import itn.com.utl.fcc.service.EgovStringUtil;
+import itn.let.kakao.kakaoComm.KakaoReturnVO;
+import itn.let.kakao.kakaoComm.KakaoVO;
+import itn.let.kakao.kakaoComm.kakaoApi.KakaoApiImageUpload;
+import itn.let.kakao.kakaoComm.kakaoApi.KakaoApiProfile;
+import itn.let.kakao.kakaoComm.kakaoApi.KakaoApiProfileCategory;
+import itn.let.kakao.kakaoComm.kakaoApi.KakaoApiTemplate;
+import itn.let.kakao.kakaoComm.kakaoApi.KakaoFTJsonSave;
+import itn.let.kakao.kakaoComm.kakaoApi.service.KakaoApiService;
+import itn.let.kakao.user.kakaoFt.service.KakaoFriendsTalkTemplateService;
+import itn.let.mail.service.StatusResponse;
+import itn.let.mjo.symbol.service.MjonSymbolService;
+import itn.let.mjo.symbol.service.MjonSymbolVO;
+import itn.let.uss.ion.cnt.service.CntManageVO;
+import itn.let.uss.umt.service.EgovUserManageService;
+import lombok.extern.slf4j.Slf4j;
+
+@Slf4j
+@Controller
+public class KakaoBrandMsgTemplateController {
+
+	@Resource(name = "kakaoFriendsTalkTemplateService")
+	private KakaoFriendsTalkTemplateService kakaoFtTemplateService;
+	
+	@Resource(name = "EgovCmmUseService")
+	private EgovCmmUseService cmmUseService;
+	
+	@Resource(name = "kakaoApiService")
+	private KakaoApiService kakaoApiService;
+	
+	/** EgovMessageSource */
+	@Resource(name="egovMessageSource")
+	EgovMessageSource egovMessageSource;
+	
+	@Resource(name = "mjonSymbolService")
+	private MjonSymbolService mjonSymbolService;
+	
+	/** userManageService */
+	@Resource(name = "userManageService")
+	private EgovUserManageService userManageService;
+	
+	@Autowired
+	KakaoApiProfile kakaoApiProfile;
+	
+	@Autowired
+	KakaoApiProfileCategory kakaoApiProfileCategory;
+	
+	@Autowired
+	KakaoApiTemplate kakaoApiTemplate;
+	
+	@Autowired
+	KakaoApiImageUpload kakaoApiImageUpload;
+	
+	@Autowired
+	KakaoFTJsonSave kakaoFTJsonSave;
+	
+	
+}
src/main/java/itn/let/uss/umt/service/MberManageVO.java
--- src/main/java/itn/let/uss/umt/service/MberManageVO.java
+++ src/main/java/itn/let/uss/umt/service/MberManageVO.java
@@ -321,6 +321,12 @@
 	
 	private float kakaoFtWideImgPrice; // 카카오 친구톡 와이드 단가
 	
+	private float kakaoBtPrice; // 카카오 친구톡 텍스트 단가
+	
+	private float kakaoBtImgPrice; // 카카오 친구톡 이미지 단가
+	
+	private float kakaoBtWideImgPrice; // 카카오 친구톡 와이드 단가
+	
 	private float faxPrice;	// 팩스 단가
 	
 	private double userMoney; //회원보유 캐시
@@ -1819,6 +1825,24 @@
 	public void setKakaoFtWideImgPrice(float kakaoFtWideImgPrice) {
 		this.kakaoFtWideImgPrice = kakaoFtWideImgPrice;
 	}
+	public float getKakaoBtPrice() {
+		return kakaoBtPrice;
+	}
+	public void setKakaoBtPrice(float kakaoBtPrice) {
+		this.kakaoBtPrice = kakaoBtPrice;
+	}
+	public float getKakaoBtImgPrice() {
+		return kakaoBtImgPrice;
+	}
+	public void setKakaoBtImgPrice(float kakaoBtImgPrice) {
+		this.kakaoBtImgPrice = kakaoBtImgPrice;
+	}
+	public float getKakaoBtWideImgPrice() {
+		return kakaoBtWideImgPrice;
+	}
+	public void setKakaoBtWideImgPrice(float kakaoBtWideImgPrice) {
+		this.kakaoBtWideImgPrice = kakaoBtWideImgPrice;
+	}
 	public float getFaxPrice() {
 		return faxPrice;
 	}
src/main/resources/egovframework/sqlmap/let/msg/MjonMsgData_SQL_mysql.xml
--- src/main/resources/egovframework/sqlmap/let/msg/MjonMsgData_SQL_mysql.xml
+++ src/main/resources/egovframework/sqlmap/let/msg/MjonMsgData_SQL_mysql.xml
@@ -2188,6 +2188,9 @@
 			, PRE_PAYMENT_YN 		AS prePaymentYn
 			, BIZ_NO				AS bizNo
 			, MBER_EMAIL_ADRES		AS mberEmailAdres
+			, KAKAO_BT_PRICE		AS kakaoBtPrice
+			, KAKAO_BT_IMG_PRICE	AS kakaoBtImgPrice
+			, KAKAO_BT_WIDE_IMG_PRICE	AS kakaoBtWideImgPrice
 		FROM   LETTNGNRLMBER
 		WHERE  MBER_ID = #userId#
 	
src/main/webapp/WEB-INF/jsp/web/custom/MsgCustomPopupAjax.jsp
--- src/main/webapp/WEB-INF/jsp/web/custom/MsgCustomPopupAjax.jsp
+++ src/main/webapp/WEB-INF/jsp/web/custom/MsgCustomPopupAjax.jsp
@@ -417,6 +417,7 @@
 									<p><span class="vMiddle">*</span> <span class="c_e40000">캘리그래피체는 수정이 불가</span>합니다.</p>
 									<p><span class="vMiddle">*</span> <span class="c_e40000">제작형태와 요청사항이 상이</span>한 경우 <span class="c_e40000">추가로 비용이 발생</span>할 수 있습니다.</p>
 									<p><span class="vMiddle">*</span> <span class="c_e40000">제작된 이미지는 <span class="c_e40000">알림톡 및 친구톡</span> 발송에는 사용할 수 없습니다.</p>
+<%--									<p><span class="vMiddle">*</span> <span class="c_e40000">제작된 이미지는 <span class="c_e40000">알림톡 및 브랜드메시지</span> 발송에는 사용할 수 없습니다.</p>--%>
 								</div>
 								</td>
 							</tr>
src/main/webapp/WEB-INF/jsp/web/kakao/include/KaKaoAlimtalkTopMenuTap.jsp
--- src/main/webapp/WEB-INF/jsp/web/kakao/include/KaKaoAlimtalkTopMenuTap.jsp
+++ src/main/webapp/WEB-INF/jsp/web/kakao/include/KaKaoAlimtalkTopMenuTap.jsp
@@ -16,11 +16,13 @@
 	
 	var menuTopTab = '${paramKakaoVO.menuTopTab}';
 	
+	
 	if(menuTopTab == ''){
 		
 		menuTopTab = form.menuTopTab.value;
 		
 	}
+	console.log('menuTopTab : ', menuTopTab);
 	
 	if(menuTopTab == 'tabConf'){
 		$(".topTab").removeClass("active");
@@ -37,6 +39,10 @@
 	}else if(menuTopTab == 'tabIntro'){
 		$(".topTab").removeClass("active");
 		$("#tabIntro").addClass("active");
+		
+	}else if(menuTopTab == 'tabBrandMsg'){
+		$(".topTab").removeClass("active");
+		$("#tabBt").addClass("active");
 	}
 		
 }
@@ -64,7 +70,12 @@
 		
 		url = "<c:url value='/web/mjon/kakao/alimtalk/kakaotalkIntrdView.do'/>";
 		
+	}else if(tabInfo == 'tabBrandMsg'){
+		
+		url = "<c:url value='/web/mjon/kakao/brandMsg/kakaoBrandMsgDataView.do'/>";
+		
 	}
+	
 	
 	//form.action =url;
 	//form.submit();
@@ -142,6 +153,7 @@
 
 	<ul class="tabType4">
         <li id="tabAt" class="tab topTab"><button type="button" onclick="javascript:fnLinkPageTopTab('tabAlim');">알림톡</button></li>
+	    <%--<li id="tabBt" class="tab topTab"><button type="button" onclick="javascript:fnLinkPageTopTab('tabBrandMsg');">브랜드메시지</button></li>--%>
 	    <li id="tabFt" class="tab topTab"><button type="button" onclick="javascript:fnLinkPageTopTab('tabFriend');">친구톡</button></li>
         <li id="tabConf" class="tab topTab"><button type="button" onclick="javascript:fnLinkPageTopTab('tabConf');">카카오톡 설정</button></li>
         <li id="tabIntro" class="tab topTab"><button type="button" onclick="javascript:fnLinkPageTopTab('tabKakaotalkIntrd');">카카오톡 소개</button></li>
src/main/webapp/WEB-INF/jsp/web/kakao/intrd/KakaotalkIntro.jsp
--- src/main/webapp/WEB-INF/jsp/web/kakao/intrd/KakaotalkIntro.jsp
+++ src/main/webapp/WEB-INF/jsp/web/kakao/intrd/KakaotalkIntro.jsp
@@ -26,7 +26,7 @@
 	
 			<ul class="tabType1">
 				<li class="tab active"><button type="button" onclick="contentTab(this,'1');">알림톡</button></li>
-				<li class="tab"><button type="button" onclick="contentTab(this,'2');">친구톡</button></li>
+				<li class="tab"><button type="button" onclick="contentTab(this,'2');">브랜드메시지</button></li>
 			</ul>
 			
 			<!-- 알림톡 소개 -->
@@ -304,11 +304,11 @@
 			</div>
 			<!-- // 알림톡 소개 -->
 		
-			<!-- 친구톡 소개 -->
+			<!-- 브랜드메시지 소개 -->
 			<div class="tab_content friendtalk" id="tab_content_2">
 				<div class="kakao_intro">
 					<div class="title">
-						<h3>친구톡이란?</h3>
+						<h3>브랜드메시지란?</h3>
 					</div>
 			
 					<div class="title-line">
@@ -321,42 +321,44 @@
 						<div class="intro">
 							<img class="phone" src="/publish/images/kakao_intro_cont/phone_friendtalk.png" alt="핸드폰">
 			
-							<ul class="list">
+							<ul class="list" style="width:57%;">
 								<li>
-									<img src="/publish/images/kakao_intro_cont/text_friendtalk.png" alt="카카오톡 전용 기업 메시지 서비스  “알림톡”">
+									<img src="/publish/images/kakao_intro_cont/text_brandmsg.png" alt="카카오톡 전용 기업 메시지 서비스  “알림톡”">
 								</li>
 								<li>
-									<p>1</p>
-									<p><span>광고성 메시지</span> 발송 가능(광고 표기 및 수신거부 안내 포함)</p>
-								</li>
-								<li>
-									<p>2</p>
-									<p>채널 친구 추가된 사용자라면 <span>누구에게나</span> 발송 가능</p>
-								</li>
-								<li>
-									<p>3</p>
-									<p><span>1,000자 이내</span> 텍스트 및 <span>이미지</span> 전송 가능</p>
-								</li>
-								<li>
-									<p>4</p>
-									<p><span>맞춤형 메시지 및 쿠폰, 링크</span> 버튼 제공 가능</p>
-								</li>
-								<li>
-									<p>5</p>
-									<p>문자 메시지 대비 <span>저렴한</span> 단가</p>
-								</li>
-								<li>
-									<p>6</p>
-									<p>발송실패 시 <span>대체문자 발송</span> 기능 지원</p>
-								</li>
-								<li>
-									<p>7</p>
-									<p>클릭률/도달률 분석을 통한 <span>마케팅 효율 강화</span></p>
-								</li>
-								<li>
-									<p>8</p>
-									<p>브랜드 친화적인 <span>이미지 커스터마이징</span> 가능</p>
-								</li>
+                                    <p>1</p>
+                                    <p><span>광고성 메시지</span> 발송 가능(광고 표기 및 수신거부 안내 포함)</p>
+                                </li>
+                                <li>
+                                    <p>2</p>
+                                    <p>채널 친구 추가된 사용자라면 <span>누구에게나</span> 발송 가능<strong>(타깃 설정 미지원)</strong></p>
+                                </li>
+                                <li>
+                                    <p>3</p>
+                                    <p>
+                                        <span>1,000자 이내</span> 텍스트 및 <span>이미지</span> 전송 가능
+                                    </p>
+                                </li>
+                                <li>
+                                    <p>4</p>
+                                    <p><span>맞춤형 메시지 및 쿠폰, 링크</span> 버튼 제공 가능</p>
+                                </li>
+                                <li>
+                                    <p>5</p>
+                                    <p>문자 메시지 대비 <span>저렴한</span> 단가</p>
+                                </li>
+                                <li>
+                                    <p>6</p>
+                                    <p>발송실패 시 <span>대체문자 발송</span> 기능 지원</p>
+                                </li>
+                                <li>
+                                    <p>7</p>
+                                    <p>클릭률/도달률 분석을 통한 <span>마케팅 효율 강화</span></p>
+                                </li>
+                                <li>
+                                    <p>8</p>
+                                    <p>브랜드 친화적인 <span>이미지 커스터마이징</span> 가능</p>
+                                </li>
 							</ul>
 						</div>
 			
@@ -364,7 +366,7 @@
 						<div class="fight">
 							<div class="line"></div>
 							<div class="fight-title">
-								<h4>알림톡 <span>VS</span> 친구톡</h4>
+								<h4>알림톡 <span>VS</span> 브랜드메시지</h4>
 								<div class="circle"></div>
 							</div>
 			
@@ -400,17 +402,17 @@
 								</div>
 			
 								<div class="vs friendtalk_vs">
-									<div class="title">친구톡</div>
+									<div class="title">브랜드메시지</div>
 									<div class="box">
 										<ul>
-											<li>채널 친구</li>
-											<li>광고 및 마케팅성<span>(예 : 이벤트, 쿠폰 등)</span></li>
-											<li>텍스트, 기본이미지, 와이드 이미지형 등</li>
-											<li>최대 5개</li>
-											<li>별도 승인 없음 <span>야간 발송 제한(20:50 ~ 익일 08:00)</span></li>
-											<li>13.8원 ~ 22.9원</li>
-											<li>1,000자</li>
-											<li>가능</li>
+											<li>채널 친구<span>(타깃 설정 미지원)</span></li>
+                                            <li>광고 및 마케팅성<span>(예 : 이벤트, 쿠폰 등)</span></li>
+                                            <li>텍스트, 기본이미지, 와이드 이미지형 등</li>
+                                            <li>최대 5개</li>
+                                            <li>별도 승인 없음 <span>야간 발송 제한(20:50 ~ 익일 08:00)</span></li>
+                                            <li>20원</li>
+                                            <li>1,000자</li>
+                                            <li>가능</li>
 										</ul>
 									</div>
 								</div>
@@ -422,7 +424,7 @@
 				<!-- 친구톡 유형 -->
 				<div class="use">
 					<div class="title">
-						<h3>친구톡 유형</h3>
+						<h3>브랜드메시지 유형</h3>
 					</div>
 			
 					<div class="title-line">
@@ -476,14 +478,14 @@
 						<li class="guide_03">
 							<div class="title">STEP <span>03</span></div>
 							<i></i>
-							<p class="guide_title">친구톡 전송</p>
-							<span class="guide_info">친구톡은 별도의 템플릿 심사 절차 없이, 즉시 발송 가능합니다.</span>
+							<p class="guide_title">브랜드메시지 전송</p>
+							<span class="guide_info">브랜드메시지는 별도의 템플릿 심사 절차 없이, 즉시 발송 가능합니다.</span>
 						</li>
 					</ul>
 			
 					<!--이용가이드 버튼-->
 					<div class="guide">
-						<a href="https://kakaobusiness.gitbook.io/main/ad/brandmessage" target="_blank">친구톡 이용가이드 보기 <img src="/publish/images/kakao_intro_cont/guide_arrow.png" alt="알림톡 이용가이드 화살표"></a>
+						<a href="https://kakaobusiness.gitbook.io/main/ad/brandmessage" target="_blank">브랜드메시지 이용가이드 보기 <img src="/publish/images/kakao_intro_cont/guide_arrow.png" alt="알림톡 이용가이드 화살표"></a>
 					</div>
 				</div>
 			
@@ -493,15 +495,14 @@
 						<p><span><img src="/publish/images/kakao_intro_cont/note_icon.png" alt="유의사항 아이콘"></span>유의사항</p>
 					</div>
 					<ul>
-						<li>- (광고) 표기 여부는 선택 가능하나 , (광고)표기 해제에 따른 법령상 의무사항을 미 준수시에는 메시지 발송이 중단될 수 있습니다.</li>
-						<li>- 광고성 친구톡 메시지에는 “(광고) 표시 및 수신거부 방식”이 표시되며, 대체 문자의 경우에는 “(광고) 문구 및 080 무료수신거부 번호”가 자동으로 포함됩니다.</li>
-						<li><b>- 광고성 메시지의 발송 가능 시간은 08:00 ~ 20:50(한국시간) 입니다.</b></li>
-						<li>- 친구톡 발송 실패에 따른 대체문자 발송 시 문자요금(단문, 장문, 그림)이 보유 캐시에서 차감됩니다.</li>
-						<li>- 카카오정책 및 심의기준을 반드시 준수하여야 합니다.</li>
+						<li>- 브랜드메시지에는 "(광고) 문구 및 수신거부 방식"이 자동으로 표시되며, 대체 문자 발송 시에는 “(광고) 문구 및 080 무료수신거부 번호”가 자동으로 적용됩니다.</li>
+                        <li><b>- 광고성 메시지의 발송 가능 시간은 08:00 ~ 20:50(한국시간) 입니다.</b></li>
+                        <li>- 브랜드메시지 발송 실패에 따른 대체문자 발송 시 문자요금(단문, 장문, 그림)이 보유 캐시에서 차감됩니다.</li>
+                        <li>- 카카오정책 및 심의기준을 반드시 준수하여야 합니다.</li>
 					</ul>
 				</div>
 			</div>
-			<!-- // 친구톡 소개 -->
+			<!-- // 브랜드메시지 소개 -->
 
 		</div>
 	</div>
 
src/main/webapp/WEB-INF/jsp/web/kakao/msgdata/bt/brandMsgDataView.jsp (added)
+++ src/main/webapp/WEB-INF/jsp/web/kakao/msgdata/bt/brandMsgDataView.jsp
@@ -0,0 +1,2678 @@
+<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
+<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
+<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
+<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
+<%@ taglib prefix="ec" uri="/WEB-INF/tld/ecnet_tld.tld"%>
+<%@ page import="itn.com.cmm.LoginVO" %>
+<script src="/js/kakao/ft/templateComm.js"></script>
+
+<script type="text/javascript" src="<c:out value='/js/MJUtill.js' />"></script>
+<script type="text/javascript" src="<c:out value='/js/kakao/ft/ftPriceClclt.js' />"></script>
+<script type="text/javascript" src="<c:out value='/js/kakao/ft/ftTabulator.js?v=20240328' />"></script>
+<script type="text/javascript" src="<c:out value='/js/txtSpecialReplace.js' />"></script>
+<script type="text/javascript" src="<c:out value='/js/kakao/ft/addr.js' />"></script>
+<script type="text/javascript" src="<c:out value='/js/common/popup.js' />"></script>
+<script type="text/javascript" src="<c:out value='/js/kakao/ft/friendstalkExcel.js' />"></script>
+<!-- 주소록 유효성 체크 공통유틸로 인해 추가 -->
+<script type="text/javascript" src="<c:url value='/js/web/addr/cmn.js?date=202409021440'/>"></script>
+
+
+<script type="text/javascript">
+
+var loginVO = '${loginVO}';
+/* 파일등록 */
+var _fileIdx = 0;
+var _fileForm2 = new Array();
+var fileExt = ""; // 첨부파일 확장자
+var excelAddr = []; //엑셀 불러오기에서 내용 저장하는 배열 변수
+
+var KAKAO_FT_PRICE;
+var KAKAO_FT_IMG_PRICE;
+var KAKAO_FT_WIDE_IMG_PRICE;
+$(document).ready(function (){
+	
+	KAKAO_FT_PRICE  = $('#kakaoFtPrice').val();
+	KAKAO_FT_IMG_PRICE  = $('#kakaoFtImgPrice').val();
+	KAKAO_FT_WIDE_IMG_PRICE  = $('#kakaoFtWideImgPrice').val();
+	//화면 초기 로딩시 화면 처리해주기 - 템플릿 불러오기 했을 경우를 위함
+	initFormChk();
+	
+	//특수문자, 일괄변화문구 삽입 기능 처리
+	$(".symbolButton, .changeWord").on('click', function(){
+		
+		// 커서 위치에 삽입
+		setCursorInsertText("inputTemplateContent", $(this).attr("value"));
+		setContentsLeng($('#inputTemplateContent').val());
+	});
+	
+	
+	//즉시 발송 라디오 버튼 선택시 숨김처리
+	$('input[name="reserYn"]').on('change', function() {
+		const isReserve = $(this).val() === 'Y';
+
+		$('.rev_selected').toggle(isReserve);
+		$('.send_rev .send_content').css('padding-bottom', isReserve ? '0' : '108px');
+		$('.send_btn .btnType:first-child').html(isReserve ? '예약하기' : '발송하기');
+		$('#bizForm #reserveYn').val($(this).val());
+	});
+	
+	//템플릿 내용 입력 글자수 체크 해주기
+	$("#inputTemplateContent").keyup(function(e){
+		
+		var contents = $('#inputTemplateContent').val();
+		setContentsLengForFriends(contents);
+		
+	});
+	
+// 웹링크 버튼명 변경 시 미리보기에도 적용 (여러 개일 때 정확하게)
+	$(document).on('keyup', '#btnNmWeb', function(){
+		var inputTxt = $(this).val() || '웹링크';
+		// 웹링크용 인풋만 골라서 현재 인덱스를 구함
+		var $webNmInputs = $('input#btnNmWeb');
+		var idx = $webNmInputs.index(this);
+		// 미리보기 영역의 웹링크 버튼들 중, 동일한 인덱스의 버튼 텍스트를 바꿔줌
+		$('.btnViewArea .btn_kakao_type.btnEmpty[id^=btnViewWL]').eq(idx).text(inputTxt);
+	});
+	$(document).on('keyup', '#btnNmApp', function(){
+		var inputTxt = $(this).val() || '앱링크';
+		var $appNmInputs = $('input#btnNmApp');
+		var idx = $appNmInputs.index(this);
+		$('.btnViewArea .btn_kakao_type.btnEmpty[id^=btnViewAL]').eq(idx).text(inputTxt);
+	});
+
+	$(".friend_talk_wrap #ad_Y").click(function () {
+		if ($(this).is(":checked") == true) {
+
+			fnAgentCodeChg();
+		}
+		thisFnByteString($('#smsTxtArea').val());
+	});
+	$("#send_fail_check").change(function(){
+		if($("#send_fail_check").is(":checked")){
+
+			
+			if(loginVO == "" || loginVO == null){
+				alert("로그인 후 사용 가능한 기능입니다.");
+				location.href="<c:url value='/web/user/login/login.do'/>";
+				return false;
+				
+				$("#send_fail_check").prop("checked", false);
+			}
+			
+			if($('#callFromList').val() === ''){
+				
+				if(confirm('대체문자 전송을 위한 발신번호가 등록되지 않았습니다. \n대체문자 발신번호를 지금 등록하시겠습니까?')){
+					window.location="<c:out value='/web/user/sendNumberManage.do' />";
+				}
+				$("#send_fail_check").prop("checked", false);
+				
+			}else{
+				// 에러버튼 체크 초기화
+				fn_insertErrorYN('N');
+				
+				$('#smsTxtArea').val('');
+// 				// 미리보기 텍스트를 가져와 줄바꿈 처리 후 대체문자 내용으로 입력
+				$('#smsTxtArea').val(
+					$('.template_text').html().trim().replace(/(<br>|<br\/>|<br \/>)/g, '\r\n')
+				);
+
+// 				//문자 내용 입력시 바이트수 계산하기
+				
+				$(".replace_send_wrap").slideDown(400);
+				thisFnByteString($('#smsTxtArea').val());
+			}
+		}else{
+			$(".replace_send_wrap").slideUp(400);
+			// 초기화 버튼 클릭
+			$('#failCheckInit').click();
+			$('.send_top .send_right .phone').css({'top': '0','transition': 'top .4s linear'});
+		}
+
+		// 금액 계산 fn 호출
+		totalFtPriceSum(tableL.getRows().length);
+		//fn_priceClclt();
+	});
+	
+	// 대체문자 내용 수정
+	$('#smsTxtArea').keyup(function(){
+		// 금액 계산 fn 호출
+		totalFtPriceSum(tableL.getRows().length);
+		//fn_priceClclt();
+		// 문자 바이트수 체크
+		thisFnByteString($('#smsTxtArea').val());
+		// 에러버튼 체크 초기화
+		fn_insertErrorYN('N');
+		
+	});
+	
+	
+
+	// 광고포함여부 체크 이벤트
+	$("#ad_Y").click(function () {
+		const isChecked = $(this).prop("checked");
+		$('#adFlag').val(isChecked ? 'Y' : 'N');
+	});
+	
+
+	$("input[name='img_file_add']").change(function () {
+
+		imageInit();
+		
+
+		// 첨부가 없으면 
+		if ($('#sendFailImgSrc').attr('src') != null) {
+			$('#sendFailImg').hide();
+			$('#sendFailImgSrc').attr('src', '');
+			$('#atchFileId').val('');
+			thisFnByteString($('#smsTxtArea').val());
+		}
+		
+		
+		
+
+		//결제 금액 구하기
+	    totalFtPriceSum(tableL.getRows().length);
+	});
+	
+	// 최근 전송내역
+	resultLatestMsgList();
+	//자주보내는 번호
+	resultBookMarkMsgList();
+	
+	
+	
+
+	// 대체문자 초기화
+	$('#failCheckInit').on('click', function(){
+		console.log('::failCheckInit::');
+		$('#smsTxtArea').val('');
+		thisFnByteString('');
+		
+	 });
+	 
+	
+	
+});
+
+function imageInit(){
+
+	var imageUrl = $("#templateImageUrl").val();
+	
+	// 이미지가 없으면 function 종료
+	if(imageUrl == ''){
+		return false;
+	}
+	
+	// 이미지가 있으면 이미지 창 및 미리보기 창에 이미지 삭제 
+	$("#imgLink").val("");
+	$("#imgFile").val("");
+
+	$('#imgTitle').addClass('file_none')
+					.text("이미지 없음");
+
+	$('#imgLink').prop('disabled', false);  // 회색 처리 제거 + 입력 불가 제거
+	
+	$("#templateImageUrl").val("");
+	$('.kakao_image').css("display", "none");
+	$("#kakaoImg").attr("src", "");
+	$("#imageFileName").val("");	//이미지 파일명 삭제
+	
+}
+/* 
+function validateButtons() {
+	var isValid = true;
+
+	console.log($('#buttonAddWrap').html());
+	var val = '';
+	// button_add_wrap 하위 input들 중에서 비어있는 항목이 있는지 확인
+	$('#buttonAddWrap').find('input[type="text"]').each(function() {
+
+		var val = $(this).val().trim();
+		if (val === '') {
+			console.log($(this).prop('outerHTML'));
+			isValid = false;
+			return false; // .each 루프 중단
+		}
+	});
+	
+	if (!isValid) {
+		alert('버튼명 및 링크를 입력해주세요.');
+		return false;
+	}else if (!val.startsWith('http://') && !val.startsWith('https://') ) {
+		alert('버튼의 링크는 http:// 또는 https:// 형식으로 입력해주세요.');
+		$(this).focus();
+		return false;
+	}
+
+	return true;
+} */
+
+function validateButtons() {
+	var isValid = true;
+
+	$('.kakaoBtnNmList').each(function() {
+		var val = $(this).val().trim();
+
+		// 빈 값 체크
+		if (val === '') {
+			alert('버튼명을 모두 입력해주세요.');
+			$(this).focus();
+			isValid = false;
+			return false; // .each 루프 중단
+		}
+	
+	});
+	
+	if(isValid){
+		$('.kakaoBtnList').each(function() {
+			var val = $(this).val().trim();
+	
+			// 빈 값 체크
+			if (val === '') {
+				alert('링크를 모두 입력해주세요.');
+				$(this).focus();
+	 			isValid = false;
+				return false; // .each 루프 중단
+			}
+	
+			// http 형식 체크
+			if (!val.startsWith('http://') && !val.startsWith('https://')) {
+				alert('버튼의 링크는 http:// 또는 https:// 형식으로 입력해주세요.');
+				$(this).focus();
+	 			isValid = false;
+				return false; // .each 루프 중단
+			}
+		});
+	}
+
+
+	return isValid;
+}
+
+//최근 전송내역
+function resultLatestMsgList(){
+
+  
+  $.ajax({
+      type:"POST",
+      url:"/web/mjon/msgdata/resultLatestMsgListAjax.do",
+      data:{},
+      dataType:'json',
+      // timeout:(1000*30),
+      success:function(data){
+          console.log('resultLatestMsgList : ',data.object);
+          
+
+          // 가져온 데이터 배열
+          let resultList = data.object; 
+          let $latestMsgUl = $('#latestMsgUl'); // 기존 리스트 UL
+
+          // 기존 내용을 비우기
+          $latestMsgUl.empty();
+
+          // 데이터가 있는 경우
+          if (resultList && resultList.length > 0) {
+              resultList.forEach(function(item, index) {
+                  let listItem = 
+                      '<li id="latestLi">' +
+                          '<input type="checkbox" id="addrChk_' + (index + 1) + '" name="latAddrChk" value="' + item.callTo + '">' +
+                          '<label for="addrChk_' + (index + 1) + '" class="label">최근 전송내역</label>' +
+                          '<p>' + item.callTo + '</p>' +
+                          '<button type="button" id="latestAddrDel">' +
+                              '<img src="/publish/images/popup/close3.png" alt="전화번호 삭제">' +
+                          '</button>' +
+                      '</li>';
+                  
+                  $latestMsgUl.append(listItem);
+              });
+          } else {
+              // 데이터가 없는 경우
+              $latestMsgUl.append('<li><p>최근 발송 내역이 없습니다.</p></li>');
+          }
+      },
+      error:function(request , status, error){
+          console.log(' error ?');
+          console.log('request : ', request);
+          console.log('status : ', status);
+      }
+  });
+}
+
+//자주보내는 번호
+function resultBookMarkMsgList(){
+
+  $.ajax({
+      type:"POST",
+      url:"/web/mjon/msgdata/resultBookMarkMsgList.do",
+      data:{},
+      dataType:'json',
+      // timeout:(1000*30),
+      success:function(data){
+          console.log('resultBookMarkMsgList : ',data.object);
+          
+
+          // 가져온 데이터 배열
+          let resultList = data.object; 
+          let $bookMsgUl = $('#bookMsgUl'); // 기존 리스트 UL
+
+          // 기존 내용을 비우기
+          $bookMsgUl.empty();
+
+          // 데이터가 있는 경우
+          if (resultList && resultList.length > 0) {
+              resultList.forEach(function(item, index) {
+//                console.log(item.addrPhoneNo + " : " + item.addrPhoneNo);
+                  let listItem = 
+                      '<li id="bookMarkLi">' +
+                          '<input type="checkbox" id="bokAddrChk_' + (index + 1) + '" name="bookAddrChk" value="' + item.addrPhoneNo + '">' +
+                          '<label for="bokAddrChk_' + (index + 1) + '" class="label">최근 전송내역</label>' +
+//                           '<p>' + item.addrPhoneNo + '</p>' +
+                          '<p>' + item.addrPhoneNo + '</p>' +
+                          '<button type="button" id="bookMarkAddrDel">' +
+                              '<img src="/publish/images/popup/close3.png" alt="전화번호 삭제">' +
+                          '</button>' +
+                      '</li>';
+                  
+                  $bookMsgUl.append(listItem);
+              });
+          } else {
+              // 데이터가 없는 경우
+              $bookMsgUl.append('<li><p>등록된 자주 보내는 번호 내역이 없습니다..</p></li>');
+          }
+      },
+      error:function(request , status, error){
+          console.log(' error ?');
+          console.log('request : ', request);
+          console.log('status : ', status);
+      }
+  });
+}
+
+function initFormChk(){
+	console.log(':: initFormChk ::');
+	
+	//채널ID 정보 미리보기에 표시해주기
+	fnAgentCodeChg();
+	
+	//템플릿 등록 이미지가 있는 경우 이미지 정보 표시해 주기
+	var imgType = $('#imageType').val();
+
+	$("#img_file_0").prop('checked',true);
+	if(imgType){
+		
+		if(imgType == 'I'){
+			
+			$('#img_file_1').click();
+			
+		}else if(imgType == 'W'){
+			$('#img_file_2').click();
+		} 
+
+		// 이미지명 입력
+		$('#imgTitle').removeClass('file_none')
+						.text($('#imageFileName').val());
+		
+		
+		$('#imgLink').val($('#imgLinkTemp').val());  // 이미지 link
+		$('#imgLink').prop('disabled', true);  // 회색 처리 + 입력 불가
+		// 이미지 URL은 해당 input에 있음.
+		
+		/* else{
+			$(".img_add_info_wrap, .img_file_add_wrap").hide();
+		} */
+		
+	}
+	
+	var imgUrl = $('#templateImageUrl').val();
+	
+	if(imgUrl != ''){
+		$('.kakao_image').css("display", "block");
+		$("#kakaoImg").attr("src", imgUrl);
+		$("#kakaoImg").attr("src", imgUrl);
+
+		$('#sendFailImg').show();
+		$('#sendFailImgSrc').attr('src', imgUrl);
+		
+	}
+	
+	//초기 템플릿 내용 글자수 처리해주기
+	var tmpContents = $('#inputTemplateContent').val();
+	setContentsLengForFriends(tmpContents);
+	
+	var reserYn = $("input[name=reserYn]:checked").val();
+	if(reserYn == 'N'){
+		
+		$('.rev_selected').hide();
+		$('.send_rev .send_content').css('padding-bottom','108px');
+		$('.send_btn .btnType:first-child').html('발송하기');
+		$('#bizForm #reserveYn').val('N');
+		
+	}
+	
+	
+	// 광고포함여부 체크
+	// 기본
+	// 	- adFlag = Y
+	// 	- ad_Y = Y
+	if($('#adFlag').val() == 'N'){
+		$('#ad_Y').click();
+	}
+	
+	
+}
+
+//우측 미리보기 화면 채널 아이디 정보 변경해 주기
+function fnAgentCodeChg(){
+	var yellowIdVal = $("#selectAgentCode option:checked").val();
+	var yellowId = $("#selectAgentCode option:checked").text();
+	var yellowIdAt = yellowId.replaceAll('@','');
+	
+	// 체크 여부에 따라 채널ID 문구 설정
+	
+	if(yellowIdVal != ''){
+		
+		$('#spnYellowid').text(yellowId);	// 미리보기화면 최상단 채널ID
+		
+		var cleanYellowId = yellowId.replace(/^@/, ""); // 앞에 @ 기호 제거
+		if ($("#ad_Y").is(":checked")) {
+			
+			$("#adTxt").show(); // 내용
+// 			$("#adTxt p").html("(광고) " + cleanYellowId + ""); // 내용 
+			$("#adTxt p").html("(광고)"); // 내용 
+			
+// 			$("#talkTitle").html("<span>(광고)</span> " + cleanYellowId); // 미리보기 화면 상단
+			$("#talkTitle").html("<span>(광고)</span> "); // 미리보기 화면 상단
+		} 
+		
+	}else{
+		
+		var channelId = "채널ID";
+		
+		$('#spnYellowid').text(channelId);	// 미리보기화면 최상단 채널ID
+		
+		if ($("#ad_Y").is(":checked")) {
+			
+			$("#adTxt").show(); // 내용
+// 			$("#adTxt p").html("(광고) " + channelId + ""); // 내용 
+			$("#adTxt p").html("(광고)"); // 내용 
+			
+// 			$("#talkTitle").html("<span>(광고)</span> " + channelId); // 미리보기 화면 상단
+			$("#talkTitle").html("<span>(광고)</span>"); // 미리보기 화면 상단
+		} else {
+			$("#adTxt").hide(); // 내용
+			$("#talkTitle").html(channelId); // 미리보기 화면 상단
+		}
+	}
+}
+
+//파일첨부 버튼 클릭시 파일 첨부 실행
+function upImgClick(){
+	var selectChennelID = $("select[name='selectAgentCode']").val();	//채널ID 정보
+	var imageType = $("input[name=img_file_add]:checked").val();		//이미지 종류 정보(일반, 와이드)
+	var title = $("#imgTitle").text();
+	var link = $("#imgLink").val();
+	
+	if(selectChennelID == ''){
+		
+		$("#imgTitle").text("");
+		$("#imgFile").val("");
+		alert("채널ID를 선택해 주세요.");
+		return false;
+		
+	}
+	
+	if(imageType != ''){
+		
+		bizForm.imageType.value = imageType;
+		
+	}else{
+		
+		$("#imgTitle").text("");
+		$("#imgFile").val("");
+		alert("이미지 종류를 선택해 주세요.");
+		return false;
+		
+	}
+	/* 
+	if(title == ''){
+		
+		$("#imgTitle").text("");
+		$("#imgFile").val("");
+		alert("이미지 제목을 입력해 주세요.");
+		return false;
+		
+	} */
+	
+	//이미지 선택시 링크 정보 및 url 패턴 검사
+	console.log('link: ', link);
+	if (!link) {
+		if(!confirm("먼저 URL을 입력하지 않으면 이미지에 URL이 저장되지 않습니다. 계속하시겠습니까?")){
+			return false;	
+		}
+	}else if(!link.startsWith('http://') && !link.startsWith('https://')){
+		alert('이동할 URL은 http:// 또는 https:// 형식으로 입력해주세요.');
+		return false;	
+	}
+	/* 
+	else if(link.search("http://") == -1 && link.search("https://") == -1){
+
+		$("#imgTitle").text("");
+		$("#imgFile").val("");
+		alert("이미지 URL 주소에는 http:// 또는 https://를 포함하여 입력해야 합니다.");
+		return false;
+	}
+ */	
+	//첨부파일 선택 팝업 호출해주기
+	$("#imgFile").click();
+}
+
+//첨부 이미지 정보 확인 처리 해주기(이미지 리사이징 전단계)
+function imgResizeInfo(event){
+	
+	var fileValue = $("#imgFile").val().split("\\");
+	var fileName = fileValue[fileValue.length-1];
+	
+	var fileExt = fileName.split('.').pop().toLowerCase();
+
+	if(fileExt.length > 0){
+		if($.inArray(fileExt, ['jpg','jpeg','png']) == -1) {
+			alert('jpg, jpeg, png 파일만 업로드 할수 있습니다.');
+			return false;
+	   	}
+	   
+		$("#imgTitle").text(fileName); 
+	}
+	
+	//알림톡 이미지 등록 요청하기
+	getTemplateImagUrl();
+}
+
+//카카오 친구톡 이미지 등록 요청 API 호출해주기
+function getTemplateImagUrl(){
+	
+	var bizForm = document.bizForm;
+	
+	var data = new FormData(bizForm);
+	var atchFileSts = true;	//첨부파일 갯수 상태 값1
+	
+	data.append("file0", $('#imgFile').prop('files')[0]);
+	
+	var fileValue = $("#imgFile").val().split("\\");
+	var fileName = fileValue[fileValue.length-1];
+	
+	var fileExt = fileName.split('.').pop().toLowerCase();
+	
+	if($.inArray(fileExt, ['jpg','jpeg', 'png']) == -1) {
+
+		alert('jpg, jpeg 파일만 업로드 할수 있습니다.');
+		return false;
+
+   	}
+	
+	
+// 	if(fileExt == "jpg" || fileExt == "jpeg" || fileExt == "png"){
+	console.log('fileExt : ', fileExt);
+	if(fileExt != null && fileExt !== "jpg" && fileExt !== "jpeg" && fileExt !== "png"){
+	    alert("jpg, jpeg, png 파일만 업로드 할 수 있습니다.");
+	    return;
+	}
+
+	
+    var url = url = "/web/mjon/kakao/template/sendKakaoFriendsTemplateImageUploadAjax_advc.do";
+//     var url = url = "/web/mjon/kakao/template/sendKakaoFriendsTemplateImageUploadAjax.do";
+	
+	$.ajax({
+		type : 'POST'
+		, enctype : 'multipart/form-data'
+		, url : url
+		, data : data
+		, dataType:'json'
+		, async:true
+		, processData: false
+		, contentType: false
+		, cache : false
+		, success : function(returnData){
+			console.log('returnData : ', returnData);
+			
+
+
+			if (returnData.status === 'OK' || returnData.status === 200) {
+				alert(returnData.message);
+				
+				$('#imgTitle').removeClass('file_none')
+								.text(fileName);
+				$('#imgLinkTemp').val($('#imgLink').val());  // 회색 처리 + 입력 불가
+				$('#imgLink').prop('disabled', true);  // 회색 처리 + 입력 불가
+
+
+				$("#imageFileName").val(fileName);
+				
+				
+
+				// imgUrl은 object에 포함된 경우만 처리
+				if (returnData.object) {
+					$("#templateImageUrl").val(returnData.object.imgUrl);
+					$(".kakao_image").css("display", "block");
+					$("#kakaoImg").attr("src", returnData.object.imgUrl);
+					
+					
+					// 대체문자 이미지
+					$("#atchFileId").val(returnData.object.atchFileId);
+					// 대체문자
+					$('#sendFailImg').show();
+					$('#sendFailImgSrc').attr('src', returnData.object.imgUrl);
+					// 대체문자 포토형으로 수정 
+// 					$('.put_left').removeClass("short"); //내용 입력 박스 클래스 삭제
+// 					$('.put_left').removeClass("long"); //내용 입력 박스 클래스 삭제
+// 					$('.put_left').addClass('photo'); 
+					setSendFailTemplate('P')
+				}
+
+			} else {
+				alert(returnData.message || "이미지 등록 중 오류가 발생하였습니다.");
+
+				// 첨부파일 정보 초기화
+				$("#imgFile").val("");
+
+				$('#imgTitle').addClass('file_none')
+								.text("이미지 없음");
+				return false;
+			}
+		},
+		beforeSend : function(xmlHttpRequest) {
+        	//로딩창 show
+        	$('.loading_layer').addClass('active');				
+		},	        	        
+        complete : function(xhr, textStatus) {
+        	//로딩창 hide
+        	$('.loading_layer').removeClass('active');
+		},
+		error : function(request , status, error){
+			alert("code:"+request.status+"\n"+"message:"+request.responseText+"\n"+"error:"+error);
+		}
+	});
+	
+	//첨부파일 이름 및 데이터 지워주기 - 완료 후 팝업이 자동으로 닫힘.
+	$("#imgFile").val("");
+}
+
+function setSendFailTemplate(p_type){
+	if(p_type == 'P'){
+		// 대체문자 포토형으로 수정 
+		$('.put_left').removeClass("short"); //내용 입력 박스 클래스 삭제
+		$('.put_left').removeClass("long"); //내용 입력 박스 클래스 삭제
+		$('.put_left').addClass('photo'); 
+
+		$('.msg_com').removeClass("msg_short"); //단문 클래스 삭제하고
+		$('.msg_com').removeClass("msg_long"); //단문 클래스 삭제하고
+		$('.msg_com').addClass("msg_photo"); //단문 클래스 삭제하고
+		
+
+		$('#limitLeng').html("2000");
+		$('.msg_com').html("그림");
+		
+	}
+	
+}
+
+function fnImageDel(){
+	
+	if(confirm("등록된 이미지를 삭제하시겠습니까?")){
+		imageInit();
+	}
+	
+	
+	
+	/* var imageUrl = $("#templateImageUrl").val();
+	var bizForm = document.bizForm;
+	
+	bizForm.senderKey.value = $("select[name='selectAgentCode']").val();	// 선택 채널ID
+	
+	if(imageUrl == ''){
+		
+		alert("등록된 이미지가 없습니다.");
+		return false;
+		
+	}
+	
+	var tmpFriendId = $("#tmpFriendId").val();
+	console.log(' + tmpFriendId :: ', tmpFriendId);
+	if(tmpFriendId != ''){
+		
+		if(!confirm("불러온 템플릿의 이미지도 함께 삭제 됩니다. 계속하시겠습니까?")){
+			return false;
+		}
+		
+	}
+	
+	var data = new FormData(bizForm);
+	
+	if(confirm("등록된 이미지를 삭제하시겠습니까?")){
+		
+		$.ajax({
+			type: "POST"
+			, url: "/web/mjon/kakao/template/deleteKakaoFriendsImageDataAjax.do"
+			, data: data
+			, dataType: 'json'
+			, async: false
+			, processData: false
+			, contentType: false
+			, cache: false
+			, success: function (returnData, status) {
+				
+				var result = returnData.result;
+				var code = returnData.code;
+				var msg = returnData.msg;
+				
+				if(result == "notLogin") {//차단 발신번호인 경우 등록 불가
+					alert("로그인후 진행이 가능합니다.");
+				}else if(returnData.result == "success") {
+					
+					if(code == "200"){
+						alert("등록된 이미지가 삭제되었습니다.");
+						$("#imgLink").val("");
+						$("#imgFile").val("");
+
+						$('#imgTitle').addClass('file_none')
+										.text("이미지 없음");
+
+						$('#imgLink').prop('disabled', false);  // 회색 처리 제거 + 입력 불가 제거
+						
+						$("#templateImageUrl").val("");
+						$('.kakao_image').css("display", "none");
+						$("#kakaoImg").attr("src", "");
+						$("#imageFileName").val("");	//이미지 파일명 삭제
+						$("#img_file_0").click();		//이미지 첨부 안함 선택
+						
+						
+
+						
+						
+						
+						return false;
+						
+					}else{
+						alert(msg);
+						return false;
+					}
+				}else{
+					alert("이미지 삭제에 오류가 발생하였습니다.");
+					return false;
+				}
+			}
+			,error: function (e) {
+				console.log("ERROR : ", e);
+				alert("이미지 삭제에 오류가 발생하였습니다.");
+			}
+		});
+	} */
+}
+
+//알림톡 내용 초기화 해주기
+function fnContentsReset(){
+	$("#inputTemplateContent").val("");
+	$(".template_text").text("내용 미리보기");
+	$('.nowChar').text("0 /");
+}
+
+//저장 템플릿 불러오기 선택시 
+function myTemplateSelect(ftId){
+	
+	var form = document.templateForm;
+	
+	form.friendId.value = ftId;
+	
+	form.action="/web/mjon/kakao/friendstalk/kakaoFriendsTalkMsgDataView.do";
+	form.submit();
+	
+	
+}
+
+/* 
+function advTextChange(adFlagVal){
+	console.log('adFlagVal : ', adFlagVal);
+	if(typeof adFlagVal == "undefined" || adFlagVal == null || adFlagVal == ""){
+		
+		$("#ad_Y").prop('checked',true);
+		
+	}else if(adFlagVal == 'N'){//광고 표시 숨김처리
+		
+		$('.adFlag').hide();
+		$('.kakao_block_text').hide();
+		$('.adFlagAfter').hide();
+		
+	}else{
+		$('.adFlag').show();
+		$('.kakao_block_text').show();
+		$('.adFlagAfter').show();
+	}
+	
+}
+ */
+
+//친구톡 내용 템플릿으로 저장하기 - 내용 저장하기
+function myTemplateSave(){
+
+	var selectAgentCode = $("select[name='selectAgentCode']").val();	// 선택 채널ID
+	var yellowId = $("select[name='selectAgentCode'] option:selected").text().replaceAll('@','');			// 선택 채널명
+	var inputTemplateName = $("#inputTemplateName").val();				// 입력 템플릿 이름
+	var imageType = $("input[name=img_file_add]:checked").val();		// 첨부 이미지 종류(없음, 일반, 와이드 이미지)
+	var imageTitle = $("#imgTitle").text();								//첨부이미지 제목
+	var imageLink = $("#imgLink").val();								//첨부이미지 클릭시 이동 링크 주소
+	var inputTemplateContent = $("#inputTemplateContent").val();		// 템플릿 내용
+	
+	var inputTemplateImageName = $("#templateImageName").val();	// 템플릿 이미지 파일명
+	var inputTemplateImageUrl = $("#templateImageUrl").val();		// 템플릿 이미지 링크
+	
+	// 공통 유효성 검사 조회
+	if(selectAgentCode == null || selectAgentCode == ""){
+		alert("채널ID를 선택해 주세요");
+		return;
+	};
+	
+	if(inputTemplateName == null || inputTemplateName == ""){
+		alert("템플릿 명을 입력해 주세요");
+		$("#inputTemplateName").focus();
+		return;
+	};
+	
+	if(imageType == 'I' || imageType == 'W'){
+		
+		if(imageTitle == ''){
+			
+			alert("이미지 제목을 입력해 주세요.");
+			return false;
+			
+		}
+		
+	/* 	if(imageLink == ''){
+			
+			alert("이미지 클릭시 이동할 URL을 입력해 주세요.");
+			return false;
+			
+		}else{
+			
+			if(imageLink.search("http://") == -1 && imageLink.search("https://") == -1){
+				
+				alert("이미지 URL 주소에는 http:// 또는 https://를 포함하여 입력해야 합니다.");
+				return false;
+				
+			}
+			
+		} */
+		
+		if(inputTemplateImageUrl == ''){
+			
+			alert("이미지를 선택해 주세요.");
+			return false;
+			
+		}
+		
+	}
+	
+	
+	if(inputTemplateContent == null || inputTemplateContent == ""){
+		alert("템플릿 내용을 입력해 주세요.");
+		return;
+	};
+	
+	var bizForm = document.bizForm;
+	bizForm.senderKey.value = selectAgentCode;
+	//bizForm.yellowId.value = yellowId;
+	bizForm.templateName.value = inputTemplateName;
+	//bizForm.imageType.value = imageType;
+	
+	bizForm.imgLink.value = imageLink;
+	console.log('imageLink : ', imageLink);
+	console.log('bizForm.imgLink.value : ', bizForm.imgLink.value);
+	
+	bizForm.templateContent.value = inputTemplateContent;
+	
+	var data = new FormData(bizForm);
+	data.append("imgLink", imageLink);
+	data.forEach((value, key) => {
+		console.log(key, value);
+	});
+	
+	if(confirm("템플릿을 저장하시겠습니까?")){
+		
+		$.ajax({
+			type: "POST"
+			, url: "/web/mjon/kakao/template/insertKakaoFriendsTemplateDataAjax.do"
+			, data: data
+			, dataType: 'json'
+			, async: false
+			, processData: false
+			, contentType: false
+			, cache: false
+			, success: function (returnData, status) {
+				
+				var result = returnData.result;
+				
+				if(result == "loginFail") {//차단 발신번호인 경우 등록 불가
+					alert("로그인후 진행이 가능합니다.");
+				}else if(returnData.result == "success") {
+					alert("템플릿 저장이 완료되었습니다.");
+					return false;
+				}else{
+					
+					alert("템플릿 저장에 오류가 발생하였습니다.");
+					return false;
+					
+				}
+			}
+			,error: function (e) {
+				console.log("ERROR : ", e);
+				alert("템플릿 저장에 오류가 발생하였습니다.");
+			}
+		});
+		
+	}
+	
+}
+
+//주소록 불러오기 버튼 클릭시
+$('.popupAddr').click(function(){
+	
+	if(loginVO == "" || loginVO == null){
+		alert("주소록 불러오기 서비스는 로그인 후 이용 가능합니다.");
+		location.href="<c:url value='/web/user/login/login.do'/>";
+		return false;
+	}
+	
+	$("#addrGroupLoad").load("/web/mjon/msgdata/selectAddrGroupListAjax.do", "" ,function(response, status, xhr){
+		//리스트 스크롤 처리해주기
+		$(".adr_pop_list").mCustomScrollbar({
+			axis: 'y',
+			scrollbarPosition: "outside",
+			theme: "dark",
+			autoHideScrollbar: false
+		});
+	});
+	
+});
+
+function fnEmptyId(){
+	
+	alert("로그인 후 이용이 가능합니다.");
+	return false;
+	
+}
+
+//분할전송 건수 데이터 체크
+function checkNumber(event) {
+	var divideCnt = $('#frmDivideCnt').val();
+	if(!(event.key >= 0 && event.key <= 9)) {
+		return false;
+	}
+	
+	var totCnt = divideCnt + "" + event.key;
+	if(Number(totCnt) > 5000){
+		alert("분할전송 건수는 5,000건을 초과할 수 없습니다.");
+		$('#frmDivideCnt').val("20");
+		return false;
+	}
+  
+  return true;
+}
+
+function fnSelectMinChk(){
+	
+	var resHour = $("#msgResHour option:selected").val();
+	var resMin = $("#msgResMin option:selected").val();
+	
+	if(resHour == '20'){
+		
+		if(resMin >= 50 && resMin <= 59){
+			
+			alert("친구톡은 20시 50분부터 익일 08시까지 발송이 제한됩니다.");
+			$("#msgResMin").val("40").prop("selected", true);
+			
+		}
+		
+	}
+	
+}
+
+
+//친구톡 발송 금지 시간 처리
+function fn_noTimeSend(){
+	
+	var id = '${loginVO.id}';
+
+	if(id == ""){
+		
+		alert("로그인 후 이용이 가능합니다.");
+		return false;
+		
+	}
+	
+	alert("친구톡은 20:50 ~ 익일 08:00까지 발송할 수 없습니다.");
+	return false;
+	
+}
+
+//친구톡 데이터 전송 처리
+function fn_sendMsgData(){
+	
+	// 유효성 검사 실패 시 저장 동작 중단
+/* 	if (!validateLinks()) {
+		return false;
+	}
+	 */
+	
+	var senderKey = $("#selectAgentCode option:checked").val();
+	
+	if(senderKey == ''){
+		
+		alert("채널ID를 선택해 주세요.");
+		return false;
+		
+	}else{
+		
+		$("#inputSenderKey").val(senderKey);
+		
+	}
+	
+	//이미지 첨부 체크	
+	var imgChk = $("input[name=img_file_add]:checked").val();
+	if(!getFtImageType(imgChk)){
+		return false;
+	}
+	
+	//템플릿 버튼 갯수 체크 
+	var buttonCnt = $(".btn_kakao_type").length;
+
+	if(buttonCnt > 0){
+		//json 파일 필요 유무 셋팅
+		$("#bizJsonYn").val("Y");
+	}
+	
+	//친구톡 내용 체크
+	var tmpContents = $('#inputTemplateContent').val();
+
+	if(tmpContents == ""){
+		
+		alert("친구톡 내용을 입력해 주세요.");
+		return false;
+		
+	}
+	
+	var rtnStr = strChinJpnCheck(tmpContents);
+	
+	//문자내용에 이모지가 있는지 체크
+	if(!emojiCheck(tmpContents)) return false;
+	
+	if(rtnStr.length > 0){
+		
+		alert("입력하신 문구 중 \" " + rtnStr + " \" 는 일부 휴대폰에서 표기되지 않을 수 있습니다.");
+		
+	}
+	
+
+	
+	var selectedData = tableL.getRows();
+	
+	if(selectedData == "" || selectedData == null){
+		
+		alert("받는사람 주소를 한 건 이상 입력해주세요.");
+		return false;
+	
+	}
+	
+	//예약문자 시간 체크
+	var reserYn = $("input[name=reserYn]:checked").val(); // 예약 발송 여부 확인
+	
+	if(reserYn == 'Y'){
+		
+		var date = $(".resDate").val();//form.msgResDate.value;
+		var hour = $("#msgResHour option:selected").val();
+		var min = $("#msgResMin option:selected").val();
+		
+		if(date == ""){
+			
+			alert("예약전송 날짜를 선택해 주세요.");
+			return false;
+			
+		}else{
+			
+			var now = new Date();
+			var reqDate = date + " " + hour + ":" + min + ":00";
+			var gapDate = getGapDayTime(date, hour, min);
+			
+			if(gapDate < 0){ // 음수이면 이전날짜, 크면 이후 날짜.
+				alert("예약 날짜는 현재 시간 이후의 날짜 및 시간을 선택해 주세요.");
+				return false;
+			}else{
+				$("#reqDate").val(reqDate);	//예약일자 파라미터 저장
+			}
+		}
+
+	}else{
+		
+		$("#reqDate").val("");	//예약일자 파라미터 저장
+		
+	}
+	
+	
+	//대체문자 선택 및 내용 체크
+	var subMsgSendYn = "N";
+	if($("#send_fail_check").is(":checked")){
+		subMsgSendYn = 'Y'
+		$('#callFrom').val($('#callFromList').val()) 
+	}
+	$("#subMsgSendYn").val(subMsgSendYn);
+	if(subMsgSendYn == 'Y'){
+		$("#subMsgTxt").val( $('#smsTxtArea').val());
+	}
+		
+	
+	
+	//템플릿 내용 입력
+	$("#templateContent").val(tmpContents);
+	
+	//광고포함 여부
+/* 	var adFlag = $("input[name=adFlag]:checked").val();
+	$("#adFlag").val(adFlag); */
+	
+	
+	if (!validateButtons()) {
+		return;
+	}
+	
+	
+	
+	if(!confirm("친구톡을 발송하시겠습니까?")){
+		return false;
+	}
+	
+		
+
+	// 타블레이터 호출
+	var $selectedData = tableL.getData(); // 데이터 가져오기
+	
+	var data = $('#bizForm');
+	var formDataArray = data.serializeArray();
+	
+	// 배열을 객체로 변환
+	var formData = {};
+	$.each(formDataArray, function(index, field) {
+		formData[field.name] = field.value;
+	});
+
+	// 2. buttonVOList 수동으로 수집
+	var buttonList = [];
+	$('input[name^="buttonVOList"]').each(function() {
+		let nameAttr = $(this).attr('name');
+		let match = nameAttr.match(/buttonVOList\[(\d+)\]\.(\w+)/);
+		if (match) {
+			let index = parseInt(match[1]);
+			let key = match[2];
+			let value = $(this).val();
+		
+			if (!buttonList[index]) buttonList[index] = {};
+			buttonList[index][key] = value;
+		}
+	});
+
+	// 3. formData에 배열로 추가
+	formData["buttonVOList"] = buttonList;
+	  // 회색 처리 + 입력 불가
+
+	// 4. 기존의 buttonVOList[0].xxx 형태 제거
+	Object.keys(formData).forEach(function(key) {
+		if (/^buttonVOList\[\d+\]\./.test(key)) {
+		    delete formData[key];
+		}
+	});
+	
+	// VO에 정의되어있지 않는 필요없는 값은 제거
+	["img_file_add", "userMoney", "callToList"].forEach(function(key) {
+		  delete formData[key];
+	});
+
+	formData["imgLink"] = $('#imgLinkTemp').val();
+
+	// 빈 값 제거
+	removeEmptyValues(formData);
+	// 선택된 데이터 추가
+	formData["mjonBTSendVOList"] = $selectedData;
+	// JSON 데이터 확인
+	console.log("최종 formData:", JSON.stringify(formData));
+
+
+    // 프로그래스파 시간을 위한 계산
+    var estimtedTime = calculateEstimatedTime(tableL.getRows().length);
+	
+	
+	$.ajax({
+		type: "POST"
+// 		, url: "/web/mjon/kakao/friendstalk/kakaoFriendsTalkMsgSendAjax_advc.do"
+		, url: "/web/mjon/kakao/brandMsg/kakaoBrandMsgSendAjax_advc.do"
+		, data: JSON.stringify(formData)
+		, contentType: 'application/json'
+		, dataType: 'json'
+		, success: function (data) {
+            console.log('data : ', data);
+            
+            var status = data.status;
+            if("OK" == status){
+                var resultSts = data.object.resultSts;
+                var reserYn = data.object.reserYn;
+                var resText = (reserYn === 'Y') ? '예약' : '발송';
+                    
+                $('.pop_msg_success').css({'display':'block','opacity':'1','left':'50%','top':'50%','transform':'translate(-50%,-50%)'});
+                $('.pop_msg_success .msg_text').html(resText+" 성공 : <strong>"+ resultSts + "</strong>건의<br>친구톡이 " + resText + " 되었습니다.");
+                
+            }else if("UNAUTHORIZED" == status){
+                alert(data.message);
+                location.reload();
+            }else{
+                alert(data.message);
+                return false;
+            }
+			
+			/* 
+			if(status == 'success'){
+				if("loginFail" == returnData.result){
+					
+					alert(returnData.message);
+					return false;
+					
+				}else  if('fail' == returnData.result){
+					
+					alert(returnData.message);
+					return false;
+					
+				}else if('authFail' == returnData.result){
+					
+					alert(returnData.message);
+					location.reload();
+					
+				} else if(status == 'success'){
+					
+					var kakaoSendCnt = returnData.resultSts;
+					
+					$('.pop_msg_success').css({'display':'block','opacity':'1','left':'50%','top':'50%','transform':'translate(-50%,-50%)'});
+					
+					//예약발송 건의 경우 결과 팝업 문구 변경
+					if(reserYn == 'Y'){
+						$('.pop_msg_success .msg_text').html("예약 성공 : <strong>"+ kakaoSendCnt + "</strong>건의<br>친구톡이 예약 되었습니다.");
+					}else{
+						$('.pop_msg_success .msg_text').html("발송 성공 : <strong>"+ kakaoSendCnt + "</strong>건의<br>친구톡이 발송 되었습니다.");
+					}
+					
+					$('.mask').addClass('on');
+				}
+			} */
+		}
+		,beforeSend : function(xmlHttpRequest) {
+			//로딩창 show
+// 			$('.loading_layer').addClass('active');
+            progressStart(estimtedTime);
+		}
+		,complete : function(xhr, textStatus) {
+			//로딩창 hide
+// 			$('.loading_layer').removeClass('active');
+            progressComplete();
+		}
+		,error: function (e) {
+			console.log("ERROR : ", e);
+			alert("카카오 브랜드메시지 전송에 실패하였습니다.");
+		}
+	}); 
+	
+}
+
+//프로그레스바 
+var start, change;
+var progressInterval = null; // 전역 변수로 타이머 ID 관리
+function progressStart(time) {
+  // 기존 타이머 정지 및 초기화
+  if (progressInterval !== null) {
+      clearInterval(progressInterval); // 이전 타이머 정지
+      progressInterval = null; // 타이머 ID 초기화
+  }
+  resetProgressBar(); // 프로그레스바 초기화
+
+  // 프로그레스바 보이기
+  $(".progress_bar_wrap").css("display", "flex");
+
+  // 프로그레스바 요소 가져오기
+  var timeText = document.querySelector(".time_text");
+  var bar = document.querySelector(".change_bar");
+
+  // 초기 상태 설정
+  var width = 1;
+  var totalTime = time * 1000; // 총 실행 시간 (밀리초)
+  var cmpWid = totalTime / 100; // width 증가 간격 (밀리초)
+
+  // 새 타이머 시작
+  progressInterval = setInterval(changeWidth, cmpWid);
+
+  function changeWidth() {
+      if (width >= 100) {
+          // 프로그레스바 100% 도달
+          clearInterval(progressInterval); // 타이머 종료
+          progressInterval = null; // 타이머 ID 초기화
+
+          timeText.innerHTML = "100%";
+
+          setTimeout(function () {
+              // 100% 표시 후 "잠시만 기다려주세요" 변경
+              timeText.innerHTML = "잠시만 기다려주세요...";
+              $(".time_text").addClass("animation");
+          }, 1000);
+      } else {
+          // 프로그레스바 진행
+          width++;
+          bar.style.width = width + "%";
+          timeText.innerHTML = width + "%";
+      }
+  }
+}
+
+//선택된 데이터의 길이에 따라 예상 시간 계산 함수
+function calculateEstimatedTime(selectedCount) {
+  //기준값
+  // const processTimePerBatch = 130; // 130초
+  
+  
+  // 30만건 기준 10분으로 기준을 잡아서 
+  // 시간계산함
+  const processTimePerBatch = 600;
+  const batchSize = 300000;
+  
+  // 1건당 처리 시간
+  const timePerRecord = processTimePerBatch / batchSize;
+
+  // 예상 시간 계산
+  const estimatedTimeInSeconds = selectedCount * timePerRecord;
+
+  return estimatedTimeInSeconds.toFixed(2);
+}
+
+//빈 값이나 null 값을 제거하는 함수
+function removeEmptyValues(obj) {
+  Object.keys(obj).forEach(function(key) {
+      if (obj[key] === null || obj[key] === '') {
+          delete obj[key];
+      }
+  });
+}
+
+/**
+ * @description 대체문자 오류체크 funciton
+ */
+function fn_errorChk(){
+
+	// 대체문자가 없을 시 return false;
+	if($('#txtReplYn').val() === 'N')
+	{
+		alert('오류가 없습니다.');
+		return false;
+	}
+
+	// 치환 부분 변수명만 추출 = 배열
+	var varList = $("#inputTemplateContent").val().match(/#\{([^}]+)\}/g);
+	
+	var smsTxt = $('#smsTxtArea').val();
+	for(var i=0; i < varList.length; i++){
+		if(smsTxt.indexOf(varList[i]) < 0){
+			if(confirm(varList[i] + '값이 없습니다. 치환문자 없이 진행하시겠습니까?')){
+				fn_insertErrorYN('Y');
+			};
+			return false;
+		}
+		smsTxt = smsTxt.replace(varList[i], '');
+	};
+	alert('오류가 없습니다.');
+	fn_insertErrorYN('Y');
+}
+
+
+function fn_insertErrorYN(val){
+	$('#errorChk').val(val);
+}
+
+//링크 유효성 검증 함수
+function validateLinks() {
+
+	console.log('검사 대상 수:', $('.kakaoBtnList').length);
+	
+	let isValid = true;
+
+	$('.kakaoBtnList').each(function () {
+		const val = $(this).val().trim();
+
+		console.log('val : ', val);
+		if (val !== '' && !val.startsWith('http://') && !val.startsWith('https://')) {
+			alert(`"${val}" 은(는) http:// 또는 https:// 로 시작해야 합니다.`);
+			$(this).focus();
+			isValid = false;
+			return false; // each 루프 중단
+		}
+	});
+
+	return isValid;
+}
+
+
+
+
+//문자 바이트수 계산하기 함수
+function thisFnByteString(contents){
+	var totalByte = 0; 
+	//var content = contents;
+	var adverYn = $("input[name='send_adYn']:checked").val();
+	var adTxtLeng = 0;
+	var denyTxtLeng = 0;
+
+	$('#msgLeng').html("");
+	$('#limitLeng').html("");
+	
+	/* if ($("#ad_Y").is(":checked")) {
+		contents = "(광고)"+contents+"\n무료거부 0808800858"
+	} */
+	contents = adYChkAndMakeContents(contents);
+	console.log(contents);
+	var conLeng = conByteLeng(contents); // 내용 문자 입력 바이트 수 계산하기
+	
+		
+	$('#msgLeng').text(conLeng);
+	
+	//문자 길이 변수에 저장해주기
+// 	$('#smsLen').val(conLeng);
+	
+	var imgType = $('#sendFailImgSrc').attr('src');
+	
+	
+	if(imgType != null && "" != imgType){
+
+		setSendFailTemplate('P')
+	}
+	else if(conLeng > 90){
+		
+		$('#limitLeng').html("2000");
+		$('.msg_com').html("장문");
+		$('#msgType').val("6"); // 메세지 타입 설정
+		
+		$('.msg_com').removeClass("msg_short"); //단문 클래스 삭제하고
+		$('.put_left').removeClass("short"); //내용 입력 박스 클래스 삭제
+		$('.put_left').removeClass("photo"); //내용 입력 박스 클래스 삭제
+		$('.msg_com').addClass("msg_long"); // 장문 클래스 삽입
+		$("#subMsgType").val("LMS");
+		
+	}else{
+		
+		$('#limitLeng').html("90");
+		$('.msg_com').html("단문");
+		$('#msgType').val("4"); // 메세지 타입 설정
+		
+		$('.msg_com').removeClass("msg_long"); //단문 클래스 삭제하고
+		$('.put_left').removeClass("long"); //내용 입력 박스 클래스 삭제
+		$('.put_left').removeClass("photo"); //내용 입력 박스 클래스 삭제
+		$('.msg_com').addClass("msg_short"); // 장문 클래스 삽입
+		$("#subMsgType").val("SMS");
+		
+	}
+	
+	$('#msgLeng').html(conLeng + " / ");
+	totalFtPriceSum(tableL.getRows().length);
+		
+}
+
+function msgSuccessClose(obj){
+// 	$(obj).closest('.pop_msg_success').attr('style','');
+// 	location.reload(true);
+// 	$('html').scrollTop(0);
+
+	location.href = '/web/mjon/kakao/friendstalk/kakaoFriendsTalkMsgDataView.do';
+}
+
+function getFtImageType(imgChk){
+	
+	if(imgChk == 'I' || imgChk == 'W'){
+		
+		var imgLink = $("#imgLink").val();
+		var imgFileName = $("#imageFileName").val();
+		
+		/* 
+		if(imgLink == ''){
+			
+			alert("친구톡 이미지 선택시 이동할 링크 주소를 입력해 주세요.");
+			return false;
+			
+		} */
+		
+		if(imgFileName == ''){
+			
+			alert("친구톡 이미지를 등록해 주세요.");
+			return false;
+			
+		}
+		
+		$("#imageType").val(imgChk);
+		
+		//json 파일 필요 유무 셋팅
+		$("#bizJsonYn").val("Y");
+	}
+	
+	return true;
+	
+}
+
+
+function goToKakaoTestPopUp(){
+	
+	if(loginVO == "" || loginVO == null){
+		alert("테스트 발송 서비스는 로그인 후 이용 가능합니다.");
+		location.href="<c:url value='/web/user/login/login.do'/>";
+		return false;
+	}
+	
+	//기업회원 체크
+	if(!usrDeptChk()){
+		return false;
+	}
+	
+	var form = document.bizForm;
+	var senderKey = $("#selectAgentCode option:checked").val();
+	var yellowId = $("#selectAgentCode option:checked").text();
+	
+	if(senderKey == ''){
+		alert("채널ID를 선택해 주세요.");
+		return false;
+	}else{
+		$("#inputSenderKey").val(senderKey);
+		$("#yellowId").val(yellowId);
+	}
+	
+	var imgChk = $("input[name=img_file_add]:checked").val();
+	if(!getFtImageType(imgChk)){
+		return false;
+	}
+	
+	//템플릿 버튼 갯수 체크 
+	var buttonCnt = $(".btn_kakao_type").length;
+
+	if(buttonCnt > 0){
+		//json 파일 필요 유무 셋팅
+		$("#bizJsonYn").val("Y");
+	}
+	
+	//친구톡 내용 체크
+	var tmpContents = $('#inputTemplateContent').val();
+
+	if(tmpContents == ""){
+		
+		alert("친구톡 내용을 입력해 주세요.");
+		return false;
+		
+	}else{
+		
+		//템플릿 내용 입력
+		$("#templateContent").val(tmpContents);
+		
+	}
+	
+	var rtnStr = strChinJpnCheck(tmpContents);
+	
+	//문자내용에 이모지가 있는지 체크
+	if(!emojiCheck(tmpContents)) return false;
+	
+	if(rtnStr.length > 0){
+		
+		alert("입력하신 문구 중 \" " + rtnStr + " \" 는 일부 휴대폰에서 표기되지 않을 수 있습니다.");
+		
+	}
+	
+	
+	var selectedData = tableL.getRows();
+	
+	if(selectedData == "" || selectedData == null){
+		
+		alert("받는사람 주소를 한 건 이상 입력해주세요.");
+		return false;
+	}
+
+	form.method = "post"; 
+	window.open("about:blank", 'testSendPop', 'width=770, height=850, top=100, left=100, fullscreen=no, menubar=no, status=no, toolbar=no, titlebar=yes, location=no, scrollbars=1');
+	form.target = "testSendPop";
+	form.action = "/web/mjon/kakao/friendstalk/selectKakaoFriendsTalkTestSendPopup.do";
+	form.submit();
+}
+
+
+function msgResultLink(){
+	var reserYn = $("input[name=reserYn]:checked").val(); // 예약 발송 여부 확인
+	location.href="/web/kakao/sent/selectKakaoSentView.do";
+}
+
+function updateButtons(){
+	
+}
+
+
+
+
+</script>
+
+<!-- 로딩바 -->
+<div class="loading_layer">
+	<div class="loading_container">
+		<div class="bar"></div>
+		<div class="text">Loading</div>
+	</div>
+</div>
+
+
+<div class="progress_bar_wrap">
+    <div class="progress_box">
+        <p class="time_text">0%</p>
+        <div class="bar">
+            <span class="change_bar"></span>
+        </div>
+    </div>
+    <div class="btn_wrap">
+    </div>
+
+</div>
+
+<div class="inner">
+	<div class="send_top">
+		<!-- tab button -->
+		<%@include file="/WEB-INF/jsp/web/kakao/include/KaKaoAlimtalkTopMenuTap.jsp" %>
+		<!-- // tab button -->
+		<div class="top_content kakaotalksend_cont current pay_tab_wrap">
+			<div class="heading">
+				<h2>브랜드메시지 전송</h2><!-- KakaoFriendsTalkMsgDataView -->
+<!-- 				<button type="button" class="button info">친구톡 사용방법</button> -->
+				<button type="button" class="button info" onclick="infoListPop('friendTalkSend','792','340');">사용안내</button>
+			</div>
+			
+			<!-- 유저 보유잔액 -->
+			<input type="hidden" id="oriUserMoney" value="<c:out value='${userMoney}' />">
+			
+			<!-- 각 금액 단가  -->
+			<input type="hidden" id="kakaoFtPrice" value="<c:out value='${sendPrice.kakaoFtPrice}' />"> <!-- 친구톡 단가  -->
+			<input type="hidden" id="kakaoFtImgPrice" value="<c:out value='${sendPrice.kakaoFtImgPrice}' />"> <!-- 친구톡 이미지 단가  -->
+			<input type="hidden" id="kakaoFtWideImgPrice" value="<c:out value='${sendPrice.kakaoFtWideImgPrice}' />"> <!-- 친구톡 와이드이미지 단가  -->
+			<input type="hidden" id="longPrice" value="<c:out value='${sendPrice.longPrice}' />"> <!-- mms 단가  -->
+			<input type="hidden" id="shortPrice" value="<c:out value='${sendPrice.shortPrice}' />"> <!-- sms 단가  -->
+			<input type="hidden" id="picturePrice" value="<c:out value='${sendPrice.picturePrice}' />"> <!-- sms 단가  -->
+			<input type="hidden" id="imgLinkTemp" name="imgLinkTemp" value="<c:out value='${resultTemplateVO.imgLink}'/>"/>
+			
+			<form id="bizForm" name="bizForm" method="multipart/form-data">
+				<input type="hidden" id="menuTopTab" name="menuTopTab" value="tabBrandMsg">
+				<input type="hidden" id="imageType" name="imageType" value="<c:out value='${resultTemplateVO.imageType}'/>"/>
+				<input type="hidden" id="inputSenderKey" name="senderKey" value="<c:out value='${resultTemplateVO.senderKey}'/>"/>
+				<input type="hidden" id="imageFileName" name="imageFileName" value="<c:out value='${resultTemplateVO.imageFileName}'/>">
+				<input type="hidden" id="templateImageUrl" name="templateImageUrl" value="<c:out value='${resultTemplateVO.templateImageUrl}'/>">
+				<input type="hidden" id="tmpFriendId" name="friendId" value="<c:out value='${resultTemplateVO.friendId}'/>">
+				<input type="hidden" id="templateName" name="templateName" value=""/>
+				<input type="hidden" id="adFlag" name="adFlag" value="<c:out value='${resultTemplateVO.adFlag}' default='Y'/>">
+				<input type="hidden" id="templateContent" name="templateContent" value=""/>
+				
+				<!-- 이미지 있을때 대체문자 발송 참고 이미지 -->
+				<input type="hidden" id="atchFileId" name="atchFileId" value="<c:out value='${resultTemplateVO.atchFileId}'/>"/>
+				
+				<!-- 예약발송 여부 -->
+				<input type="hidden" id="reserveYn" name="reserveYn" value="N"/>
+				<input type="hidden" id="reqDate" name="reqDate" value=""/>
+				
+				<!-- 변환문자 유무 -->
+				<input type="hidden" id="txtReplYn" name="txtReplYn" value="N"/>
+				<input type="hidden" id="varValList" name="varValList" value=""/>
+				
+				<!-- 수신목록 -->
+				<input type="hidden" id="callToList" name="callToList" value=""/>
+				
+				<!-- 스팸 문구 유무 -->
+				<input type="hidden" id="spamStatus" name="spamStatus" value="N"/>
+				<input type="hidden" id="atSmishingYn" name="atSmishingYn" value="<c:out value='${atSmishingYn}' />"/>
+				
+				<!-- 오류 체크 -->
+				<input type="hidden" id="errorChk" name="errorChk" value="N"/>
+				
+				<!-- 대체문자 여부 -->
+				<input type="hidden" id="subMsgSendYn" name="subMsgSendYn" value="N"/>
+				<input type="hidden" id="subMsgType" name="subMsgType" value="SMS"/>
+				<input type="hidden" id="subMsgTxtReplYn" name="subMsgTxtReplYn" value="N"/>
+				<input type="hidden" id="subMsgTxt" name="subMsgTxt" value=""/>
+				
+				<!-- 발신번호정보 -->
+				<input type="hidden" id="callFrom" name="callFrom" value=""/>
+				
+				<!-- 친구톡 발송 단가 정보 -->
+<!-- 				<input type="hidden" id="eachPrice" name="eachPrice" value="0"/> -->
+<!-- 				<input type="hidden" id="totPrice" name="totalPrice" value="0"/> -->
+				
+				<!-- 친구톡 발송 json 파일 필요 유무 -->
+				<input type="hidden" id="bizJsonYn" name="bizJsonYn" value="N"/>
+				
+				<input type="hidden" id="yellowId" name="yellowId" value=""/>
+				
+				
+				<div class="send_general friend_talk_wrap kakao_wrap">
+					<div class="send_left">
+						<table class="tType1">
+							<colgroup>
+								<col style="width: 130px;">
+								<col style="width: auto;">
+							</colgroup>
+							<tbody>
+								<tr>
+									<th>채널ID</th>
+									<td>
+										<label for="selectAgentCode" class="채널ID 선택"></label>
+										<select class="select_gray_type" name="selectAgentCode" id="selectAgentCode" onchange="javascript:fnAgentCodeChg();">
+											<option value="">채널ID 선택</option>
+											<c:forEach var="kakaoProfileInfo" items="${resultProfileList}" varStatus="status">
+												<option value="${kakaoProfileInfo.senderKey}" <c:if test="${kakaoProfileInfo.senderKey eq resultTemplateVO.senderKey}">selected</c:if> ><c:out value='${kakaoProfileInfo.yellowId}'/></option>
+											</c:forEach>
+										</select>
+									</td>
+								</tr>
+								<tr>
+	                                <th>템플릿명</th>
+	                                <td>
+										<div class="template_name_wrap">
+											<input type="text" id="inputTemplateName" name="inputTemplateName" value="<c:out value='${resultTemplateVO.templateName}'/>" placeholder="최대 50자, 템플릿 관리용">
+											
+											
+												<button
+													type="button"
+													class="btnType btnType8"
+													onclick="${not empty loginVO.id 
+														? "window.open('/web/mjon/kakao/template/selectKakaoFriendsTemplateListPopupAjax.do','_blank','width=930, height=780, top=100, left=100, fullscreen=no, menubar=no, status=no, toolbar=no, titlebar=yes, location=no, scrollbars=yes')" 
+														: "alert('로그인 후 이용이 가능합니다.'); return false;"}">
+													템플릿 불러오기
+												</button>
+											
+<!-- 											<button type="button" class="btnType btnType8" onclick="window.open('/publish/popup_friendtalk_template_choice.html','_blank','width=930, height=780, top=100, left=100, fullscreen=no, menubar=no, status=no, toolbar=no, titlebar=yes, location=no, scrollbars=yes')">템플릿 불러오기</button> -->
+										</div>
+	                                </td>
+	                            </tr>
+								<tr>
+									<th>이미지 첨부</th>
+									<td>
+										<input type="radio" name="img_file_add" id="img_file_0" value="" checked="checked">
+										<label for="img_file_0">첨부 안함</label>
+										<input type="radio" name="img_file_add" id="img_file_1" value="I">
+										<label for="img_file_1">이미지 첨부</label>
+										<input type="radio" name="img_file_add" id="img_file_2" value="W">
+										<label for="img_file_2">와이드 이미지 첨부</label>
+										
+										<div class="img_file_add_wrap basic_img_add_wrap">
+											<p class="info_title_text"><span class="c_e40000">*</span> 이미지 첨부 안내</p>
+											<ul class="info_text">
+												<li>- 권장사이즈 : 800px * 400px</li>
+												<li>- 제한사이즈 : 가로 500px 미만, 가로:세로 비율이 2:1 미만 또는 3:4 초과시 업로드 불가</li>
+												<li>- 파일형식 : jpg, png (최대 5MB)</li>
+												<li>- 이미지 첨부 시 메시지 내용은 최대 400자, 버튼 5개까지 입력할 수 있습니다.</li>
+											</ul>
+										</div>
+										<div class="img_file_add_wrap wide_img_add_wrap">
+											<p class="info_title_text"><span class="c_e40000">*</span> 와이드 이미지 첨부 안내</p>
+											<ul class="info_text">
+												<li>- 권장사이즈 : 800px * 600px</li>
+												<li>- 파일형식 : jpg, png (최대 5MB)</li>
+												<li>- 와이드 이미지 첨부시 메시지 내용은 최대 76자, 버튼 1개까지 입력할 수 있습니다.</li>
+											</ul>
+											
+											
+										</div>
+										<ul class="img_file_info_wrap">
+											<li>
+												<button type="button" class="btnType btnType8 btn_img_upload" onclick="javascript:upImgClick(); return false;">이미지 불러오기</button>
+												<input type="file" id="imgFile" accept=".jpg, .jpeg, .png" onchange="imgResizeInfo(event); return false;" style="display:none"/> 
+												<div class="img_file_wrap">
+													<p id="imgTitle"  class="file_name file_none">이미지 없음</p>
+													<button type="button" class="btn_del" onclick="buttonTypeDel(this);">
+														<img src="/publish/images/btn_delete.png" alt="이미지 삭제" onclick="fnImageDel();">
+													</button>
+												</div>
+											</li>
+											<li>
+												<p>이미지 클릭시 이동할 URL</p> 
+												<input type="text" id="imgLink" name="imgLink" value="<c:out value='${resultTemplateVO.imgLink}'/>"  placeholder="(선택사항) https://" class="img_url">
+											</li>
+										</ul>
+											
+									</td>
+								</tr>
+								<tr>
+									<th>광고포함 여부</th>
+									<td>
+										<input type="checkbox" id="ad_Y" style="margin: -4px 5px 0 0;" checked="checked" value="Y">
+										<label for="ad_Y">광고성 정보 포함</label>
+									</td>
+								</tr>
+								<tr>
+									<th>내용</th>
+									<td class="kakao_template_text">
+										<div class="put_left short">
+											<div class="put_text_wrap">
+												<div class="ad_txt" id="adTxt">
+													<p>(광고) 채널ID</p>
+												</div>
+												<label for="inputTemplateContent" class="label"></label>
+												<textarea id="inputTemplateContent" name="inputTemplateContent" class="put_text" placeholder="내용을 입력해주세요."><c:out value="${resultTemplateVO.templateContent}"/></textarea>
+												<div class="text_length">
+													<div class="sub_ad_text">
+														<p>수신거부 : 홈 > 채널차단</p>
+													</div>
+													<div>
+														<p><span class="fwMd nowChar">0 /</span><span class="c_002c9a fwMd totChar">1000</span>자</p>
+													</div>
+												</div>
+											</div>
+										</div>
+										<div class="put_right">
+											<div class="btn_popup_wrap">
+												<button type="button" class="btnType btnType7" onclick="miniPopup(this)">특수문자</button>
+													<div class="send_miniPop spc_character">
+														<div class="tab_character">
+															<a href="#none" class="on">특수문자</a>
+															<a href="#none">웃음</a>
+															<a href="#none">슬픔</a>
+															<a href="#none">분노</a>
+															<a href="#none">사랑</a>
+															<a href="#none">그외</a>
+														</div>
+														<!-- 특수문자 -->
+														<div class="cnt_character on">
+															<div class="box_character">
+															<c:forEach var="symbolList" items="${symbolList}" varStatus="status">
+																<c:if test="${symbolList.symbolType == 'D'}">
+																	<a href="javascript:void(0)" class="symbolButton" value="${symbolList.symbol}"><c:out value="${symbolList.symbol}"/></a>
+																</c:if>
+															</c:forEach>
+															</div>
+														</div>
+														<!-- //특수문자 -->
+														
+														<!-- 웃음 -->
+														<div class="cnt_character emt_character">
+															<div class="box_character">
+																<c:forEach var="symbolList" items="${symbolList}" varStatus="status">
+																<c:if test="${symbolList.symbolType == 'S'}">
+																	<a href="javascript:void(0)" class="symbolButton" value="${symbolList.symbol}">${symbolList.symbol}</a>
+																</c:if>
+																</c:forEach>
+															</div>
+														</div>
+														<!-- //웃음 -->
+														
+														<!-- 슬픔 -->
+														<div class="cnt_character emt_character">
+															<div class="box_character">
+																<c:forEach var="symbolList" items="${symbolList}" varStatus="status">
+																<c:if test="${symbolList.symbolType == 'C'}">
+																	<a href="javascript:void(0)" class="symbolButton" value="${symbolList.symbol}">${symbolList.symbol}</a>
+																</c:if>
+																</c:forEach>
+															</div>
+														</div>
+														<!-- //슬픔 -->
+														
+														<!-- 분노 -->
+														<div class="cnt_character emt_character">
+															<div class="box_character">
+																<c:forEach var="symbolList" items="${symbolList}" varStatus="status">
+																<c:if test="${symbolList.symbolType == 'A'}">
+																	<a href="javascript:void(0)" class="symbolButton" value="${symbolList.symbol}">${symbolList.symbol}</a>
+																</c:if>
+																</c:forEach>
+															</div>
+														</div>
+														<!-- //분노 -->
+														
+														<!-- 사랑 -->
+														<div class="cnt_character emt_character">
+															<div class="box_character">
+																<c:forEach var="symbolList" items="${symbolList}" varStatus="status">
+																<c:if test="${symbolList.symbolType == 'L'}">
+																	<a href="javascript:void(0)" class="symbolButton" value="${symbolList.symbol}">${symbolList.symbol}</a>
+																</c:if>
+																</c:forEach>
+															</div>
+														</div>
+														<!-- //사랑 -->
+														
+														<!-- 그외 -->
+														<div class="cnt_character emt_character emt_etc ">
+															<div class="box_character">
+																<c:forEach var="symbolList" items="${symbolList}" varStatus="status">
+																<c:if test="${symbolList.symbolType == 'E'}">
+																	<a href="javascript:void(0)" class="symbolButton" value="${symbolList.symbol}">${symbolList.symbol}</a>
+																</c:if>
+																</c:forEach>
+															</div>
+														</div>
+														<!-- //그외 -->
+													<button type="button" class="btn_close" onclick="miniPopup(this)">닫기</button>
+												</div>
+											</div>
+											<div class="btn_popup_wrap convers_wrap">
+												<button type="button" class="btnType btnType7" onclick="miniPopup(this)">특정문구 일괄변환<i class="qmMark"></i></button>
+												<div class="send_miniPop convers">
+													<div>
+														<div class="convers_top">
+															<span>특정문구 일괄변환이란?</span>
+															<p>주소록, 엑셀에 입력된 내용을 이용해 수신자마다 다른 내용의 메시지를 발송하는 기능</p>
+														</div>
+														<div class="convers_middle">
+															<a href="javascript:void(0)" class="changeWord" value="[*이름*]"><c:out value="[*이름*]"/></a>
+														</div>
+														<div class="convers_bottom">
+															<a href="javascript:void(0)" class="changeWord" value="[*1*]"><c:out value="[*1*]"/></a>
+															<a href="javascript:void(0)" class="changeWord" value="[*2*]"><c:out value="[*2*]"/></a>
+															<a href="javascript:void(0)" class="changeWord" value="[*3*]"><c:out value="[*3*]"/></a>
+															<a href="javascript:void(0)" class="changeWord" value="[*4*]"><c:out value="[*4*]"/></a>
+														</div>
+													</div>
+													<button type="button" class="btn_close" onclick="miniPopup(this)">닫기</button>
+												</div>
+											</div>
+											<div class="btn_popup_wrap spc_wrap">
+												<button type="button" class="btnType btnType7" onclick="miniPopup(this)">이모티콘</button>
+												<div class="send_miniPop spc_character kakao_emoticon">
+													<%@include file="/WEB-INF/jsp/web/kakao/include/KakaoSentImoticonInfo.jsp" %>
+													<button type="button" class="btn_close" onclick="miniPopup(this)">닫기</button>
+												</div>
+											</div>
+											<div class="btn_popup_wrap template_call_wrap">
+											</div>
+											<div class="send_btnWrap">
+												<button
+													type="button"
+													class="btnType btnType9 btn_text_save"
+													onclick="${not empty loginVO.id 
+														? 'myTemplateSave()' 
+														: 'alert(\'로그인 후 이용이 가능합니다.\'); return false;'}">
+													템플릿 저장
+												</button>
+												<button type="button" class="btnType btnType9" onclick="javascript:fnContentsReset();">초기화</button>
+											</div>
+										</div>
+									</td>
+								</tr>
+								<tr>
+									<th>버튼</th>
+									<td class="template_button">
+										<select name="tmpBtnSelect" id="tmpBtnSelect" class="select_gray_type template_button_select">
+											<option value="button_type_0">버튼타입 선택</option>
+<!-- 											<option value="button_type_1">배송조회</option> -->
+											<option value="button_type_2">웹링크</option>
+											<option value="button_type_3">앱링크</option>
+<!-- 											<option value="button_type_5">메시지전달</option> -->
+										</select>
+										<button type="button" class="btnType btnType6" onclick="friendTemplateButtonAdd();">추가</button>
+										<div class="button_add_wrap" id="buttonAddWrap">
+	                                    	<c:forEach var="buttonList" items="${resultTemplateVO.buttonVOList}" varStatus="status">
+	                                    	
+	                                    		<c:if test="${buttonList.linkType eq 'DS'}">
+	                                    			<!-- 배송조회 버튼  -->
+			                                    	<dl class="button_type_wrap type1">
+				                                    	<dt>배송조회</dt>
+				                                    	<dd class="button_type_input">
+				                                    		<input type="hidden" id="buttonLikeTypeDeliv" name="buttonVOList[${status.index}].linkType" value="DS"/>
+				                                    		<input type="text" id="btnNmDeliv" name="buttonVOList[${status.index}].name" value="<c:out value='${buttonList.name}'/>" placeholder="버튼명 입력(최대 14자)">
+				                                    		<p class="cf_text">*이용가능 택배사 : KG로지스, 우체국택배,일양로지스, GTX로지스, FedEx, 경동택배, 합동택배, 롯데택배</p>
+				                                    	</dd>
+				                                    	<dd>
+				                                    		<button type="button" class="btn_del" onclick="buttonTypeDel(this);"><img src="/publish/images/btn_delete.png" alt=""></button>
+				                                    	</dd>
+			                                    	</dl>
+	                                    		</c:if>
+		                                    	
+		                                    	<c:if test="${buttonList.linkType eq 'WL'}">
+			                                    	<!-- 웹링크 버튼 -->
+			                                    	<dl class="button_type_wrap type2">
+			                                    		<dt>웹링크</dt>
+			                                    		<dd class="button_type_input">
+			                                    			<ul>
+			                                    				<li>
+			                                    					<input type="hidden" id="buttonLikeTypeWeb" name="buttonVOList[${status.index}].linkType" value="WL"/>
+			                                    					<input type="text" id="btnNmWeb" name="buttonVOList[${status.index}].name" value="<c:out value='${buttonList.name}'/>" placeholder="버튼명 입력(최대 14자)">
+			                                    				</li>
+			                                    				<li>
+			                                    					<input type="text" id="buttonLinkMo" name="buttonVOList[${status.index}].linkMo" value="<c:out value='${buttonList.linkMo}'/>" placeholder="모바일 링크 입력">
+			                                    				</li>
+			                                    				<li>
+			                                    					<input type="text" id="buttonLinkPc" name="buttonVOList[${status.index}].linkPc" value="<c:out value='${buttonList.linkPc}'/>" placeholder="PC 링크 입력">
+			                                    				</li>
+			                                    			</ul>
+			                                    		</dd>
+			                                    		<dd>
+			                                    			<button type="button" class="btn_del" onclick="buttonTypeDel(this);"><img src="/publish/images/btn_delete.png" alt=""></button>
+			                                    		</dd>
+			                                    	</dl>
+		                                    	</c:if>
+		                                    	
+		                                    	<c:if test="${buttonList.linkType eq 'AL'}">
+			                                    	<!-- 앱링크 버튼 -->
+			                                    	<dl class="button_type_wrap type3">
+			                                    		<dt>앱링크</dt>
+			                                    		<dd class="button_type_input">
+			                                    			<ul>
+			                                    				<li>
+			                                    					<input type="hidden" id="buttonLikeTypeApp" name="buttonVOList[${status.index}].linkType" value="AL"/>
+			                                    					<input type="text" id="btnNmApp" name="buttonVOList[${status.index}].name" value="<c:out value='${buttonList.name}'/>" placeholder="버튼명 입력(최대 14자)">
+			                                    				</li>
+			                                    				<li>
+			                                    					<input type="text" id="buttonLinkAnd" name="buttonVOList[${status.index}].linkAnd" value="<c:out value='${buttonList.linkAnd}'/>" placeholder="Android 링크 입력">
+			                                    				</li>
+			                                    				<li>
+			                                    					<input type="text" id="buttonLinkIos" name="buttonVOList[${status.index}].linkIos" value="<c:out value='${buttonList.linkIos}'/>" placeholder="IOS 링크 입력">
+			                                    				</li>
+			                                    			</ul>
+			                                    		</dd>
+			                                    		<dd>
+			                                    			<button type="button" class="btn_del" onclick="buttonTypeDel(this);"><img src="/publish/images/btn_delete.png" alt=""></button>
+			                                    		</dd>
+			                                    	</dl>
+		                                    	</c:if>
+		                                    	
+		                                    	<c:if test="${buttonList.linkType eq 'BK'}">
+			                                    	<!-- 봇키워드 -->
+			                                    	<dl class="button_type_wrap type4">
+			                                    		<dt>봇키워드</dt>
+		                                    			<dd class="button_type_input">
+		                                    				<input type="hidden" id="buttonLikeTypeBot" name="buttonVOList[${status.index}].linkType" value="BK"/>
+		                                    				<input type="text" id="btnNmBot" name="buttonVOList[${status.index}].name" value="<c:out value='${buttonList.name}'/>" placeholder="버튼명 입력(최대 14자)">
+		                                    			</dd>
+		                                    			<dd><button type="button" class="btn_del" onclick="buttonTypeDel(this);"><img src="/publish/images/btn_delete.png" alt=""></button></dd>
+			                                    	</dl>
+		                                    	</c:if>
+		                                    	
+		                                    	<c:if test="${buttonList.linkType eq 'MD'}">
+			                                    	<!-- 메시지 전달 -->
+			                                    	<dl class="button_type_wrap type5">
+													   <dt>메시지전달</dt>
+													   <dd class="button_type_input">
+													      <input type="hidden" id="buttonLikeTypeMsg" name="buttonVOList[${status.index}].linkType" value="MD" />
+													      <input type="text" id="btnNmMsg" name="buttonVOList[${status.index}].name" value="<c:out value='${buttonList.name}'/>" placeholder="버튼명 입력(최대 14자)">
+													   </dd>
+													   <dd>
+													      <button type="button" class="btn_del" onclick="buttonTypeDel(this);">
+													         <img src="/publish/images/btn_delete.png" alt="">
+													      </button>
+													   </dd>
+													</dl>
+												</c:if>	                                    	
+		                                    	
+		                                    	<c:if test="${buttonList.linkType eq 'BC'}">
+			                                    	<!-- 상담톡 전환 -->
+													<dl class="button_type_wrap type6">
+													   <dt>상담톡전환</dt>
+													   <dd class="button_type_input">
+													      <input type="hidden" id="buttonLikeTypeCons" name="buttonVOList[${status.index}].linkType" value="BC" />
+													      <input type="text" id="btnNmCons" name="buttonVOList[${status.index}].name" value="<c:out value='${buttonList.name}'/>" placeholder="버튼명 입력(최대 14자)">
+													   </dd>
+													   <dd>
+													      <button type="button" class="btn_del" onclick="buttonTypeDel(this);">
+													         <img src="/publish/images/btn_delete.png" alt="">
+													      </button>
+													   </dd>
+													</dl>
+												</c:if>
+												
+												<c:if test="${buttonList.linkType eq 'BT'}">
+													<!-- 챗봇전환 -->
+													<dl class="button_type_wrap type7">
+													   <dt>챗봇전환</dt>
+													   <dd class="button_type_input">
+													      <input type="hidden" id="buttonLikeTypeBotChg" name="buttonVOList[${status.index}].linkType" value="BT" />
+													      <input type="text" id="btnNmBotChg" name="buttonVOList[${status.index}].name" value="" placeholder="버튼명 입력(최대 14자)">
+													   </dd>
+													   <dd>
+													      <button type="button" class="btn_del" onclick="buttonTypeDel(this);">
+													         <img src="/publish/images/btn_delete.png" alt="">
+													      </button>
+													   </dd>
+													</dl>
+												</c:if>
+											</c:forEach>
+	                                    </div>
+									</td>
+								</tr>
+								<tr>
+									<th>받는사람</th>
+									<td class="putText">
+										<div class="clearfix receipt_num">
+											<div class="receipt_num_top">
+												<label for="callTo" class="label">받는 번호입력</label>
+												<input type="text" value="" placeholder="번호를 입력하세요" id="callTo" name="callTo" onfocus="this.placeholder=''" onblur="this.placeholder='번호를 입력하세요'" style="width:340px;">
+												<button type="button" class="btnType btnType6 addCallToF">번호추가</button>
+												<span><span class="vMiddle">*</span> 중복번호는 한번만 발송됩니다.</span>
+											</div>
+											<div class="receipt_num_midde">
+												<div class="listType list01 callList_box"  id="callList_box">
+													<div class="list_table list_head">
+														<div class="cb_wrap">
+															<label for="select_all" class="label"></label>
+															<input type="checkbox" id="select_all">
+														</div>
+														<div class="list_table_num">
+															<p>휴대폰</p>
+															<img src="/publish/images/sortUp.png">
+															<img src="/publish/images/sortDown.png">
+														</div>
+														<div class="list_table_name">
+															<p>이름</p>
+															<img src="/publish/images/sortUp.png">
+															<img src="/publish/images/sortDown.png">
+														</div>
+													</div>
+													<div class="list_body_wrap" id="wrap01_body">
+													</div>
+												</div>
+												<div class="put_right">
+													<div class="btn_popup_wrap spc_wrap">
+														<button type="button" data-tooltip="popup06" class="btnType btnType7 popupAddr">주소록 불러오기</button>
+													</div>
+													<div class="btn_popup_wrap">
+														<button type="button" data-tooltip="popup07" class="btnType btnType7">엑셀 불러오기</button>
+													</div>
+													<div class="btn_popup_wrap">
+														<button type="button" data-tooltip="popup03" class="btnType btnType7 tab1">최근 전송내역</button>
+													</div>
+													<div class="btn_popup_wrap">
+														<button type="button" data-tooltip="popup03" class="btnType btnType7 tab2">자주보내는 번호</button>
+													</div>
+													<!-- <div class="btn_popup_wrap check_validity_wrap">
+														<button type="button" class="btnType btnType7 check_validity">오류 검사<i class="qmMark error_qm"></i></button>
+														<div class="error_hover_cont send_hover_cont">
+															<p>휴대폰 번호 입력 시 해당 휴대폰 번호에 대한 형식이 어긋나거나 휴대폰 번호에 오류가 있는지 등을 검사하는 기능</p>
+															<span>(예시) 010-1234-0001(O) / 010-12345-0001(X)</span>
+														</div>
+													</div> -->
+												</div>
+											</div>
+											<div class="list_bottom clearfix">
+												<div class="remove_btnWrap">
+													<button type="button" class="btnType15 all_del"><i class="remove_img"></i>전체삭제</button>
+													<button type="button" class="btnType15 select_del"><i class="remove_img"></i>선택삭제</button>
+												</div>
+												<div class="list_bottom_right">
+													<p>총 <span class="c_e40000" id="rowTotCnt">0</span>건 / 중복 <span class="c_002c9a" id="rowDupCnt">0</span>건</p>
+<!-- 														<button type="button" class="address_reg2">주소록에 등록</button> -->
+												</div>
+											</div>
+										</div>
+									</td>
+								</tr>
+								<tr>
+									<th colspan="2" class="billingAmount">
+										<div>
+											<div class="final_pay">
+												<div class="pay_info_list">
+													<p>발송금액 :</p>
+													<div class="info" id="repPriceTxt" style="display: none;">
+														단문 : <strong>20</strong>건<span>/</span>장문 :
+														<strong>150</strong>건<span>/</span>그림문자 :
+														<strong>30</strong>건
+													</div>
+												</div>
+												<p class="price"><span id="repPriceTxt"></span><span id="totalPriceTxt">0</span> 원<span></span></p>
+											</div>
+											<div class="pay_type clearfix">
+												<div>
+													<input type="radio" id="radio_bill_1" name="radio_bill" checked="checked">
+													<label for="radio_bill_1">보유잔액</label>
+													<label for="userMoney" class="label">보유잔액</label>
+													<fmt:formatNumber type="number" maxFractionDigits="3" value="${sendPrice.userMoney}" var="commaPrice" />
+													<input type="text" id="userMoney" name="userMoney" value="<c:out value='${commaPrice}'/>" readonly="">
+													<span class="won">원</span>
+													<button type="button" class="btnType btnType21" onclick="location.href='/web/member/pay/PayView.do'">충전</button>
+												</div>
+												<div></div>
+											</div>
+										</div>
+									</th>
+								</tr>
+								<tr>
+									<th colspan="2" class="replace_send_th">
+										<div class="title_th"><p>대체문자</p> 
+											<input type="checkbox" id="send_fail_check" name="send_fail_check" class="send_fail_check">
+											<label for="send_fail_check">친구톡 전송 실패 시 문자 전송</label>
+										</div>
+										<div class="replace_send_wrap">
+											<table class="tType1">
+												<colgroup>
+													<col style="width: 90px;">
+													<col style="width: auto;">
+												</colgroup>
+												<tbody>
+													<tr>
+														<th>발신번호</th>
+														<td>
+															<label for="callFromList" class="label"></label>
+															<select id="callFromList" name="callFromList" class="sel_number">
+																<c:choose>
+																	<c:when test="${not empty resultPhonList}">
+																		<c:forEach var="phonList" items="${resultPhonList}" varStatus="status">
+																			<option value="${phonList}">${phonList}</option>
+																		</c:forEach>
+																	</c:when>
+																	<c:otherwise>
+																		<option value="">등록된 발신 번호가 없습니다.</option>
+																	</c:otherwise>
+																</c:choose>
+															</select>
+															<button type="button" class="btnType btnType6" onclick="location.href='/web/user/sendNumberManage.do'">번호등록</button>
+														</td>
+													</tr>
+													<tr>
+														<th>내용</th>
+														<td class="putText">
+															<div class="clearfix">
+																<div class="put_left short">
+																	<!-- 업로드한 이미지의 썸네일 영역 -->
+																	<ul class="thumb_wrap liOnImg ui-sortable">
+																		<li class="delLi" id="sendFailImg" style="display: none">
+																			<div>
+																				<img src="" id="sendFailImgSrc" class="thumb_img edit_y" alt="thumb1">
+																			</div>
+<!-- 																			<button type="button" class="file_close"><img src="/publish/images/content/thumb_del.png" alt="첨부파일 삭제"></button> -->
+<!-- 																			<button type="button" class="file_close_on"><img src="/publish/images/content/thumb_del_on.png" alt="첨부파일 삭제"></button> -->
+																		</li>
+																		
+																	</ul>
+																	<label for="smsTxtArea" class="label"></label>
+																	<!-- //업로드한 이미지의 썸네일 영역 -->
+																	<div class="ad_txt" style="">
+																		<p>(광고)</p>
+																	</div>
+																	<textarea id="smsTxtArea" class="put_text"></textarea>
+																	<div class="text_length">
+																		<div class="deny_txt sub_ad_text">
+																			<p>무료거부 0808800858</p>
+																		</div>
+																		<div name="afterDeny">
+																			<p>
+																				<span class="fwMd" id="msgLeng">0 /</span>
+																				<span class="c_002c9a fwMd" id="limitLeng">90</span>byte
+																			</p>
+																			<span class="msg_com msg_short">단문</span>
+																		</div>
+																	</div>
+																</div>
+																<div class="put_right">
+																	<button type="button" class="btnType btnType9" id="failCheckInit">초기화</button>
+<!-- 																	<button type="button" class="btnType btnType7" onclick="javascript:fn_errorChk(); return false;">오류검사<i class="qmMark"></i></button> -->
+																</div>
+															</div>
+														</td>
+													</tr>
+												</tbody>
+											</table>
+										</div>
+									</th>
+								</tr>
+							</tbody>
+						</table>
+					</div>
+					<div class="send_right">
+						<div class="phone">
+							<div class="phoneIn">
+								<p class="prev_p">
+									<img src="/publish/images/content/kakao_prev_icon.png" alt="">
+									<span id="spnYellowid">@채널ID</span>
+								</p>
+								<!-- 텍스트 미리보기 -->
+								<div class="text_preview">
+									<p class="friend_talk_title" id="talkTitle">
+<!-- 										<span>(광고)</span> 채널ID -->
+										<span>(광고)</span>
+									</p>
+									<div class="allimtalk_content">
+										<div class="kakao_image"  style="display:none;">
+											<img src="" id="kakaoImg" alt="">
+										</div>
+										<p class="template_text">내용 미리보기</p>
+										<div class="btnViewArea">
+											<c:forEach var="buttonList" items="${resultTemplateVO.buttonVOList}" varStatus="status">
+	                                    		<button type="button" class="btn_kakao_type btnEmpty"  style="display:block;"><c:out value="${buttonList.name}"/></button>
+	                                    	</c:forEach>
+										</div>
+									</div>
+									<p class="kakao_block_text">수신거부 : 홈 > 채널차단</p>
+								</div>
+								<!-- //텍스트 미리보기 -->
+							</div>
+							<p class="addText">※ 단말기 설정에 따라 다르게 보일 수 있습니다<p>
+						</div>
+						<div class="phone_bottom">
+							<div class="send_rev">
+								<div class="send_content" style="padding-bottom: 0;">
+									<div class="rev_radio">
+										<ul>
+											<li>
+												<input type="radio" id="reserYnN" name="reserYn" value="N" checked="checked"><label for="reserYnN">즉시</label>
+											</li>
+											<li>
+												<input type="radio" id="reserYnY" name="reserYn" value="Y"><label for="reserYnY">예약</label>
+											</li>
+										</ul>
+									</div>
+									<div class="send_btn">
+									<%-- 친구톡 발송시간 체크 하기 - 20:50 ~ 익일 08:00 사이에는 발송 금지 --%>
+										<c:choose>
+											<c:when test="${sendStatus eq 'true'}">
+												<button type="button" class="btnType btnType11" onclick="javascript:fn_sendMsgData(); return false;">발송하기</button>
+											</c:when>
+											<c:otherwise>
+												<button type="button" class="btnType btnType11" onclick="javascript:fn_noTimeSend(); return false;">발송하기</button>
+											</c:otherwise>
+										</c:choose>
+										<button type="button" class="btnType btnType10"  onclick="javascript:goToKakaoTestPopUp(); return false;">테스트발송</button>
+									</div>
+								</div>
+								<div class="rev_selected" >
+									<div class="rev_top">
+										<span>날짜 :</span>
+										<div class="calendar_wrap">
+											<input type="text" class="startDate2 inp resDate calendar picker__input picker__input--active" title="검색 시작일" id="startDate2" name="startDate2" value="" data-datecontrol="true" readonly="" aria-haspopup="true" aria-expanded="true" aria-readonly="false" aria-owns="startDate2_root">
+										</div>
+										<div class="selBox">
+											<label for="msgResHour" class="label">시 선택</label>
+											<select class="selType1" id="msgResHour" name="msgResHour">
+												<c:forEach  var="hour"  begin="8" end="20" step="1" varStatus="status">
+													<c:choose>
+														<c:when test="${hour < 10}">
+															<option value="0${hour}">0${hour}시</option>
+														</c:when>
+														<c:otherwise>
+															<option value="${hour}">${hour}시</option>
+														</c:otherwise>
+													</c:choose>
+												</c:forEach>
+											</select>
+											<label for="msgResMin" class="label">분 선택</label>
+											<select class="selType1" id="msgResMin" name="msgResMin" onChange="fnSelectMinChk();">
+												<c:forEach var="min" begin="0" end="59" step="1">
+													<c:choose>
+														<c:when test="${min < 10}">
+															<option value="0${min}">0${min}분</option>
+														</c:when>
+														<c:otherwise>
+															<option value="${min}">${min}분</option>
+														</c:otherwise>
+													</c:choose>
+												</c:forEach>
+											</select>
+										</div>
+									</div>
+									<%-- <div class="rev_bottom">
+										<input type="checkbox" id="inputDivideChk" name="inputDivideChk">
+										<label for="inputDivideChk">분할전송</label>
+										<input type="text" class="dividType1" id="frmDivideCnt" name="frmDivideCnt" value="20" onkeypress='return checkNumber(event)' maxlength="4"/>
+										<label for="divideCnt">건</label>
+										<select class="selType1" id="divideTime" name="divideTime">
+					 						<option value="5">05분</option>
+					 						<option value="10">10분</option>
+					 						<option value="15">15분</option>
+					 						<option value="20">20분</option>
+					 						<option value="30">30분</option>
+					 					</select>
+					 					<label for="divideTime">간격</label>
+									</div> --%>
+								</div>
+							</div>
+						</div>
+					</div>
+				</div>
+			</form>
+		</div>
+	</div>
+</div>
+
+<!-- 문자발송 성공 레이어팝업 -->
+<div class="tooltip-wrap">
+	<div class="popup-com pop_msg_success">
+		<div class="popup_heading">
+			<p>친구톡 전송 결과</p>
+			<button type="button" class="tooltip-close" onclick="msgSuccessClose(this);"><img src="/publish/images/content/layerPopup_close.png" alt="팝업 닫기"></button>
+		</div>
+		<div class="layer_in">
+			<div class="msg_text">발송 성공 : <strong>1</strong> 건,수신거부 : <span>0</span>건의<br>문자가 발송 되었습니다.</div>
+		</div>
+		<div class="popup_btn">
+			<button type="button" onclick="msgResultLink(); return false;">친구톡 발송결과 바로가기</button>
+			<button type="button" class="tooltip-close" onclick="msgSuccessClose(this);">확인</button>
+		</div>
+	</div>
+</div>
+
+<!-- 주소록 불러오기 -->
+<div class="tooltip-wrap">
+	<div class="popup-com import_layer popup06 adr_call_popup" tabindex="0"
+		data-tooltip-con="popup06" data-focus="popup06"
+		data-focus-prev="popup06-close" style="width: 1000px">
+		<div class="popup_heading">
+			<p>
+				<span>주소록 불러오기
+			</p>
+			<button type="button" onClick="javascript:addrClose(); return false;">
+				<img src="/publish/images/content/layerPopup_close.png" alt="팝업 닫기">
+			</button>
+		</div>
+		<div class="layer_in">
+			<div class="titBox titBox_pad">
+				<p>
+					- 주소록 수정 및 변경은 <span>[주소록 관리]</span>에서만 가능합니다.
+				</p>
+				<button type="button" class="adr_admin"
+					onClick="location.href='/web/mjon/addr/selectAddrList.do'">주소록
+					관리</button>
+			</div>
+			<div class="adr_wrap">
+				<form id="searchAddrGrpForm" name="searchAddrGrpForm" method="post"
+					style="display: flex; justify-content: space-between;">
+					<input type="hidden" id="searchAddrGrpId" name="searchAddrGrpId"
+						value="" /> <input type="hidden" id="type" name="type" value="all" />
+					<input type="hidden" id="searchKeyword" name="searchKeyword"
+						value="" /> <input type="hidden" name="searchCondition"
+						id="searchCondition" value="0" />
+					<div class="adr_pop_left">
+						<div class="adr_left_search">
+							<label for="searchKeyword" class="label">그룹명 검색</label> <input
+								type="text" name="searchGrpKeyword" id="searchGrpKeyword"
+								placeholder="그룹명 검색" onfocus="this.placeholder=''"
+								onblur="this.placeholder='그룹명 검색'" class="inputLight">
+							<button type="button"
+								onClick="javascrit:fnAddrGrpSearch(); return false;">
+								<img src="/publish/images/popup/search.png" alt="검색">
+							</button>
+						</div>
+						<div class="adr_pop_box">
+							<div id="addrGroupLoad"></div>
+						</div>
+						<!-- <div class="popup_btn">
+                                <button type="button" class="btnType" onClick="javascript:fnSelectAddrGrpList(); return false;">선택 그룹 추가</button>
+                            </div> -->
+					</div>
+					<div class="adr_pop_right">
+						<div class="clearfix">
+							<div class="btnWrap_last">
+								<label for="searchAddrCondition" class="label">카테고리 선택</label> <select
+									id="searchAddrCondition" name="searchAddrCondition"
+									class="selType2">
+									<option value='0'>전체</option>
+									<option value='1'>그룹명</option>
+									<option value='2'>이름</option>
+									<option value='3'>핸드폰번호</option>
+								</select> <label for="searchAddrKeyword" class="label">검색어 입력</label> <input
+									type="text" id="searchAddrKeyword" name="searchAddrKeyword"
+									placeholder="검색어를 입력하세요" onfocus="this.placeholder=''"
+									onblur="this.placeholder='검색어를 입력하세요'">
+								<button type="button" class="btnType btnType17"
+									onClick="javascrit:fnAddrSearch(); return false;">검색</button>
+							</div>
+							<!-- table -->
+							<div class="adr_excel adr_pop_list2 callAddr_box"
+								style="max-width: 722px"></div>
+							<!--// table -->
+						</div>
+						<div class="popup_btn_wrap2">
+							<!--                                <button type="button" onClick="javascript:addrToList(); return false;">추가</button> -->
+							<button type="button"
+								onClick="javascript:addrToList_advc('all'); return false;">전체추가</button>
+							<button type="button"
+								onClick="javascript:addrToList_advc('select'); return false;">선택추가</button>
+							<button type="button"
+								onClick="javascript:addrClose(); return false;">닫기</button>
+						</div>
+						<%-- 주소록 레이어 팝업 닫기 실행 코드 --%>
+						<input type="hidden" name="btnAddrClose" id="btnAddrClose"
+							class="tooltip-close closeAddr" data-focus="popup06-close" />
+					</div>
+				</form>
+			</div>
+		</div>
+	</div>
+</div>
+<!--// 주소록 불러오기 -->
+
+<!-- 엑셀 불러오기 -->
+<form id="excelForm" name="excelForm" method="post">
+	<div class="tooltip-wrap">
+<!-- 	<div class="popup-com import_layer popup07" tabindex="0" data-tooltip-con="popup07" data-focus="popup07" data-focus-prev="popup07-close"> -->
+        <div class="popup-com adr_layer popup07" tabindex="0" data-tooltip-con="popup07" data-focus="popup07" data-focus-prev="popup07-close" style="width: 1000px;">
+            <%@include file="/WEB-INF/jsp/web/kakao/msgdata/include/ftDataIncludeExcel.jsp" %>
+<%--           <%@include file="/WEB-INF/jsp/web/msgdata/include/msgDataIncludeExcel.jsp" %> --%>
+			<!-- <div class="popup_heading">
+				<p><span>엑셀</span> 불러오기</p>
+				<button type="button" class="tooltip-close" data-focus="popup07-close"><img src="/publish/images/content/layerPopup_close.png" alt="팝업 닫기"></button>
+			</div>
+			<div class="layer_in">
+				엑셀파일 불러오기
+				<div class="hascont">
+					<div class="titBox">
+						<p>- 최대 2만 건까지 등록할 수 있습니다.</p>
+						<p>- [엑셀 불러오기]시 문서의 A, B열을 불러옵니다.(지원하는 파일 형식 : xls, xlsx)</p>
+						<p>- 휴대폰 항목은 숫자, 하이픈(-)만 인식하며, 번호 앞에 0이 생략되어도 정상 등록됩니다.
+						</p>
+						<button type="button" class="excel_btn" onclick="location.href='/cmm/fms/FileDown.do?atchFileId=FILE_000000000011651&fileSn=1'"><i></i>샘플파일 다운로드</button>
+						<button type="button" class="excel_btn" onclick="location.href='/download/msg/엑셀주소록_등록양식.xlsx'"><i class="downroad"></i>샘플파일 다운로드</button>
+					</div>
+					<div class="attachedFile">
+						<label for="excelNm" class="attachedFile_label">첨부파일</label>
+						<input type="text" id="excelNm" value="" readonly>
+						<input type="file" id="excelFile" accept=".xls, .xlsx" onchange="excelExport(event); return false;" style="display:none"/>
+						<button type="button" class="btnType btnType6 c1">찾아보기</button>
+						<p><span class="vMiddle">*</span> 첨부된 파일은 <span class="c_e40000">[추가]버튼을 클릭</span>하셔야 받는 사람에 등록됩니다.</p>
+						<p><span class="vMiddle">*</span> 첨부된 파일은 <span class="c_e40000">[추가]버튼을 클릭</span>하셔야 받는 사람에 등록됩니다.</p>
+					</div>
+				</div>// 엑셀파일 불러오기
+				<div class="popup_btn_wrap2">
+					<button type="button" class="tooltip-close" data-focus="popup07-close"  data-focus-next="popup07" id="excelAdd">추가</button>
+					<button type="button" class="tooltip-close" data-focus="popup07-close"  data-focus-next="popup07">닫기</button>                      
+				</div>
+			</div> -->
+		</div>
+	</div><!--// 엑셀 불러오기 -->
+</form>
+
+
+<div class="tooltip-wrap">
+	<div class="popup-com history_layer popup03" tabindex="0"
+		data-tooltip-con="popup03" data-focus="popup03"
+		data-focus-prev="popup03-close">
+		<div class="popup_heading">
+			<p>
+				전송내역
+			</p>
+			<button type="button" class="tooltip-close"
+				data-focus="popup03-close" id="btnLatestAddPhoneClose">
+				<img src="/publish/images/content/layerPopup_close.png" alt="팝업 닫기">
+			</button>
+		</div>
+		<div class="layer_in">
+			<!-- tab button -->
+			<ul class="tabType6">
+				<li class="tab active"><button type="button"
+						onclick="TabType(this,'1');">최근 전송내역</button></li>
+				<li class="tab"><button type="button"
+						onclick="TabType(this,'2');">자주보내는 번호</button></li>
+			</ul>
+			<!--// tab button -->
+			<!-- 최근 전송내역 -->
+			<div class="history_cont hascont current">
+				<div class="histroy_trans latestMsgArea" id="latestMsgArea">
+					<ul id="latestMsgUl">
+						<%-- <c:choose>
+                                <c:when test="${not empty resultLatestMsgList}">
+                                    <c:forEach var="latestMsgList" items="${resultLatestMsgList}" varStatus="status">
+                                        <li id="latestLi">
+                                            <input type="checkbox" id="addrChk_${status.count}" name="latAddrChk" value="<c:out value='${latestMsgList.callTo}'/>">
+                                            <label for="addrChk_${status.count}" class="label">최근 전송내역</label>
+                                            <p><c:out value="${latestMsgList.callTo}"/></p>
+                                            <button type="button" id="latestAddrDel">
+                                                <img src="/publish/images/popup/close3.png"  alt="전화번호 삭제">
+                                            </button>
+                                        </li>
+                                    </c:forEach>
+                                </c:when>
+                                <c:otherwise>
+                                    <li>
+                                        <p>최근 발송 내역이 없습니다.</p>
+                                    </li>
+                                </c:otherwise>
+                            </c:choose> --%>
+					</ul>
+				</div>
+				<div class="popup_btn_wrap2 hisroy_btn" style="width: 230px;">
+					<button type="button" id="latestAddPhoneAll">전체추가</button>
+					<button type="button" id="latestAddPhone">선택추가</button>
+					<button type="button" id="latestCancelPhone">선택취소</button>
+				</div>
+			</div>
+			<!--// 최근 전송내역 -->
+			<!-- 자주보내는 번호 -->
+			<div class="history_cont hascont">
+				<div class="histroy_trans" id="bookMarkMsgArea">
+					<ul id="bookMsgUl">
+						<li>
+							<p>데이터 로딩중입니다.</p>
+						</li>
+						<%-- <c:choose>
+                                <c:when test="${not empty resultBookMarkMsgList}">
+                                    <c:forEach var="bookMarkMsgList" items="${resultBookMarkMsgList}" varStatus="status">
+                                        <li id="bookMarkLi">
+                                            <input type="checkbox" id="bokAddrChk_${status.count}" name="bookAddrChk" value="<c:out value='${bookMarkMsgList.addrPhoneNo}'/>">
+                                            <label for="addrChk_${status.count}" class="label">최근 전송내역</label>
+                                            <p><c:out value="${bookMarkMsgList.addrPhoneNo}"/></p>
+                                            <button type="button" id="bookMarkAddrDel"><img src="/publish/images/popup/close3.png"  alt="전화번호 삭제"></button>
+                                        </li>
+                                    </c:forEach>
+                                </c:when>
+                                <c:otherwise>
+                                    <li>
+                                        <p>등록된 자주 보내는 번호 내역이 없습니다.</p>
+                                    </li>
+                                </c:otherwise>
+                            </c:choose> --%>
+					</ul>
+				</div>
+				<div class="popup_btn_wrap2 hisroy_btn" style="width: 230px;">
+					<button type="button" id="bookMarkAddPhoneAll">전체추가</button>
+					<button type="button" id="bookMarkAddPhone">선택추가</button>
+					<button type="button" id="bookMarkCancelPhone">선택취소</button>
+				</div>
+			</div>
+			<!--// 자주보내는 번호  -->
+		</div>
+	</div>
+</div>
+<!--// 전송내역 팝업 -->
+
+
+<form id="templateForm" name="templateForm" method="post">
+	<input type="hidden" id="friendId" name="friendId" value="<c:out value='${resultTemplateVO.friendId}'/>"/>
+</form>(No newline at end of file)
src/main/webapp/WEB-INF/jsp/web/kakao/msgdata/ft/KakaoFriendsTalkMsgDataView.jsp
--- src/main/webapp/WEB-INF/jsp/web/kakao/msgdata/ft/KakaoFriendsTalkMsgDataView.jsp
+++ src/main/webapp/WEB-INF/jsp/web/kakao/msgdata/ft/KakaoFriendsTalkMsgDataView.jsp
@@ -1655,8 +1655,26 @@
 
 
 
-
 </script>
+<div class="mask on"></div>
+
+<!-- 친구톡 서비스 중단 -->
+<div class="tooltip-wrap ">
+	<div class="popup-com service_stop_popup alert_layer_popup" tabindex="0" data-tooltip-con="alert_layer_popup" data-focus="alert_layer_popup" data-focus-prev="alert_layer_popup-close" style="display:block;width:490px;opacity:1;">
+		<div class="popup_heading">
+			<p>알림</p>
+			<button type="button" class="tooltip-close" onclick="location.href='/web/main/mainPage.do'"><img src="/publish/images/content/layerPopup_close.png" alt="팝업 닫기"></button>
+		</div>
+		<div class="layer_in">
+			<p>친구톡 서비스는 종료되었으며,<br />2026년 1월부터 <b>'브랜드메시지'</b>로 전환될 예정입니다.</p>
+			<div class="popup_btn">
+				<button type="button" class="btn fill blue" onclick="location.href='/web/main/mainPage.do'">메인화면 바로가기</button>
+			</div>
+		</div>
+	</div>
+</div>
+<!-- //친구톡 서비스 중단 -->
+<!-- //친구톡 서비스 중단 -->
 
 <!-- 로딩바 -->
 <div class="loading_layer">
@@ -1798,11 +1816,11 @@
 									<th>이미지 첨부</th>
 									<td>
 										<input type="radio" name="img_file_add" id="img_file_0" value="" checked="checked">
-										<label for="img_file_0">첨부 안함</label>
+										<label for="img_file_0">텍스트</label>
 										<input type="radio" name="img_file_add" id="img_file_1" value="I">
-										<label for="img_file_1">이미지 첨부</label>
+										<label for="img_file_1">이미지</label>
 										<input type="radio" name="img_file_add" id="img_file_2" value="W">
-										<label for="img_file_2">와이드 이미지 첨부</label>
+										<label for="img_file_2">와이드</label>
 										
 										<div class="img_file_add_wrap basic_img_add_wrap">
 											<p class="info_title_text"><span class="c_e40000">*</span> 이미지 첨부 안내</p>
src/main/webapp/WEB-INF/jsp/web/kakao/profile/KakaoProfileList.jsp
--- src/main/webapp/WEB-INF/jsp/web/kakao/profile/KakaoProfileList.jsp
+++ src/main/webapp/WEB-INF/jsp/web/kakao/profile/KakaoProfileList.jsp
@@ -461,6 +461,7 @@
             <div class="titBox">
                 <p>- 카카오톡 채널(https://center-pf.kakao.com)에서 가입 후, 카카오톡 채널(채널ID) 등록바랍니다.</p>
                 <p>- 카카오톡 채널 관리자센터- [서비스관리] – 프로필명 클릭 – [관리]메뉴-카카오톡 채널 홈에서 홈 공개 및 검색허용을 하셔야 등록가능합니다.</p>
+<%--                <p>- 카카오 알림톡/브랜드메시지는 기업고객 전용 서비스입니다.</p>--%>
                 <p>- 카카오 알림톡/친구톡은 기업고객 전용 서비스입니다.</p>
             </div>
             <div class="list_info">
src/main/webapp/WEB-INF/jsp/web/kakao/sent/KakaoSentView.jsp
--- src/main/webapp/WEB-INF/jsp/web/kakao/sent/KakaoSentView.jsp
+++ src/main/webapp/WEB-INF/jsp/web/kakao/sent/KakaoSentView.jsp
@@ -510,6 +510,7 @@
 				<div class="titBox_result">
 					<p>- 최대 3개월간의 발송내역만 확인하실 수 있습니다.</p>
 					<p>- 전송내역이 필요한 경우 기간 내에 다운로드하여 주시기 바랍니다.</p>
+<%--					<p>- 기존 카카오 친구톡 서비스는 브랜드메시지로 변경되었습니다.</p>--%>
 				</div>
 				<!--// 발송결과 개선 : 문구추가 -->
 			
@@ -646,6 +647,7 @@
 						<li class="tab active"><button type="button" onclick="fnTabLoad('',0); return false;">전체</button></li>
 						<li class="tab"><button type="button" onclick="fnTabLoad('at', 1); return false;">알림톡</button></li>
 						<li class="tab"><button type="button" onclick="fnTabLoad('ft', 2); return false;">친구톡</button></li>
+<%--						<li class="tab"><button type="button" onclick="fnTabLoad('ft', 2); return false;">브랜드메시지</button></li>--%>
 					</ul><!--// tab button -->
 				</div>
 				<!-- 예약관리 > 전체 -->
src/main/webapp/WEB-INF/jsp/web/pay/PayGuide.jsp
--- src/main/webapp/WEB-INF/jsp/web/pay/PayGuide.jsp
+++ src/main/webapp/WEB-INF/jsp/web/pay/PayGuide.jsp
@@ -545,7 +545,7 @@
 						</table>
 						<span class="reqTxt4">* 텍스트 용량(Byte)에 대한 안내 : 한글2Byte, 영문·숫자 1Byte를 차지.</span>
 						
-						<p class="tType1_title"><img src="/publish/images/content/icon_fee2.png" alt="알림톡 아이콘 이미지"> 친구톡</p>
+						<%-- <p class="tType1_title"><img src="/publish/images/content/icon_fee2.png" alt="알림톡 아이콘 이미지"> 친구톡</p>
 						<table class="tType2">
 							<colgroup>
 								<col style="width: 20%;">
@@ -574,7 +574,31 @@
 									<td><span>22.9</span>원</td>
 								</tr>
 							</tbody>
-						</table>
+						</table> --%>
+						
+						<p class="tType1_title"><img src="/publish/images/content/icon_fee2.png" alt="알림톡 아이콘 이미지"> 브랜드메시지</p>
+							<table class="tType2">
+								<colgroup>
+									<col style="width: 20%;">
+									<col style="width: 60%;">
+									<col style="width: 20%;">
+								</colgroup>
+								<thead>
+									<tr>
+										<th>구분</th>
+										<th>특징</th>
+										<th>가격</th>
+									</tr>
+								</thead>
+								<tbody>
+									<tr>
+										<th>브랜드메시지</th>
+										<td>카카오톡을 통해 채널 친구 대상으로 발송이 가능한 광고성 메시지<br />(1,000자 이하의 텍스트 및 이미지 발송 가능)</td>
+										<td>20원</td>
+									</tr>
+								</tbody>
+							</table>
+							<span class="reqTxt4">* 텍스트 용량(Byte)에 대한 안내 : 한글2Byte, 영문·숫자 1Byte를 차지.</span>
 							
 						<p class="tType1_title"><img src="/publish/images/content/icon_fee_fax.png" alt="팩스 아이콘 이미지"> 팩스</p>
 						<table class="tType2">
 
src/main/webapp/publish/.gitignore (added)
+++ src/main/webapp/publish/.gitignore
@@ -0,0 +1,0 @@
 
src/main/webapp/publish/brandMsg_set.html (added)
+++ src/main/webapp/publish/brandMsg_set.html
@@ -0,0 +1,720 @@
+<!DOCTYPE html>
+<html lang="ko">
+
+<head>
+    <meta charset="UTF-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge">
+    <title>문자온_브랜드메시지 템플릿_리스트</title>
+
+    <link href="https://fonts.googleapis.com/css2?family=Noto+Sans+KR:wght@100;300;400;500;700;900&display=swap"
+        rel="stylesheet">
+    <link rel="stylesheet" href="/publish/css/reset.css">
+    <link rel="stylesheet" href="/publish/css/jquery.mCustomScrollbar.css">
+    <link rel="stylesheet" href="/publish/css/common.css">
+    <link rel="stylesheet" href="/publish/css/button.css">
+    <link rel="stylesheet" href="/publish/css/content.css">
+    <link rel="stylesheet" href="/publish/css/adrbook.css">
+    <link rel="stylesheet" href="/publish/css/font.css">
+    <link rel="stylesheet" href="/publish/css/popupLayer.css">
+    <link rel="stylesheet" href="/publish/js/datepicker/classic.css">
+    <link rel="stylesheet" href="/publish/js/datepicker/classic.date.css">
+
+
+    <script src="/publish/js/jquery-3.5.0.js"></script>
+    <script src="/publish/js/jquery.mCustomScrollbar.concat.min.js"></script>
+    <script src="/publish/js/common.js"></script>
+    <script src="/publish/js/content.js"></script>
+    <script src="/publish/js/popup.js"></script>
+    <script src="/publish/js/popupLayer.js"></script>
+    <script type="text/javascript" src="/publish/js/datepicker/picker.js"></script>
+    <script type="text/javascript" src="/publish/js/datepicker/picker.date.js"></script>
+    <script type="text/javascript" src="/publish/js/datepicker/ko_KR.js"></script>
+
+
+</head>
+
+<body>
+    <div class="skip_menu">
+        <a href="#cont" title="본문 바로가기" class="contGo">본문 바로가기</a>
+    </div>
+    <!--// skip 메뉴  -->
+    
+    <!-- header 영역 -->
+    <header id="header" class="header sub ">
+        <!-- header top 영역 -->
+        <div class="header_top">
+            <div class="inner">
+                <ul class="menu_left">
+                    <li><a href="#"><i class="hdTop_fav"></i>즐겨찾기추가</a></li>
+                    <li><a href="#"><i class="hdTop_mypage"></i>마이페이지</a></li>
+                    <li><a href="#"><i class="hdTop_center"></i>고객센터</a></li>
+                </ul>
+                <ul class="menu_right">
+                    <li><a href="#">충전하기</a></li>
+                    <li class="SortLine"><a href="#">요금안내</a></li>
+                    <li class="SortLine"><a href="#">이용안내</a></li>
+                    <li class="SortLine"><a href="#">1:1고객상담</a></li>
+                </ul>
+            </div>
+        </div><!-- header top 영역 -->
+        <!-- header body 영역 -->
+        <div class="header_body">
+            <div class="inner table">
+                <h1 class="logo"><a href="/publish/index.html" alt="문자온 메인 바로가기"><img src="/publish/images/CI.png"
+                            alt="문자온 CI"></a></h1>
+                <ul class="gnbWrap table_cell">
+                    <li><a href="#">문자발송</a></li>
+                    <li><a href="#">선거문자</a></li>
+                    <li><a href="#">맞춤제작</a></li>
+                    <li><a href="#">비즈톡</a></li>
+                    <li><a href="#">주소록 관리</a></li>
+                    <li><a href="#">발송결과</a></li>
+                    <li><a href="#">예약관리</a></li>
+                    <li><a href="#">결제내역</a></li>
+                </ul>
+                <div class="s_menu">
+                    <i class="allSearch_info"><span>문자검색</span></i>
+                    <button type="button" title="전체검색" class="allSearch" onclick="searchToggle();"><img
+                            src="/publish/images/search.png" alt="검색영역 열기" class="allMenu"></button>
+                    <button type="button" title="전체메뉴"><img src="/publish/images/all_menu.png" alt="전체메뉴 열기"></button>
+                </div>
+            </div>
+            <!-- search popup 영역 -->
+            <div class="pop_search">
+                <div class="inner">
+                    <div class="area_search">
+                        <select name="" id="">
+                            <option value="">그림문자</option>
+                            <option value="">단문문자</option>
+                            <option value="">장문문자</option>
+                            <option value="">GIF</option>
+                        </select>
+                        <input type="text" placeholder="문자샘플 검색하기">
+                        <button><img src="/publish/images/search02.png" alt=""></button>
+                    </div>
+                    <div class="area_popular">
+                        <p><i></i>인기검색어</p>
+                        <ul class="popular_tag">
+                            <li><a href="#">#정월대보름</a></li>
+                            <li class="on"><a href="#">#추석</a></li>
+                            <li><a href="#">#가을인사</a></li>
+                            <li><a href="#">#좋은하루</a></li>
+                        </ul>
+                    </div>
+                    <button class="btn_close" onclick="searchToggle();"><img src="/publish/images/btn_searchclose.png"
+                            alt=""></button>
+                </div>
+            </div>
+            <!--// search popup 영역 -->
+        </div>
+        <!--// header body 영역 -->
+        <div id="login" class="login">
+            <div class="inner table">
+                <div class="login_left table_cell">
+                    <div class="login_put">
+                        <label for="id_text" class="label"></label>
+                        <input type="text" placeholder="아이디를 입력해주세요" id="id_text" class="id_text" maxlength="30"
+                            size="18">
+                        <label for="password_text" class="label"></label>
+                        <input type="password" placeholder="비밀번호를 입력해주세요" id="password_text" class="password_text"
+                            maxlength="30" size="18">
+                        <label for="login_button" class="label"></label>
+                        <button type="submit" class="btnType btnType1" class="login_button">로그인</button>
+                    </div>
+                    <div class="login_save">
+                        <input type="checkbox" id="save_id">
+                        <label for="save_id">아이디 저장</label>
+                    </div>
+                    <div class="login_find">
+                        <a href="#">아이디찾기 /</a>
+                        <a href="#">비밀번호 찾기</a>
+                    </div>
+                    <div>
+                        <button type="button" class="btnType btnType2">회원가입</button>
+                        <button type="button" class="btnType btnType3">둘러보기</button>
+                    </div>
+                </div>
+                <div class="login_right">
+                    <span><i></i>이달의 이벤트</span>
+                    <button type="button" class="btnType btnType4">바로가기</button>
+                </div>
+            </div>
+        </div>
+        <!--// login 영역 -->
+    </header>
+    <!--// header 영역 -->
+    <!-- login 영역 -->
+    <!-- content 영역 -->
+    <div id="container" class="cont sub">
+        <div class="inner">
+            <!-- send top -->
+            <div class="send_top">
+                <!-- tab button -->
+                <ul class="tabType4">
+                    <li class="tab"><button type="button" onclick="location.href='/publish/kakao_allimtalk_send.html'">알림톡</button></li>
+                    <li class="tab"><button type="button" onclick="location.href='/publish/kakao_friendtalk_send.html'">친구톡</button></li>
+                    <li class="tab active"><button type="button" onclick="location.href='/publish/kakao_use_guide.html'">카카오톡 설정</button></li>
+                    <li class="tab"><button type="button" onclick="TabType5(this,'4');">알림톡·친구톡 소개</button></li>
+                </ul>
+                <!--// tab button -->
+                <!-- 카카오톡 설정 - 알림톡 템플릿 등록/관리 - 내템플릿 -->
+                <div class="top_content kakaotalkset_cont current pay_tab_wrap">
+                    <div class="heading">
+                        <h2>카카오톡 설정</h2>
+                        <button type="button" class="button info" onclick="infoListPop('brandMsgSet','792','340');">사용안내</button>
+                    </div>
+                    <div class="list_tab_wrap2 type2 ">
+                        <!-- tab button -->
+                        <ul class="list_tab">
+                            <li class="tab"><button type="button" onclick="location.href='/publish/kakao_use_guide.html'">사용안내</button></li>
+                            <li class="tab"><button type="button" onclick="location.href='/publish/kakao_profile_add.html'">발신프로필 등록/관리</button></li>
+                            <li class="tab"><button type="button" onclick="location.href='/publish/kakao_allimtalk_list.html'">알림톡 템플릿 등록/관리</button></li>
+                            <li class="tab active"><button type="button" onclick="location.href='/publish/kakao_friendtalk_list.html'">브랜드메시지 템플릿 관리</button></li>
+                        </ul>
+                        <!--// tab button -->
+                    </div>
+                    
+                    <div class="tab_content template_content_wrap friend_template_content current" id="tab_content_1">
+                        <!-- 검색조건 -->
+                    <div class="excel_middle">
+                        <div class="select_btnWrap clearfix">
+                            <div class="btn_left">
+                                <span class="cal_label">등록일</span>
+                                <div class="calendar_wrap">
+                                    <input type="text" class="startDate inp calendar picker__input" title="검색 시작일" id="startDate" name="startDate" value="" data-datecontrol="true" readonly="" aria-haspopup="true" aria-expanded="false" aria-readonly="false" aria-owns="startDate_root"><div class="picker" id="startDate_root" aria-hidden="true"><div class="picker__holder" tabindex="-1"><div class="picker__frame"><div class="picker__wrap"><div class="picker__box"><div class="picker__header"><div class="picker__month">2월</div><div class="picker__year">2023</div><div class="picker__nav--prev" data-nav="-1" role="button" aria-controls="startDate_table" title="이전 달 보기"> </div><div class="picker__nav--next" data-nav="1" role="button" aria-controls="startDate_table" title="다음 달 보기"> </div></div><table class="picker__table" id="startDate_table" role="grid" aria-controls="startDate" aria-readonly="true"><thead><tr><th class="picker__weekday" scope="col" title="월요일">월</th><th class="picker__weekday" scope="col" title="화요일">화</th><th class="picker__weekday" scope="col" title="수요일">수</th><th class="picker__weekday" scope="col" title="목요일">목</th><th class="picker__weekday" scope="col" title="금요일">금</th><th class="picker__weekday" scope="col" title="토요일">토</th><th class="picker__weekday" scope="col" title="일요일">일</th></tr></thead><tbody><tr><td role="presentation"><div class="picker__day picker__day--outfocus" data-pick="1675004400000" role="gridcell" aria-label="2023/01/30">30</div></td><td role="presentation"><div class="picker__day picker__day--outfocus" data-pick="1675090800000" role="gridcell" aria-label="2023/01/31">31</div></td><td role="presentation"><div class="picker__day picker__day--infocus" data-pick="1675177200000" role="gridcell" aria-label="2023/02/01">1</div></td><td role="presentation"><div class="picker__day picker__day--infocus" data-pick="1675263600000" role="gridcell" aria-label="2023/02/02">2</div></td><td role="presentation"><div class="picker__day picker__day--infocus picker__day--today picker__day--highlighted" data-pick="1675350000000" role="gridcell" aria-label="2023/02/03" aria-activedescendant="true">3</div></td><td role="presentation"><div class="picker__day picker__day--infocus" data-pick="1675436400000" role="gridcell" aria-label="2023/02/04">4</div></td><td role="presentation"><div class="picker__day picker__day--infocus" data-pick="1675522800000" role="gridcell" aria-label="2023/02/05">5</div></td></tr><tr><td role="presentation"><div class="picker__day picker__day--infocus" data-pick="1675609200000" role="gridcell" aria-label="2023/02/06">6</div></td><td role="presentation"><div class="picker__day picker__day--infocus" data-pick="1675695600000" role="gridcell" aria-label="2023/02/07">7</div></td><td role="presentation"><div class="picker__day picker__day--infocus" data-pick="1675782000000" role="gridcell" aria-label="2023/02/08">8</div></td><td role="presentation"><div class="picker__day picker__day--infocus" data-pick="1675868400000" role="gridcell" aria-label="2023/02/09">9</div></td><td role="presentation"><div class="picker__day picker__day--infocus" data-pick="1675954800000" role="gridcell" aria-label="2023/02/10">10</div></td><td role="presentation"><div class="picker__day picker__day--infocus" data-pick="1676041200000" role="gridcell" aria-label="2023/02/11">11</div></td><td role="presentation"><div class="picker__day picker__day--infocus" data-pick="1676127600000" role="gridcell" aria-label="2023/02/12">12</div></td></tr><tr><td role="presentation"><div class="picker__day picker__day--infocus" data-pick="1676214000000" role="gridcell" aria-label="2023/02/13">13</div></td><td role="presentation"><div class="picker__day picker__day--infocus" data-pick="1676300400000" role="gridcell" aria-label="2023/02/14">14</div></td><td role="presentation"><div class="picker__day picker__day--infocus" data-pick="1676386800000" role="gridcell" aria-label="2023/02/15">15</div></td><td role="presentation"><div class="picker__day picker__day--infocus" data-pick="1676473200000" role="gridcell" aria-label="2023/02/16">16</div></td><td role="presentation"><div class="picker__day picker__day--infocus" data-pick="1676559600000" role="gridcell" aria-label="2023/02/17">17</div></td><td role="presentation"><div class="picker__day picker__day--infocus" data-pick="1676646000000" role="gridcell" aria-label="2023/02/18">18</div></td><td role="presentation"><div class="picker__day picker__day--infocus" data-pick="1676732400000" role="gridcell" aria-label="2023/02/19">19</div></td></tr><tr><td role="presentation"><div class="picker__day picker__day--infocus" data-pick="1676818800000" role="gridcell" aria-label="2023/02/20">20</div></td><td role="presentation"><div class="picker__day picker__day--infocus" data-pick="1676905200000" role="gridcell" aria-label="2023/02/21">21</div></td><td role="presentation"><div class="picker__day picker__day--infocus" data-pick="1676991600000" role="gridcell" aria-label="2023/02/22">22</div></td><td role="presentation"><div class="picker__day picker__day--infocus" data-pick="1677078000000" role="gridcell" aria-label="2023/02/23">23</div></td><td role="presentation"><div class="picker__day picker__day--infocus" data-pick="1677164400000" role="gridcell" aria-label="2023/02/24">24</div></td><td role="presentation"><div class="picker__day picker__day--infocus" data-pick="1677250800000" role="gridcell" aria-label="2023/02/25">25</div></td><td role="presentation"><div class="picker__day picker__day--infocus" data-pick="1677337200000" role="gridcell" aria-label="2023/02/26">26</div></td></tr><tr><td role="presentation"><div class="picker__day picker__day--infocus" data-pick="1677423600000" role="gridcell" aria-label="2023/02/27">27</div></td><td role="presentation"><div class="picker__day picker__day--infocus" data-pick="1677510000000" role="gridcell" aria-label="2023/02/28">28</div></td><td role="presentation"><div class="picker__day picker__day--outfocus" data-pick="1677596400000" role="gridcell" aria-label="2023/03/01">1</div></td><td role="presentation"><div class="picker__day picker__day--outfocus" data-pick="1677682800000" role="gridcell" aria-label="2023/03/02">2</div></td><td role="presentation"><div class="picker__day picker__day--outfocus" data-pick="1677769200000" role="gridcell" aria-label="2023/03/03">3</div></td><td role="presentation"><div class="picker__day picker__day--outfocus" data-pick="1677855600000" role="gridcell" aria-label="2023/03/04">4</div></td><td role="presentation"><div class="picker__day picker__day--outfocus" data-pick="1677942000000" role="gridcell" aria-label="2023/03/05">5</div></td></tr><tr><td role="presentation"><div class="picker__day picker__day--outfocus" data-pick="1678028400000" role="gridcell" aria-label="2023/03/06">6</div></td><td role="presentation"><div class="picker__day picker__day--outfocus" data-pick="1678114800000" role="gridcell" aria-label="2023/03/07">7</div></td><td role="presentation"><div class="picker__day picker__day--outfocus" data-pick="1678201200000" role="gridcell" aria-label="2023/03/08">8</div></td><td role="presentation"><div class="picker__day picker__day--outfocus" data-pick="1678287600000" role="gridcell" aria-label="2023/03/09">9</div></td><td role="presentation"><div class="picker__day picker__day--outfocus" data-pick="1678374000000" role="gridcell" aria-label="2023/03/10">10</div></td><td role="presentation"><div class="picker__day picker__day--outfocus" data-pick="1678460400000" role="gridcell" aria-label="2023/03/11">11</div></td><td role="presentation"><div class="picker__day picker__day--outfocus" data-pick="1678546800000" role="gridcell" aria-label="2023/03/12">12</div></td></tr></tbody></table><div class="picker__footer"><button class="picker__button--today" type="button" data-pick="1675350000000" disabled="" aria-controls="startDate">오늘</button><button class="picker__button--clear" type="button" data-clear="1" disabled="" aria-controls="startDate">초기화</button><button class="picker__button--close" type="button" data-close="true" disabled="" aria-controls="startDate">닫기</button></div></div></div></div></div></div><input type="hidden" name="startDate_submit">
+                                    <span class="dateEtc">~</span>
+                                    <input type="text" class="endDate inp calendar picker__input" title="검색 종료일" id="endDate" name="endDate" value="" data-datecontrol="true" readonly="" aria-haspopup="true" aria-expanded="false" aria-readonly="false" aria-owns="endDate_root"><div class="picker" id="endDate_root" aria-hidden="true"><div class="picker__holder" tabindex="-1"><div class="picker__frame"><div class="picker__wrap"><div class="picker__box"><div class="picker__header"><div class="picker__month">2월</div><div class="picker__year">2023</div><div class="picker__nav--prev" data-nav="-1" role="button" aria-controls="endDate_table" title="이전 달 보기"> </div><div class="picker__nav--next" data-nav="1" role="button" aria-controls="endDate_table" title="다음 달 보기"> </div></div><table class="picker__table" id="endDate_table" role="grid" aria-controls="endDate" aria-readonly="true"><thead><tr><th class="picker__weekday" scope="col" title="월요일">월</th><th class="picker__weekday" scope="col" title="화요일">화</th><th class="picker__weekday" scope="col" title="수요일">수</th><th class="picker__weekday" scope="col" title="목요일">목</th><th class="picker__weekday" scope="col" title="금요일">금</th><th class="picker__weekday" scope="col" title="토요일">토</th><th class="picker__weekday" scope="col" title="일요일">일</th></tr></thead><tbody><tr><td role="presentation"><div class="picker__day picker__day--outfocus" data-pick="1675004400000" role="gridcell" aria-label="2023/01/30">30</div></td><td role="presentation"><div class="picker__day picker__day--outfocus" data-pick="1675090800000" role="gridcell" aria-label="2023/01/31">31</div></td><td role="presentation"><div class="picker__day picker__day--infocus" data-pick="1675177200000" role="gridcell" aria-label="2023/02/01">1</div></td><td role="presentation"><div class="picker__day picker__day--infocus" data-pick="1675263600000" role="gridcell" aria-label="2023/02/02">2</div></td><td role="presentation"><div class="picker__day picker__day--infocus picker__day--today picker__day--highlighted" data-pick="1675350000000" role="gridcell" aria-label="2023/02/03" aria-activedescendant="true">3</div></td><td role="presentation"><div class="picker__day picker__day--infocus" data-pick="1675436400000" role="gridcell" aria-label="2023/02/04">4</div></td><td role="presentation"><div class="picker__day picker__day--infocus" data-pick="1675522800000" role="gridcell" aria-label="2023/02/05">5</div></td></tr><tr><td role="presentation"><div class="picker__day picker__day--infocus" data-pick="1675609200000" role="gridcell" aria-label="2023/02/06">6</div></td><td role="presentation"><div class="picker__day picker__day--infocus" data-pick="1675695600000" role="gridcell" aria-label="2023/02/07">7</div></td><td role="presentation"><div class="picker__day picker__day--infocus" data-pick="1675782000000" role="gridcell" aria-label="2023/02/08">8</div></td><td role="presentation"><div class="picker__day picker__day--infocus" data-pick="1675868400000" role="gridcell" aria-label="2023/02/09">9</div></td><td role="presentation"><div class="picker__day picker__day--infocus" data-pick="1675954800000" role="gridcell" aria-label="2023/02/10">10</div></td><td role="presentation"><div class="picker__day picker__day--infocus" data-pick="1676041200000" role="gridcell" aria-label="2023/02/11">11</div></td><td role="presentation"><div class="picker__day picker__day--infocus" data-pick="1676127600000" role="gridcell" aria-label="2023/02/12">12</div></td></tr><tr><td role="presentation"><div class="picker__day picker__day--infocus" data-pick="1676214000000" role="gridcell" aria-label="2023/02/13">13</div></td><td role="presentation"><div class="picker__day picker__day--infocus" data-pick="1676300400000" role="gridcell" aria-label="2023/02/14">14</div></td><td role="presentation"><div class="picker__day picker__day--infocus" data-pick="1676386800000" role="gridcell" aria-label="2023/02/15">15</div></td><td role="presentation"><div class="picker__day picker__day--infocus" data-pick="1676473200000" role="gridcell" aria-label="2023/02/16">16</div></td><td role="presentation"><div class="picker__day picker__day--infocus" data-pick="1676559600000" role="gridcell" aria-label="2023/02/17">17</div></td><td role="presentation"><div class="picker__day picker__day--infocus" data-pick="1676646000000" role="gridcell" aria-label="2023/02/18">18</div></td><td role="presentation"><div class="picker__day picker__day--infocus" data-pick="1676732400000" role="gridcell" aria-label="2023/02/19">19</div></td></tr><tr><td role="presentation"><div class="picker__day picker__day--infocus" data-pick="1676818800000" role="gridcell" aria-label="2023/02/20">20</div></td><td role="presentation"><div class="picker__day picker__day--infocus" data-pick="1676905200000" role="gridcell" aria-label="2023/02/21">21</div></td><td role="presentation"><div class="picker__day picker__day--infocus" data-pick="1676991600000" role="gridcell" aria-label="2023/02/22">22</div></td><td role="presentation"><div class="picker__day picker__day--infocus" data-pick="1677078000000" role="gridcell" aria-label="2023/02/23">23</div></td><td role="presentation"><div class="picker__day picker__day--infocus" data-pick="1677164400000" role="gridcell" aria-label="2023/02/24">24</div></td><td role="presentation"><div class="picker__day picker__day--infocus" data-pick="1677250800000" role="gridcell" aria-label="2023/02/25">25</div></td><td role="presentation"><div class="picker__day picker__day--infocus" data-pick="1677337200000" role="gridcell" aria-label="2023/02/26">26</div></td></tr><tr><td role="presentation"><div class="picker__day picker__day--infocus" data-pick="1677423600000" role="gridcell" aria-label="2023/02/27">27</div></td><td role="presentation"><div class="picker__day picker__day--infocus" data-pick="1677510000000" role="gridcell" aria-label="2023/02/28">28</div></td><td role="presentation"><div class="picker__day picker__day--outfocus" data-pick="1677596400000" role="gridcell" aria-label="2023/03/01">1</div></td><td role="presentation"><div class="picker__day picker__day--outfocus" data-pick="1677682800000" role="gridcell" aria-label="2023/03/02">2</div></td><td role="presentation"><div class="picker__day picker__day--outfocus" data-pick="1677769200000" role="gridcell" aria-label="2023/03/03">3</div></td><td role="presentation"><div class="picker__day picker__day--outfocus" data-pick="1677855600000" role="gridcell" aria-label="2023/03/04">4</div></td><td role="presentation"><div class="picker__day picker__day--outfocus" data-pick="1677942000000" role="gridcell" aria-label="2023/03/05">5</div></td></tr><tr><td role="presentation"><div class="picker__day picker__day--outfocus" data-pick="1678028400000" role="gridcell" aria-label="2023/03/06">6</div></td><td role="presentation"><div class="picker__day picker__day--outfocus" data-pick="1678114800000" role="gridcell" aria-label="2023/03/07">7</div></td><td role="presentation"><div class="picker__day picker__day--outfocus" data-pick="1678201200000" role="gridcell" aria-label="2023/03/08">8</div></td><td role="presentation"><div class="picker__day picker__day--outfocus" data-pick="1678287600000" role="gridcell" aria-label="2023/03/09">9</div></td><td role="presentation"><div class="picker__day picker__day--outfocus" data-pick="1678374000000" role="gridcell" aria-label="2023/03/10">10</div></td><td role="presentation"><div class="picker__day picker__day--outfocus" data-pick="1678460400000" role="gridcell" aria-label="2023/03/11">11</div></td><td role="presentation"><div class="picker__day picker__day--outfocus" data-pick="1678546800000" role="gridcell" aria-label="2023/03/12">12</div></td></tr></tbody></table><div class="picker__footer"><button class="picker__button--today" type="button" data-pick="1675350000000" disabled="" aria-controls="endDate">오늘</button><button class="picker__button--clear" type="button" data-clear="1" disabled="" aria-controls="endDate">초기화</button><button class="picker__button--close" type="button" data-close="true" disabled="" aria-controls="endDate">닫기</button></div></div></div></div></div></div><input type="hidden" name="endDate_submit">
+                                </div>
+                                <select name="searchCondition" id="searchCondition" class="selType2">
+                                    <option value="2">등록상태</option>
+                                    <option value="3">심사필요</option>
+                                    <option value="4">심사요청</option>
+                                    <option value="5">반려</option>
+                                    <option value="6">승인</option>
+                                    <option value="7">정지</option>
+                                </select>
+                                <div class="search">
+                                    <label for="id" class="label"></label>
+                                    <input type="text" class="search_input" id="searchKeyword" name="searchKeyword" value="" placeholder="검색어를 입력하세요." onfocus="this.placeholder=''" onblur="this.placeholder='검색어를 입력하세요.'">
+                                    <button type="button" class="btnType btnType2">검색</button>
+                                </div>
+                            </div>
+                        </div>
+                    </div>
+                    <!-- //검색조건 -->
+                    <div class="list_info">
+                        <div class="btn_wrap left">
+                            <button type="button" class="btnType btnType2 template_add" onclick="location.href='/publish/kakao_friendtalk_add.html'">템플릿 등록</button>
+                            <button type="button" class="btnType btnType3 btn_list"><i></i>리스트</button>
+                            <button type="button" class="btnType btnType3 btn_thumbnail"><i></i>썸네일</button>
+                        </div>
+                        <!-- <div class="btn_wrap right">
+                            <button type="button" class="btnType btnType8">템플릿 심사요청</button>
+                        </div> -->
+                    </div>
+                    <!--<div class="thumbnail_content current">
+                        <ul class="kakao_template_list thumbnail_list">
+                            <li>
+                                <div class="kakao_template_wrap">
+                                    <div class="template_cont">
+                                        <div class="title">
+                                            <div class="check">
+                                                <input type="checkbox">
+                                            </div>
+                                           	<p title="포인트 적립안내">(광고)munjaon</p>
+                                        </div>
+                                        <div class="allimtalk_content">
+                                            <p class="template_text">[포인트 적립]
+                                                쿼드커피에서 컨택포인트로 적립하셨네요!
+                                                320p 적립 완료되어 고객님의 현재 포인트는 7,000P입니다.
+                                                
+                                                [포인트 정책]
+                                                4,000P 이상 모으면 현금처럼 사용하실 수 있습니다.</p>
+                                            <button type="button" class="btn_kakao_type">버튼명</button>
+                                        </div>
+                                    </div>
+                                    <p class="cf_text">수신거부 | 홈 > 채널차단</p>
+                                </div>
+                                <div class="kakao_template_info">
+                                    <dl>
+                                        <dt>등록일</dt>
+                                        <dd>2023.01.05 17:00 
+                                            <div class="btn_wrap">
+                                                <button type="button" class="btn_template_edit" title="템플릿 수정"><img src="/publish/images/content/btn_template_edit.png" alt=""></button>
+                                                <button type="button" class="btn_template_delete" title="템플릿 삭제"><img src="/publish/images/content/btn_template_delete.png" alt=""></button>
+                                            </div>
+                                        </dd>
+                                    </dl>
+                                </div>
+                            </li>
+                            <li>
+                                <div class="kakao_template_wrap">
+                                    <div class="template_cont">
+                                        <div class="title">
+                                            <div class="check">
+                                                <input type="checkbox">
+                                            </div>
+                                           	<p title="포인트 적립안내">(광고)munjaon</p>
+                                        </div>
+                                        <div class="allimtalk_content">
+                                            <p class="template_text">[포인트 적립]
+                                                쿼드커피에서 컨택포인트로 적립하셨네요!
+                                                320p 적립 완료되어 고객님의 현재 포인트는 7,000P입니다.
+                                                
+                                                [포인트 정책]
+                                                4,000P 이상 모으면 현금처럼 사용하실 수 있습니다.</p>
+                                            <button type="button" class="btn_kakao_type">버튼명</button>
+                                        </div>
+                                    </div>
+                                    <p class="cf_text">수신거부 | 홈 > 채널차단</p>
+                                </div>
+                                <div class="kakao_template_info">
+                                    <dl>
+                                        <dt>등록일</dt>
+                                        <dd>2023.01.05 17:00 
+                                            <div class="btn_wrap">
+                                                <button type="button" class="btn_template_edit" title="템플릿 수정"><img src="/publish/images/content/btn_template_edit.png" alt=""></button>
+                                                <button type="button" class="btn_template_delete" title="템플릿 삭제"><img src="/publish/images/content/btn_template_delete.png" alt=""></button>
+                                            </div>
+                                        </dd>
+                                    </dl>
+                                </div>
+                            </li>
+                            <li>
+                                <div class="kakao_template_wrap">
+                                    <div class="template_cont">
+                                        <div class="title">
+                                            <div class="check">
+                                                <input type="checkbox">
+                                            </div>
+                                           	<p title="포인트 적립안내">(광고)munjaon</p>
+                                        </div>
+                                        <div class="allimtalk_content">
+                                            <p class="template_text">[포인트 적립]
+                                                쿼드커피에서 컨택포인트로 적립하셨네요!
+                                                320p 적립 완료되어 고객님의 현재 포인트는 7,000P입니다.
+                                                
+                                                [포인트 정책]
+                                                4,000P 이상 모으면 현금처럼 사용하실 수 있습니다.</p>
+                                            <button type="button" class="btn_kakao_type">버튼명</button>
+                                        </div>
+                                    </div>
+                                    <p class="cf_text">수신거부 | 홈 > 채널차단</p>
+                                </div>
+                                <div class="kakao_template_info">
+                                    <dl>
+                                        <dt>등록일</dt>
+                                        <dd>2023.01.05 17:00 
+                                            <div class="btn_wrap">
+                                                <button type="button" class="btn_template_edit" title="템플릿 수정"><img src="/publish/images/content/btn_template_edit.png" alt=""></button>
+                                                <button type="button" class="btn_template_delete" title="템플릿 삭제"><img src="/publish/images/content/btn_template_delete.png" alt=""></button>
+                                            </div>
+                                        </dd>
+                                    </dl>
+                                </div>
+                            </li>
+                            <li>
+                                <div class="kakao_template_wrap">
+                                    <div class="template_cont">
+                                        <div class="title">
+                                            <div class="check">
+                                                <input type="checkbox">
+                                            </div>
+                                           	<p title="포인트 적립안내">(광고)munjaon</p>
+                                        </div>
+                                        <div class="allimtalk_content">
+                                            <p class="template_text">[포인트 적립]
+                                                쿼드커피에서 컨택포인트로 적립하셨네요!
+                                                320p 적립 완료되어 고객님의 현재 포인트는 7,000P입니다.
+                                                
+                                                [포인트 정책]
+                                                4,000P 이상 모으면 현금처럼 사용하실 수 있습니다.</p>
+                                            <button type="button" class="btn_kakao_type">버튼명</button>
+                                        </div>
+                                    </div>
+                                    <p class="cf_text">수신거부 | 홈 > 채널차단</p>
+                                </div>
+                                <div class="kakao_template_info">
+                                    <dl>
+                                        <dt>등록일</dt>
+                                        <dd>2023.01.05 17:00 
+                                            <div class="btn_wrap">
+                                                <button type="button" class="btn_template_edit" title="템플릿 수정"><img src="/publish/images/content/btn_template_edit.png" alt=""></button>
+                                                <button type="button" class="btn_template_delete" title="템플릿 삭제"><img src="/publish/images/content/btn_template_delete.png" alt=""></button>
+                                            </div>
+                                        </dd>
+                                    </dl>
+                                </div>
+                            </li>
+                            <li>
+                                <div class="kakao_template_wrap">
+                                    <div class="template_cont">
+                                        <div class="title">
+                                            <div class="check">
+                                                <input type="checkbox">
+                                            </div>
+                                           	<p title="포인트 적립안내">(광고)munjaon</p>
+                                        </div>
+                                        <div class="allimtalk_content">
+                                            <p class="template_text">[포인트 적립]
+                                                쿼드커피에서 컨택포인트로 적립하셨네요!
+                                                320p 적립 완료되어 고객님의 현재 포인트는 7,000P입니다.
+                                                
+                                                [포인트 정책]
+                                                4,000P 이상 모으면 현금처럼 사용하실 수 있습니다.</p>
+                                            <button type="button" class="btn_kakao_type">버튼명</button>
+                                        </div>
+                                    </div>
+                                    <p class="cf_text">수신거부 | 홈 > 채널차단</p>
+                                </div>
+                                <div class="kakao_template_info">
+                                    <dl>
+                                        <dt>등록일</dt>
+                                        <dd>2023.01.05 17:00 
+                                            <div class="btn_wrap">
+                                                <button type="button" class="btn_template_edit" title="템플릿 수정"><img src="/publish/images/content/btn_template_edit.png" alt=""></button>
+                                                <button type="button" class="btn_template_delete" title="템플릿 삭제"><img src="/publish/images/content/btn_template_delete.png" alt=""></button>
+                                            </div>
+                                        </dd>
+                                    </dl>
+                                </div>
+                            </li>
+                            <li>
+                                <div class="kakao_template_wrap">
+                                    <div class="template_cont">
+                                        <div class="title">
+                                            <div class="check">
+                                                <input type="checkbox">
+                                            </div>
+                                           	<p title="포인트 적립안내">(광고)munjaon</p>
+                                        </div>
+                                        <div class="allimtalk_content">
+                                            <p class="template_text">[포인트 적립]
+                                                쿼드커피에서 컨택포인트로 적립하셨네요!
+                                                320p 적립 완료되어 고객님의 현재 포인트는 7,000P입니다.
+                                                
+                                                [포인트 정책]
+                                                4,000P 이상 모으면 현금처럼 사용하실 수 있습니다.</p>
+                                            <button type="button" class="btn_kakao_type">버튼명</button>
+                                        </div>
+                                    </div>
+                                    <p class="cf_text">수신거부 | 홈 > 채널차단</p>
+                                </div>
+                                <div class="kakao_template_info">
+                                    <dl>
+                                        <dt>등록일</dt>
+                                        <dd>2023.01.05 17:00 
+                                            <div class="btn_wrap">
+                                                <button type="button" class="btn_template_edit" title="템플릿 수정"><img src="/publish/images/content/btn_template_edit.png" alt=""></button>
+                                                <button type="button" class="btn_template_delete" title="템플릿 삭제"><img src="/publish/images/content/btn_template_delete.png" alt=""></button>
+                                            </div>
+                                        </dd>
+                                    </dl>
+                                </div>
+                            </li>
+                            <li>
+                                <div class="kakao_template_wrap">
+                                    <div class="template_cont">
+                                        <div class="title">
+                                            <div class="check">
+                                                <input type="checkbox">
+                                            </div>
+                                           	<p title="포인트 적립안내">(광고)munjaon</p>
+                                        </div>
+                                        <div class="allimtalk_content">
+                                            <p class="template_text">[포인트 적립]
+                                                쿼드커피에서 컨택포인트로 적립하셨네요!
+                                                320p 적립 완료되어 고객님의 현재 포인트는 7,000P입니다.
+                                                
+                                                [포인트 정책]
+                                                4,000P 이상 모으면 현금처럼 사용하실 수 있습니다.</p>
+                                            <button type="button" class="btn_kakao_type">버튼명</button>
+                                        </div>
+                                    </div>
+                                    <p class="cf_text">수신거부 | 홈 > 채널차단</p>
+                                </div>
+                                <div class="kakao_template_info">
+                                    <dl>
+                                        <dt>등록일</dt>
+                                        <dd>2023.01.05 17:00 
+                                            <div class="btn_wrap">
+                                                <button type="button" class="btn_template_edit" title="템플릿 수정"><img src="/publish/images/content/btn_template_edit.png" alt=""></button>
+                                                <button type="button" class="btn_template_delete" title="템플릿 삭제"><img src="/publish/images/content/btn_template_delete.png" alt=""></button>
+                                            </div>
+                                        </dd>
+                                    </dl>
+                                </div>
+                            </li>
+                            <li>
+                                <div class="kakao_template_wrap">
+                                    <div class="template_cont">
+                                        <div class="title">
+                                            <div class="check">
+                                                <input type="checkbox">
+                                            </div>
+                                           	<p title="포인트 적립안내">(광고)munjaon</p>
+                                        </div>
+                                        <div class="allimtalk_content">
+                                            <p class="template_text">[포인트 적립]
+                                                쿼드커피에서 컨택포인트로 적립하셨네요!
+                                                320p 적립 완료되어 고객님의 현재 포인트는 7,000P입니다.
+                                                
+                                                [포인트 정책]
+                                                4,000P 이상 모으면 현금처럼 사용하실 수 있습니다.</p>
+                                            <button type="button" class="btn_kakao_type">버튼명</button>
+                                        </div>
+                                    </div>
+                                    <p class="cf_text">수신거부 | 홈 > 채널차단</p>
+                                </div>
+                                <div class="kakao_template_info">
+                                    <dl>
+                                        <dt>등록일</dt>
+                                        <dd>2023.01.05 17:00 
+                                            <div class="btn_wrap">
+                                                <button type="button" class="btn_template_edit" title="템플릿 수정"><img src="/publish/images/content/btn_template_edit.png" alt=""></button>
+                                                <button type="button" class="btn_template_delete" title="템플릿 삭제"><img src="/publish/images/content/btn_template_delete.png" alt=""></button>
+                                            </div>
+                                        </dd>
+                                    </dl>
+                                </div>
+                            </li>
+                        </ul>
+                    </div> -->
+                    <div class="list_content current" style="display:block;">
+                        <div class="tb_wrap">
+                            <table class="tType4">
+                                <colgroup>
+                                    <col style="width: 70px;">
+                                    <col style="width: 15%;">
+                                    <col style="width: auto;">
+                                    <col style="width: 15%;">
+                                    <col style="width: 15%;">
+                                </colgroup>
+                                <thead>
+                                    <tr>
+                                        <th>
+                                            <label for="chkAll" class="label">전체 선택</label>
+                                            <input type="checkbox" id="chkAll">
+                                        </th>
+                                        <th>카카오톡 채널 아이디</th>
+                                        <th>템플릿명</th>
+                                        <th>템플릿 유형</th>
+                                        <th>등록일</th>
+                                    </tr>
+                                </thead>
+                                <tbody>
+                                    <tr>
+                                        <td>
+                                            <label for="profile_1" class="label">선택</label>
+                                            <input name="kakao_profile" id="profile_1" type="checkbox">
+                                        </td>
+                                        <td>@문자온</td>
+                                        <td>템플릿이름1</td>
+                                        <td>텍스트</td>
+                                        <td>2021-03-22</td>
+                                    </tr>
+                                </tbody>
+                            </table>
+                        </div>
+                    </div>
+                    <div class="table_btn clearfix">
+                        <button type="button" class="btnType btnType15"><i class="add_img"></i>전체선택</button>
+                        <button type="button" class="btnType btnType15"><i class="remove_img"></i>선택삭제</button>
+                    </div>
+                    <!-- pagination -->
+                    <ul class="pagination">
+                        <li class="page_first"><button><img src="/publish/images/content/page_first.png"alt=""></button></li>
+                        <li class="page_prev"><button><img src="/publish/images/content/page_prev.png"alt=""></button></li>
+                        <li class="on"><button>1</button></li>
+                        <li><button>2</button></li>
+                        <li><button>3</button></li>
+                        <li><button>4</button></li>
+                        <li><button>5</button></li>
+                        <li><button>6</button></li>
+                        <li><button>7</button></li>
+                        <li><button>8</button></li>
+                        <li><button>9</button></li>
+                        <li><button>10</button></li>
+                        <li class="page_next"><button><img src="/publish/images/content/page_next.png"alt=""></button></li>
+                        <li class="page_last"><button><img src="/publish/images/content/page_last.png"alt=""></button></li>
+                    </ul><!-- pagination -->
+                    </div>
+                    <div class="tab_content template_sample_content_wrap" id="tab_content_2">
+                        <!-- 검색조건 -->
+                    <div class="excel_middle">
+                        <div class="select_btnWrap clearfix">
+                            <div class="btn_left">
+                                <span class="cal_label">템플릿 유형</span>
+                                <select name="searchCondition" id="searchCondition" class="selType2">
+                                    <option value="2">등록상태</option>
+                                    <option value="3">심사필요</option>
+                                    <option value="4">심사요청</option>
+                                    <option value="5">반려</option>
+                                    <option value="6">승인</option>
+                                    <option value="7">정지</option>
+                                </select>
+                                <div class="search">
+                                    <label for="id" class="label"></label>
+                                    <input type="text" class="search_input" id="searchKeyword" name="searchKeyword" value="" placeholder="검색어를 입력하세요." onfocus="this.placeholder=''" onblur="this.placeholder='검색어를 입력하세요.'">
+                                    <button type="button" class="btnType btnType2">검색</button>
+                                </div>
+                            </div>
+                        </div>
+                    </div>
+                    <!-- //검색조건 -->
+                    <ul class="adr_depth3">
+                        <li class="tab active"><button type="button" onclick="listTab(this,'1');">BEST</button></li>
+                        <li class="tab"><button type="button" onclick="listTab(this,'2');">병원</button></li>
+                        <li class="tab"><button type="button" onclick="listTab(this,'3');">쇼핑</button></li>
+                        <li class="tab"><button type="button" onclick="listTab(this,'4');">배송/배달</button></li>
+                        <li class="tab"><button type="button" onclick="listTab(this,'5');">교육</button></li>
+                        <li class="tab"><button type="button" onclick="listTab(this,'6');">금융/보험</button></li>
+                        <li class="tab"><button type="button" onclick="listTab(this,'7');">여행</button></li>
+                        <li class="tab"><button type="button" onclick="listTab(this,'8');">고객관리</button></li>
+                        <li class="tab"><button type="button" onclick="listTab(this,'9');">안내</button></li>
+                    </ul>
+                    <div class="thumbnail_content">
+                        <ul class="kakao_template_list thumbnail_list">
+                            <li>
+                                <div class="kakao_template_wrap">
+                                    <div class="template_cont">
+                                        <div class="title">
+                                            <div class="check">
+                                                <input type="checkbox">
+                                            </div>
+                                            <p title="포인트 적립안내">포인트 적립안내</p>
+                                        </div>
+                                        <div class="img_box">
+                                            <img src="/publish/images/kakao_template_img.png" alt="">
+                                        </div>
+                                        <div class="text_box">
+                                            <p>[포인트 적립]
+                                                쿼드커피에서 컨택포인트로 적립하셨네요!
+                                                320p 적립 완료되어 고객님의 현재 포인트는 7,000P입니다.
+                                                
+                                                [포인트 정책]
+                                                4,000P 이상 모으면 현금처럼 사용하실 수 있습니다.
+                                            </p>
+                                        </div>
+                                    </div>
+                                </div>
+                                <div class="btn_wrap">
+                                    <button type="button" class="btnType btnType3 btn_template_use">템플릿 사용하기</button>
+                                </div>
+                            </li>
+                            <li>
+                                <div class="kakao_template_wrap">
+                                    <div class="template_cont">
+                                        <div class="title">
+                                            <div class="check">
+                                                <input type="checkbox">
+                                            </div>
+                                            <p title="포인트 적립안내">포인트 적립안내</p>
+                                        </div>
+                                        <div class="img_box">
+                                            <img src="/publish/images/kakao_template_img.png" alt="">
+                                        </div>
+                                        <div class="text_box">
+                                            <p>[포인트 적립]
+                                                쿼드커피에서 컨택포인트로 적립하셨네요!
+                                                320p 적립 완료되어 고객님의 현재 포인트는 7,000P입니다.
+                                                
+                                                [포인트 정책]
+                                                4,000P 이상 모으면 현금처럼 사용하실 수 있습니다.
+                                            </p>
+                                        </div>
+                                    </div>
+                                </div>
+                                <div class="btn_wrap">
+                                    <button type="button" class="btnType btnType3 btn_template_use">템플릿 사용하기</button>
+                                </div>
+                            </li>
+                            <li>
+                                <div class="kakao_template_wrap">
+                                    <div class="template_cont">
+                                        <div class="title">
+                                            <div class="check">
+                                                <input type="checkbox">
+                                            </div>
+                                            <p title="포인트 적립안내">포인트 적립안내</p>
+                                        </div>
+                                        <div class="img_box">
+                                            <img src="/publish/images/kakao_template_img.png" alt="">
+                                        </div>
+                                        <div class="text_box">
+                                            <p>[포인트 적립]
+                                                쿼드커피에서 컨택포인트로 적립하셨네요!
+                                                320p 적립 완료되어 고객님의 현재 포인트는 7,000P입니다.
+                                                
+                                                [포인트 정책]
+                                                4,000P 이상 모으면 현금처럼 사용하실 수 있습니다.
+                                            </p>
+                                        </div>
+                                    </div>
+                                </div>
+                                <div class="btn_wrap">
+                                    <button type="button" class="btnType btnType3 btn_template_use">템플릿 사용하기</button>
+                                </div>
+                            </li>
+                            <li>
+                                <div class="kakao_template_wrap">
+                                    <div class="template_cont">
+                                        <div class="title">
+                                            <div class="check">
+                                                <input type="checkbox">
+                                            </div>
+                                            <p title="포인트 적립안내">포인트 적립안내</p>
+                                        </div>
+                                        <div class="img_box">
+                                            <img src="/publish/images/kakao_template_img.png" alt="">
+                                        </div>
+                                        <div class="text_box">
+                                            <p>[포인트 적립]
+                                                쿼드커피에서 컨택포인트로 적립하셨네요!
+                                                320p 적립 완료되어 고객님의 현재 포인트는 7,000P입니다.
+                                                
+                                                [포인트 정책]
+                                                4,000P 이상 모으면 현금처럼 사용하실 수 있습니다.
+                                            </p>
+                                        </div>
+                                    </div>
+                                </div>
+                                <div class="btn_wrap">
+                                    <button type="button" class="btnType btnType3 btn_template_use">템플릿 사용하기</button>
+                                </div>
+                            </li>
+                        </ul>
+                    </div>
+                    
+                    <!-- pagination -->
+                    <ul class="pagination">
+                        <li class="page_first"><button><img src="/publish/images/content/page_first.png"alt=""></button></li>
+                        <li class="page_prev"><button><img src="/publish/images/content/page_prev.png"alt=""></button></li>
+                        <li class="on"><button>1</button></li>
+                        <li><button>2</button></li>
+                        <li><button>3</button></li>
+                        <li><button>4</button></li>
+                        <li><button>5</button></li>
+                        <li><button>6</button></li>
+                        <li><button>7</button></li>
+                        <li><button>8</button></li>
+                        <li><button>9</button></li>
+                        <li><button>10</button></li>
+                        <li class="page_next"><button><img src="/publish/images/content/page_next.png"alt=""></button></li>
+                        <li class="page_last"><button><img src="/publish/images/content/page_last.png"alt=""></button></li>
+                    </ul><!-- pagination -->
+                    </div>
+                    
+                </div>
+            </div>
+        </div>
+        <!--// send top -->
+    </div>
+    </div>
+    <!--// content 영역 -->
+    <!-- footer -->
+	<div data-include-path="/publish/layout/_footer.html"></div>
+	<!--// footer 영역 -->
+</body>
+
+</html>(No newline at end of file)
src/main/webapp/publish/css/content.css
--- src/main/webapp/publish/css/content.css
+++ src/main/webapp/publish/css/content.css
@@ -2062,11 +2062,12 @@
 .kakao_intro_cont .friendtalk .kakao_intro .con .intro ul li{margin:0 0 19px 0;}
 .kakao_intro_cont .friendtalk .kakao_intro .con .intro ul li p:nth-child(2){display:flex;line-height:1;height:auto;justify-content:center;align-items:center;padding:22px 0 18px 0;font-family:'GmarketSansMedium';}
 .kakao_intro_cont .friendtalk .kakao_intro .con .intro ul li p:nth-child(2) span{display:inline-block;font-family:'GmarketSansBold';margin:0 4px;}
+.kakao_intro_cont .friendtalk .kakao_intro .con .intro ul li p:nth-child(2) strong{font-size:14px;}
 .kakao_intro_cont .friendtalk .kakao_intro .con .intro ul li:nth-child(4) p:nth-child(2){height:auto;line-height:1;padding:24px 0 18px 0;}
 .kakao_intro_cont .friendtalk .kakao_intro .con .intro .phone{width:auto;height:100%;margin:-20px 0 0 -15px;}
 
 .kakao_intro_cont .friendtalk .kakao_intro .fight .wrap{max-width:1024px;gap:50px;justify-content:center;}
-.kakao_intro_cont .friendtalk .kakao_intro .con .fight .fight-title{width:250px;}
+.kakao_intro_cont .friendtalk .kakao_intro .con .fight .fight-title{width:330px;}
 .kakao_intro_cont .friendtalk .kakao_intro .vs{display:flex;width:calc((100% - 200px) / 2);flex-direction:column;align-items:center;gap:20px;}
 .kakao_intro_cont .friendtalk .kakao_intro .vs.vs_title{width:100px;}
 .kakao_intro_cont .friendtalk .kakao_intro .vs .title{height:34px;padding:5px 30px 3px;border-radius:35px;background:#E4E6EA;font-family:'GmarketSansBold';color:#666;font-size:20px;line-height:35px;}
@@ -2303,7 +2304,7 @@
 .send_top .resultcont_right .phone_kakako .phoneIn .template_info_wrap .btn_template_choice{width: 120px; height: 36px; font-size: 16px; color: #fae100; background-color: #302218; border-radius: 5px;}
 .send_top .resultcont_right .phone_kakako .addText{color: #002c9a;text-align: center; font-size: 14px; padding-top: 2px; margin:10px 0 10px 0;}
 
-.send_top .resultcont_right .phone_kakako.friendtalk .phoneIn .text_preview .allimtalk_content{border-radius:5px;}
+.send_top .resultcont_right .phone_kakako.friendtalk .phoneIn .text_preview .allimtalk_content{border-radius:5px;overflow:hidden;}
 .send_top .resultcont_right .phone_kakako.friendtalk .friend_talk_title{margin:0 0 10px 0;font-size:15px;color:#777;}
 .send_top .resultcont_right .phone_kakako.friendtalk .kakao_block_text{width:calc(100% - 20px);text-align:right;font-size:13px;color:#555;font-weight:300;margin:10px 0 0 0;}
 
src/main/webapp/publish/css/popupLayer.css
--- src/main/webapp/publish/css/popupLayer.css
+++ src/main/webapp/publish/css/popupLayer.css
@@ -1,7 +1,7 @@
 /* 공통영역 */
 .tooltip-wrap {position: relative; z-index: 100;}
 .popup-com {display: none;position: fixed; border-radius: 10px;background-color: #fff;box-shadow: 5px 5px 15px rgba(0,0,0,0.5); overflow: hidden;opacity:0;transition:opacity 0.3s;}
-.popup-com .popup_heading {background-color: #fbc72b; position: relative; padding: 15px 20px; }
+.popup-com .popup_heading {background-color: #fbc72b; position: relative; padding: 15px 20px; border-radius:}
 .popup-com .popup_heading p {font-size: 22px; font-weight: 600;}
 .popup-com .popup_heading button {position: absolute; top: 50%; transform: translateY(-50%); right: 20px;}
 .popup-com .titBox>button {height: 36px;}
@@ -13,6 +13,8 @@
 
 .mask {left:-9999%;top:-9999%;}
 .mask.on {overflow:hidden;position:fixed;left:0;top:0;width:100%;min-width:1920px;height:100%;background: rgba(0,0,0,0.5);z-index:99;}
+
+.alert_layer_popup .layer_in{padding:40px 30px;text-align:center;font-size:18px;font-weight:400;line-height:1.4;}
 
 /* 공통 */
 .popup_search_wrap.type2{margin: 0 0 30px 0; padding: 15px 20px; border-radius: 5px;}
@@ -172,9 +174,8 @@
 .custom_layer .body_cont table tr.custom_put1 td .custom_put1_list {padding-bottom: 8px; border-bottom: 1px solid #d5d5d5; margin-bottom: 6px;}
 .custom_layer .body_cont table tr.custom_put1 td .custom_put1_list .price {position: absolute; right: 0px; color: #555; font-weight: 300;}
 .custom_layer .body_cont table tr.custom_put1 td .custom_put1_list .price span {font-weight: 500;}
-.custom_layer .body_cont table tr.custom_put1 td .custom_put1_txt {margin-top: 14px;}
-.custom_layer .body_cont table tr.custom_put1 td .custom_put1_txt p {font-size: 14px; color: #333; font-wieght: 300;}
-.custom_layer .body_cont table tr.custom_put1 td .custom_put1_txt p:first-child {margin-bottom: 10px;}
+.custom_layer .body_cont table tr.custom_put1 td .custom_put1_txt {margin-top:8px;}
+.custom_layer .body_cont table tr.custom_put1 td .custom_put1_txt p {font-size: 14px; color: #333; font-wieght: 300; line-height:1.2;}
 /* 제공방법 */
 .custom_layer .body_cont table tr.custom_put2 th {vertical-align: middle;}
 .custom_layer .body_cont table tr.custom_put2 td {vertical-align:middle; height: 50px; display: flex; align-items: center;}
@@ -1098,7 +1099,8 @@
 .kakao_rev_popup .kakao_wrap .friendtalk .kakao_image{border-radius:5px 5px 0 0;overflow:hidden;}
 .kakao_rev_popup .kakao_wrap .friendtalk .rev_pop_txt{padding:20px;}
 .kakao_rev_popup .kakao_wrap .friendtalk .rev_pop_txt p {margin:0 0 10px 0;font-size: 15px;color:#777;}
-.kakao_rev_popup .kakao_wrap .friendtalk .rev_pop_txt .template_text{padding:10px 10px 0 10px;}
+.kakao_rev_popup .kakao_wrap .friendtalk .rev_pop_txt .template_text,.kakao_rev_popup .kakao_wrap .friendtalk .rev_pop_txt .allimtalk_content p{padding:10px 10px 0 10px;}
+.kakao_rev_popup .kakao_wrap .friendtalk .rev_pop_txt .allimtalk_content .emphasis_title_text{padding:10px 10px 15px 10px;}
 .kakao_rev_popup .kakao_wrap .friendtalk .rev_pop_txt p.kakao_block_text{width:calc(100% - 60px);text-align:right;font-size:13px;color:#555;font-weight:300;margin:10px 0 0 0;}
 
 /* 카카오테스트발송 팝업 */
@@ -1279,6 +1281,11 @@
 .info_guide_popup .layer_in .info_guide_sub{margin: -20px 0 0 0; font-size: 14px; color: #666; font-weight: 300; line-height: 1.5;}
 .info_guide_popup .layer_in .info_guide_sub span{color: #222; font-weight: 400;}
 
+/* 친구톡 서비스 중단 */
+.service_stop_popup{left:50%;top:50%;transform:translate(-50%,-50%);}
+.service_stop_popup .layer_in b{font-weight:600;}
+.service_stop_popup .layer_in .popup_btn{margin:20px 0 0 0;}
+
 /* ie */
 @media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {
      /* 특수문자 */
 
src/main/webapp/publish/css/style.css (added)
+++ src/main/webapp/publish/css/style.css
@@ -0,0 +1,344 @@
+:root{
+  --primary-color: #002c9a;
+  --primary-color-hover: #002788;
+  --primary-light-color: #E8F0FF;
+  --primary-light-color-hover: #97b1e1;
+
+  --secondary-color: #eea301;
+  --secondary-color-hover: #FFAE00;
+  --secondary-light-color: #FBC72B;
+  --secondary-light-color-hover: #F6BB08;
+
+
+  --red-color: #E40000;
+  --red-color-hover: #D70202;
+  --red-light-color: #ffe5e5;
+  
+
+  --green-color: #19B32B;
+  --green-color-hover: #0E9A1F;
+
+  --gray-color: #6A6C72;
+  --gray-color-hover: #56585e;
+  --lightgray-color: #999999;
+  --lightgray-color-hover: #a3a3a3;
+
+  --gray-border: #D5D5D5;
+  --darkgray-border: #B9B9B9;
+  --primary-light-border: #B1C6EE;
+
+  --lightgray-bg: #f2f3f4;
+}
+
+/* 폰트 */
+.fwLg{font-weight: 300 !important}
+.fwRg{font-weight: 400 !important}
+.fwMd{font-weight: 500 !important}
+.fwBold{font-weight: 700 !important}
+
+.sub_font{font-family:'GmarketSansBold';}
+
+/* 버튼 */
+.btn{border-radius: 5px;}
+.btn:hover{box-shadow: 0px 0px 5px 3px rgba(0,0,0,0.12);transition: all 0.3s ease;}
+
+.btn.xssmall{height: 28px;}
+.btn.ssmall{height: 30px;}
+.btn.small{height: 32px;}
+.btn.medium{height: 34px;}
+.btn.large{height: 36px;}
+.btn.xlarge{height: 38px;}
+
+.btn.fill.primary{background-color: var(--primary-color);color: #fff;}
+.btn.fill.primary:hover{background-color: var(--primary-color-hover);color: #fff;}
+.btn.fill.primary_light{background-color: var(--primary-light-color);border: 1px solid var(--primary-light-border);color:#222;}
+.btn.fill.primary_light:hover{background-color: var(--primary-light-color-hover);}
+.btn.fill.secondary{background-color: var(--secondary-color);color: #222;}
+.btn.fill.secondary:hover{background-color: var(--secondary-color-hover);color: #222;}
+.btn.fill.red{background-color: var(--red-color);color: #fff;}
+.btn.fill.red:hover{background-color: var(--red-color-hover);}
+.btn.fill.green{background-color: var(--green-color);color: #fff;}
+.btn.fill.green:hover{background-color: var(--green-color-hover);}
+
+.btn.line.primary{border: 1px solid var(--primary-color);color: var(--primary-color);}
+.btn.line.primary:hover{border: var(--primary-color-hover);color: var(--primary-color-hover);}
+.btn.line.secondary{border: 1px solid var(--secondary-color);color: #222;}
+.btn.line.secondary:hover{border: 1px solid var(--secondary-color-hover);}
+.btn.line.red{border: 1px solid var(--red-color);color: var(--red-color);}
+.btn.line.red:hover{border: var(--red-color-hover);color: var(--red-color-hover);}
+.btn.line.green{border: 1px solid var(--green-color);color: var(--green-color);}
+.btn.line.green:hover{background-color: var(--green-color-hover);}
+
+/* 버튼 및 인풋 타입 */
+select {border: 1px solid #e5e5e5;vertical-align: middle;font-weight: 300;font-size: 16px;font-family: 'Noto Sans KR', sans-serif;}
+select.selType1 {height: 34px;padding:0 25px 0 10px;border: 1px solid #d5d5d5;border-radius: 3px;background-image: url(/publish/images/select_search2.png);background-repeat: no-repeat;background-position: right 5px top 50%;color: #777;}
+/* .area_tabs */
+select.selType2 {height: 36px; align-self: center; width: 125px; color: #666; background-image: url(/publish/images/select_search.png); background-repeat: no-repeat; background-position: 92% center; padding-left: 12px; box-sizing: border-box; border-radius: 3px; border: 1px solid #ccc;margin-left: 2px;  font-size: 16px;}
+.list_selType1:focus {outline: none;}
+select.list_selType1 {background-color: transparent; border: none; width: 100%; padding: 0 15px; background-image: url(/publish/images/mem/list_select.png);background-repeat: no-repeat;background-position: right 0 top 50%; font-size: 18px; color: #222; font-family: 'Noto Sans KR', sans-serif; cursor: pointer;}
+
+input {border: 0;vertical-align: middle;box-sizing: border-box; font-family: 'Noto Sans KR', sans-serif; }
+input:focus {outline: none;}
+input::placeholder {font-family: 'Noto Sans KR', sans-serif; font-weight: 300;color: #a6a6a6 !important;}
+input:-ms-input-placeholder {font-family: 'Noto Sans KR', sans-serif; font-weight: 300;color: #a6a6a6 !important;}
+input[type="text"] {padding: 0 10px; border-radius: 3px;font-size: 16px;}
+input[type="text"].readonly::placeholder {color: #222 !important;}
+input[type="text"].readonly:-ms-input-placeholder {color: #222 !important;}
+input[type="text"].inputLight::placeholder {color: #a6a6a6 !important;}
+input[type="text"].inputLight:-ms-input-placeholder {color: #a6a6a6 !important;}
+input[type="password"] {padding: 0 10px; border-radius: 3px;font-size: 16px;}
+input[type="password"].inputLight::placeholder {color: #a6a6a6 !important;}
+input[type="password"].inputLight:-ms-input-placeholder {color: #a6a6a6 !important;}
+
+input.input_text{border:1px solid #d5d5d5;}
+ /* 비밀번호 css 변경 */
+
+input[type="checkbox"] {width: 16px; height: 16px; border: 1px solid #d6d8da;}
+input[type="radio"] {margin-top: 2px; margin-right: 3px;}
+input[type="radio"]+label {margin-right: 18px;font-size:16px;vertical-align: middle;}
+input[type="radio"].radio_big {margin:0;width:16px;height:16px;}
+/* input[type="radio"]+label, input[type="checkbox"]+label {vertical-align: middle;}  */
+textarea {width: 100%;font-size: 16px;padding: 15px; box-sizing: border-box;color: #666;font-weight: 300;font-family: 'Noto Sans KR', sans-serif;}
+textarea::-webkit-scrollbar {width:7px;}
+textarea::-webkit-scrollbar-thumb {background: #c3c6c7; border-radius: 3px;}
+textarea::-webkit-scrollbar-thumb:active {background:#808080;}
+textarea::placeholder {font-family: 'Noto Sans KR', sans-serif; font-weight: 300;color: #a6a6a6 !important;}
+textarea:-ms-input-placeholder {font-family: 'Noto Sans KR', sans-serif; font-weight: 300;color: #a6a6a6 !important;}
+
+.sort_wrap {display:inline-block;} 
+.sort_wrap button:nth-child(1) img {margin-left: 3px;}
+.sort_wrap button:nth-child(2) img {margin-left: -5px;}
+.sort_wrap button img {margin-bottom: 5px;}
+.sortBtn {background-image: url(/publish/images/sortUp.png);border: none;background-color: transparent;background-repeat: no-repeat;background-position: center center;height: 14px;cursor: pointer; margin: -3px 0 0 0;}
+.sortBtnDesc {background-image: url(/publish/images/sortDown.png);border: none;background-color: transparent;background-repeat: no-repeat;background-position: center center;height: 14px;cursor: pointer;margin: -2px 0 0 0;}
+.sortBtnAsc {background-image: url(/publish/images/sortUp.png);border: none;background-color: transparent;background-repeat: no-repeat;background-position: center center;height: 14px;cursor: pointer;}
+
+.numOfCase {position: absolute;right: 0;top: 57px;}
+.numOfCase p {display: inline-block;font-size: 13px;}
+.numOfCase p:first-child span {color: #e40000;font-weight: 500;}
+.numOfCase p:last-child span {color: var(--primary-color);font-weight: 500;}
+
+/* table */
+
+.tType1 {width: 100%;text-align: left;table-layout: fixed;}
+.tType1 tbody tr {border-bottom: 1px solid #e5e5e5;}
+.tType1 tbody tr:first-child{border-top: 2px solid #000;}
+.tType1 tbody tr th {min-width: 75px; height: 55px; vertical-align: middle;font-size: 17px; text-align: left;}
+.tType1 tbody tr th .essential {display:inline-block;margin:4px 2px 0 0;vertical-align:top;color:#e40000;}
+.tType1 tbody tr th.vTop {vertical-align: top; padding-top: 20px; line-height: 1.2;}
+.tType1 tbody tr td {vertical-align: middle;font-weight: 300;line-height: 1.3; padding: 10px 0;}
+.tType1 tbody tr td p {line-height: 1.4;}
+.tType1 tbody tr td.send_cf {font-size: 18px;} 
+.tType1 tbody tr td.putText {padding: 10px 0;}
+.tType1 tbody tr td.putText>div {display: flex; width: 100%;}
+.tType1 tbody tr td.putText>p:last-child {color: #555; font-size: 14px; padding-top: 10px;}
+.tType1 tbody tr td.putText .put_left {float: left;width: calc(100% - 26%); min-width: 420px; padding: 0 10px; border:1px solid #f2f2f2;box-sizing: border-box; border-radius: 5px; background-color: #f2f2f2; position: relative; /*max-height: 300px;*/}
+.tType1 tbody tr td.putText .put_left .text_length {position: relative;min-height: 28px;margin:0 0 15px;border-radius: 0 0 5px 5px;}
+.tType1 tbody tr td.putText .put_left .text_length>div:first-child {font-size: 15px; padding-left: 10px;}
+.tType1 tbody tr td.putText .put_left .text_length>div:last-child {position: absolute;bottom: 0;right: 10px;}
+.tType1 tbody tr td.putText .put_left .text_length p {display: inline-block;padding-right: 10px;}
+.tType1 tbody tr td.putText .put_right { width: 26%; max-width: 200px; position: relative;}
+.tType1 tbody tr td.putText .put_right>button {width: calc(100% - 10px); margin-left: 10px;margin-bottom: 5px;}
+.tType1 tbody tr td.putText .put_right .btn_popup_wrap button:not(.btn_close) {width: calc(100% - 10px); margin-left: 10px;margin-bottom: 5px;}
+.tType1 tbody tr td.putText button .qmMark {background-image: url(/publish/images/content/qmIcon_s.png); width: 19px; height: 19px; margin-left: 5px; margin-top: -2px;}
+.tType1 tbody tr td.putText .put_right .send_btnWrap {position: absolute;bottom: 0;right:0;width: calc(100% - 10px);}
+.tType1 tbody tr td.putText .put_right .send_btnWrap button {width: 48.5%;}
+.tType1 tbody tr td.putText textarea {height: 160px; border: none;margin: 0;padding:0 15px;border-radius: 5px 5px 0 0;outline: 0;background-color: transparent; font-size: 15px;}
+.tType1 tbody tr td.putText .put_left.short textarea {height: 190px;margin:10px 0;padding:0 5px;}
+.tType1 tbody tr td.putText .put_left.short textarea::placeholder {color: #b5b5b5;}
+.tType1 tbody tr td.putText .put_left.short.on {border: 1px solid var(--primary-color);border-radius: 5px;background-color: #eef2f9 !important;}
+.tType1 tbody tr td.putText .put_left.long textarea {height: 380px;}
+.tType1 tbody tr td.putText .put_left.long.on {border: 1px solid #12bec9;border-radius: 5px;background-color: #eef5f9 !important;}
+.tType1 tbody tr td.putText .put_left.photo.on {border: 1px solid #e26ba9;border-radius: 5px;background-color: #f8f1f5 !important;}
+.tType1 tbody tr.msg_title {display:none;}
+.tType1 tbody tr.msg_title.active {display:table-row;}
+.tType1 tbody tr.msg_title td .title_wrap .textbox {display:none;margin:10px 0 0;}
+.tType1 tbody tr.msg_title td .title_wrap .textbox.active {display:block;}
+
+.tType1_title {font-size: 20px; font-weight: 600; position: relative; height: 40px;}
+.tType1_title button {position: absolute;top: 22%; right: 0; transform: translateY(-50%); background-color: var(--primary-color); height: 40px; padding: 0 15px; color: #fff;}
+.tType1_title>span {font-size: 16px; font-weight: 300; color: #666;}
+.tType1 tbody tr td.send_list {position: relative;display: flex; justify-content: space-between;}
+.tType1 tbody tr td.send_list .list_left, .tType1 tbody tr td.send_list .list_right {width: calc(100%/2 - 25px);min-width: 290px;}
+.tType1 tbody tr td.send_list .list_left {left: 0;position: relative;}
+.tType1 tbody tr td.send_list .list_left .add_num {height: 90px;}
+.tType1 tbody tr td.send_list .list_left .add_num input[type="text"] {width: calc(100% - 97px);min-width: 200px;}
+.tType1 tbody tr td.send_list .list_left .add_num input[type="text"]::placeholder {color: #a6a6a6; font-weight: 300;}
+.tType1 tbody tr td.send_list .list_left .add_num>span {color: #e40000;font-size: 13px;font-weight: 400;line-height: 39px;}
+.tType1 tbody tr td .text_req {display: inline-block; color: #999; font-size: 17px; font-weight: 300; vertical-align: middle;}
+
+
+.tType1 tbody tr td.send_list .list_right {right: 0;}
+.tType1 tbody tr td.send_list .list_right .list_btnWrap {display: flex;flex-flow: wrap;justify-content: space-between;}
+.tType1 tbody tr td.send_list .list_right .list_btnWrap button {height: 37px;width: calc(100%/3 - 3px);margin-bottom: 5px;}
+
+.tType1 tbody tr td.send_list .add_btn {position: absolute; right: 0; top: 0;}
+.tType1 tbody tr td.send_list .add_btn button {min-width: 95px; height: 32px; font-size: 14px;}
+.tType1 tbody tr td.send_list .add_remove {text-align: center;margin: 40px 4px 0 4px;align-self: center;}
+.tType1 tbody tr td.send_list .add_remove button {display: block;max-width: 44px;padding: 4px 6px; border: 1px solid #b1b1b1;border-radius: 5px; margin: 0 auto;margin-bottom: 5px;font-size: 12px;}
+.tType1 tbody tr td.send_list .add_remove button:hover {box-shadow: 0px 0px 5px 3px rgba(0,0,0,0.12);}
+.tType1 tbody tr td.send_list .add_remove button.add i {background-image:url(/publish/images/content/add_btn.png);width: 11px;height: 10px;display: block;margin: 0 auto;}
+.tType1 tbody tr td.send_list .add_remove button.remove i {background-image:url(/publish/images/content/remove_btn.png);width: 11px;height: 10px;display: block;margin: 0 auto;}
+
+.tType1 tbody tr th.billingAmount {position: relative;line-height: 1;vertical-align: middle;}
+.tType1 tbody tr th.billingAmount>div {background-color: #f2f2f2;border-radius: 5px;padding: 23px 30px;margin: 20px 0; position: relative;}
+.tType1 tbody tr th.billingAmount>div .final_pay {position: relative; margin-bottom: 20px; display: flex; justify-content: space-between; align-items: center;}
+.tType1 tbody tr th.billingAmount>div p:first-child {font-size: 20px;font-weight: 500;}
+.tType1 tbody tr th.billingAmount>div p:last-child {font-size: 20px;}
+.tType1 tbody tr th.billingAmount>div p span#totalPriceTxt {font-size: 24px;color: #e40000;font-weight: 500;}
+.tType1 tbody tr th.billingAmount>div p span:last-child {font-size: 16px;color: #888;font-weight: 300;}
+.tType1 tbody tr th.billingAmount .pay_info_list p {float:left;line-height:35px;}
+.tType1 tbody tr th.billingAmount .pay_info_list .info {float:left;margin:0 0 0 15px;padding:8px 15px 10px;font-size:16px;font-weight:300;color:#555;background:#e5e5e5;border-radius:5px;box-sizing:border-box;}
+.tType1 tbody tr th.billingAmount .pay_info_list .info strong {font-size:18px;font-weight:700;color:var(--primary-color);}
+.tType1 tbody tr th.billingAmount .pay_info_list .info span {margin:0 8px 0 7px;} 
+.tType1 tbody tr th.billingAmount button.cal_btn {position: absolute;right: 0; top: 50%;transform: translateY(-50%);background-color: var(--secondary-color);width: 88px;height: 32px;border-radius: 5px;}
+.tType1 tbody tr th.billingAmount button.cal_btn:hover {box-shadow: 0px 0px 5px 3px rgba(0,0,0,0.12);}
+.tType1 tbody tr th.billingAmount button.cal_btn i {background-image: url(/publish/images/content/calIcon.png);width: 12px;height: 16px;margin: 0 3px 2px 0;}
+.tType1 tbody tr th.billingAmount .pay_type {background-color: #fff; border-radius: 5px 5px 0 0; height: 60px; padding: 12px 13px; box-sizing: border-box;}
+.tType1 tbody tr th.billingAmount .pay_type button.btn_event_cash{width: 100px;}
+.tType1 tbody tr th.billingAmount .pay_type:last-child {margin-top: 10px;}
+.tType1 tbody tr th.billingAmount .pay_type>div:first-child {float: left;margin:0 0 0 5px;}
+.tType1 tbody tr th.billingAmount .pay_type>div .won {display:inline-block;margin:9px 11px 0 -34px;font-size:16px;vertical-align:top;color:#9a9a9a;}
+.tType1 tbody tr th.billingAmount .pay_type>div:last-child {float: right;}
+.tType1 tbody tr th.billingAmount .pay_type>div:only-child{float: left;}
+.tType1 tbody tr th.billingAmount .pay_type input[type="radio"]+label {font-size: 16px;}
+.tType1 tbody tr th.billingAmount .pay_type input[type="radio"]+label span {font-size: 17px; font-weight: 700;}
+.tType1 tbody tr th.billingAmount .pay_type input[type="text"] {width: 210px; height: 36px; padding:0 37px 2px 16px; border-radius: 5px;text-align:right;}
+.tType1 tbody tr th.billingAmount .pay_type input[type="text"]::placeholder {color: #000; font-size: 16px; text-align: right; font-weight: 500;}
+.tType1 tbody tr th.billingAmount .pay_type button {width: 78px; margin-left: 5px;}
+
+.tType1 tbody tr td.check_num>div {display: inline-block;}
+.tType1 tbody tr td.check_num>div button {height: 40px; padding: 0 5px;}
+.tType1 tbody input[type="text"] {height: 40px; padding: 0 15px; background-color: #f2f2f2;border-radius: 5px;line-height:38px;}
+.tType1 tbody input[type="password"] {height: 50px; padding: 0 15px; background-color: #f2f2f2;border-radius: 5px; font-size: 16px;}
+.tType1 tbody select.sel_number {width: 340px; height: 40px; padding: 0 20px; background-color: #f2f2f2;border-radius: 5px; border: 0;color: var(--primary-color);font-weight: 400;font-size: 16px;background-image: url(/publish/images/select_search.png); background-repeat: no-repeat; background-position: 94% center;}
+.tType1 tbody input[type="text"]::placeholder {color: #a6a6a6;}
+.tType1 tbody input:disabled {background-color: #dedede;}
+
+
+.tType3 {width: 100%; border-radius: 3px; border: 1px solid #ccc; box-sizing: border-box;}
+.tType3.payDetail {margin-bottom: 50px;}
+.tType3.usageDetail {margin-bottom: 50px;}
+.tType3.payDetail {margin: -15px 0 10px 0;}
+.payDetail .tType3_hd>div:nth-child(1), .payDetail .tType3_bd>div:nth-child(1) {width: 40px;}
+.payDetail .tType3_hd>div:nth-child(2), .payDetail .tType3_bd>div:nth-child(2) {width: 20%;}
+.payDetail .tType3_hd>div:nth-child(3), .payDetail .tType3_bd>div:nth-child(3) {width: 17%;}
+.payDetail .tType3_hd>div:nth-child(4), .payDetail .tType3_bd>div:nth-child(4) {width: 15%;}
+.payDetail .tType3_hd>div:nth-child(5), .payDetail .tType3_bd>div:nth-child(5) {width: 17%;}
+.payDetail .tType3_hd>div:nth-child(6), .payDetail .tType3_bd>div:nth-child(6) {width: 15%;}
+.payDetail .tType3_hd>div:nth-child(7), .payDetail .tType3_bd>div:nth-child(7) {width: 17%;}
+
+.table_cont {display: none;}
+.table_cont.current {display: block;}
+
+.tType3 .tType3_hd { display: flex; height: 36px; line-height: 34px; font-size: 15px; box-sizing: border-box; position: relative; z-index: 0; background-color: #ededed; text-align: center; border-radius: 3px 3px 0 0;}
+.tType3 .tType3_hd::after {content: ""; background-color: #e9e9e9; width: 100%; height: 18px; position: absolute; bottom: 0; left: 0;z-index: -1;}
+.tType3 .tType3_hd>div {border-left: 1px solid #ccc; border-bottom: 1px solid #ccc; box-sizing: border-box;}
+.tType3 .tType3_hd>div:first-child {border-left: 0; } 
+.tType3 .font_ellipsis {position: relative;}
+
+.tType3 .tType3_bd { display: flex; height: 40px; line-height: 40px; font-size: 15px; box-sizing: border-box; text-align: center; color: #555; font-weight: 300;}
+.tType3 .tType3_bd span {font-weight: 400;}
+.tType3 .tType3_bd>div {height: 40px; padding: 0 10px; line-height: 40px; border-bottom: 1px solid #e5e5e5; border-left: 1px solid #e5e5e5; text-align: center; color: #555; font-weight: 300; box-sizing: border-box;}
+.tType3 .tType3_bd>div:first-child {border-left: 0;}
+.tType3 .tType3_bd:last-child>div {border-bottom: 0;}
+.tType3 .tType3_bd .table_certify {font-weight: 400;}
+.tType3 .tType3_bd .input_wrap2 input[type="text"] {text-align: center; background-color: #f2f2f2; width: calc(100% - 20px); height: 32px; border-radius: 5px; color: #555; vertical-align: baseline;}
+.tType3 .tType3_bd .input_wrap2 input[type="text"]::placeholder {color: #555;}
+.tType3 .tType3_bd .input_wrap2 input[type="text"]:-ms-input-placeholder {color: #555;}
+.tType3 .tType3_bd .btnType14 {height: 28px; padding: 0 11.5px; vertical-align: baseline; line-height: 28px;}
+.tType3 .tType3_bd input[type="radio"] {margin-top: 0; margin-right: 0; vertical-align: revert;}
+
+.tb_wrap{position:relative;width: 100%; min-height: 430px; border: 1px solid #ccc; border-radius: 5px; margin-bottom: 10px; box-sizing: border-box;border-bottom:0 none;}
+.tb_wrap:after {content:'';position:absolute;left:2px;bottom:0;width:calc(100% - 4px);height:1px;background:#ccc;}
+.tType4{table-layout: fixed; width: 100%;}
+.tType4 thead{background-color: #ededed; position: relative; z-index: 0;}
+.tType4 thead tr:only-child th{height: 36px;}
+.tType4 thead th{border-right: 1px solid #ccc; border-bottom: 1px solid #ccc; font-size: 15px; font-weight: 400; position: relative; z-index: 1; line-height: 25px; vertical-align: middle;}
+.tType4 thead th::after{position: absolute; content: " "; width: 100%; height: 18px; background-color: #e5e5e5; bottom: 0; left: 0; z-index: -1;}
+.tType4 thead th:last-child{border-right: 0;}
+.tType4 .sort_wrap{display: inline-block;}
+.tType4 tbody td{text-align: center; font-size: 15px; color: #666; font-weight: 400; border-right: 1px solid #d5d5d5; border-bottom: 1px solid #d5d5d5; height: 38px; vertical-align: middle; padding: 0 10px; box-sizing: border-box;}
+.tType4 tbody td.tb_tit{text-align: left; position: relative;}
+.tType4 tbody td.input_wrap2 input[type="text"] {text-align: center;background-color: #f2f2f2;width: calc(100% - 20px);height: 32px;border-radius: 5px;border: 1px solid #f2f2f2;margin-right: 0;color: #555;}
+.tType4 tbody tr:only-child:last-child td{border-bottom: 1px solid #ccc;}
+.tType4 tbody td:last-child{border-right: 0;}
+.tType4 tbody td>p{width: 100%; line-height: 38px; white-space: nowrap; text-overflow: ellipsis; letter-spacing: -0.5px; overflow: hidden;margin: 0 auto;}
+.tType4 tbody td span {font-weight: 400;}
+.tType4 td input[type="text"]{height: 28px; display: inline-block; border: 1px solid #e5e5e5; margin-right: 5px;}
+.tType4 tbody .btnType14 {height: 28px;}
+.tType4 .memo_text {width: calc(100% - 35px); margin-right: 5px; display: inline-block; text-align: left; vertical-align: inherit;}
+.tType4 tbody td span.textReject {line-height:28px;}
+.tType4 tbody td .btnTypeReject {margin:0 0 0 3px;line-height:26px;letter-spacing:0;text-align:center;vertical-align:top;}
+.tType4 tbody td.result_cont a {text-align: left!important; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;}
+.tType4 tbody td.result_cont .result_tit { }
+.tType4 tbody td .cancel_date {font-size:14px; color:#666; display: block;}
+/* // table */
+
+/* tab */
+.top_content {display: none;}
+.top_content.current {display: block;}
+.custom_content {display: none;}
+.custom_content.current {display: block;}
+.bottom_content {display: none;}
+.bottom_content.current {display: block;}
+.popup_cont {display: none;}
+.popup_cont.current {display: block;}
+.history_cont {display: none;}
+.history_cont.current {display: block;}
+
+
+.tabType1 {background-color: #fff;width: 100%;border-radius: 10px; display: flex;text-align: center;margin-bottom: 20px;border:2px solid #46484a;}
+.tabType1 li {flex-basis: calc(100%/2); position: relative;}
+.tabType1 li button {width: 100%;padding: 13px 0;font-size: 16px;position:relative;z-index:1;}
+.tabType1 li.active {background-color: #46484a;}
+.tabType1 li.active:after {content:'';position:absolute;left:-1px;top:-1px;width:100%;height:100%;border:1px solid #46484a;}
+.tabType1 li.active button {color: #fff;border:1px solid #46484a;background-color: #46484a;}
+.tabType1 li.active button:before {content:'';position:absolute;left:-1px;top:-1px;width:100%;height:100%;border:2px solid #46484a;box-sizing:border-box;}
+.tabType1 li.active button:after {content:'';position:absolute;left:-5px;top:-5px;width:100%;height:100%;border:5px solid #46484a;border-radius:10px;}
+
+.tabType2 {width: calc(100% - 600px); border-radius:10px 10px 0 0; display: flex;text-align: center;margin-bottom: 20px;position: relative;background-color: #fff;}
+.tabType2::after {position: absolute;height: 2px;background-color: #000;width: calc(100% + 600px);content: "";bottom: 0;left: 0;}
+.tabType2 li {flex-basis: calc(100% /4);min-width: 200px;}
+.tabType2 li button {width: 100%;padding: 13px 0;font-size: 20px;border-left: 1px solid #e5e5e5;background-color: #fff;}
+.tabType2 li:nth-child(3) button {border-left: 0;}
+.tabType2 li:first-child button {border-left: 0;border-radius: 10px 0 0 0;}
+.tabType2 li:last-child button {border-radius: 0 10px 0 0;}
+.tabType2 li.active button {background-color: #46484a;border-radius:10px 10px 0 0;color: #fff;border-left: 1px solid transparent;}
+
+.tabType4 {background-color: #fff;width: 100%;border-radius: 10px; display: flex;text-align: center;margin-bottom: 20px;border:2px solid #46484a;}
+.tabType4 li {flex-basis: calc(100%/3); position: relative;}
+.tabType4 li::after {content: ""; position: absolute; right: -1px; top: 50%; transform: translateY(-50%); width: 1px; height: 34px; background-color: #ccc;}
+.tabType4 li:last-child::after {content: none;}
+.tabType4 li.active::after {content: none;}
+.tabType4 li button {position:relative;width: 100%; height: 50px; padding: 12px 0;font-size: 18px; letter-spacing: -0.5px;}
+.tabType4 li.active button {color:#fff;border:1px solid #46484a;background-color:#46484a;}
+.tabType4 li.active button:before {content:'';position:absolute;left:-1px;top:-1px;width:100%;height:100%;border:2px solid #46484a;box-sizing:border-box;}
+.tabType4 li.active button:after {content:'';position:absolute;left:-5px;top:-5px;width:100%;height:100%;border:5px solid #46484a;border-radius:10px;}
+.tabType4.tabTwo li {flex-basis: calc(100%/2);}
+
+.tabType5 {background-color: #fff;width: 100%; border: 1px solid #dfdfdf; border-bottom: 1px solid #46484a; border-radius: 5px 5px 0 0; display: flex;text-align: center;}
+.tabType5 li {flex-basis: calc(100%/3); position: relative;}
+.tabType5 li::after {content: ""; position: absolute; right: -1px; top: 50%; transform: translateY(-50%); width: 1px; height: 100%; background-color: #c7c8c8;}
+.tabType5 li:last-child::after {content: none;}
+.tabType5 li.active::after {content: none;}
+.tabType5 li button {width: 100%;height: 45px; font-size: 18px;}
+.tabType5 li.active button {background-color: #46484a;border-radius: 5px 5px 0 0;color: #fff; font-weight: 300;}
+
+.tabType6 {background-color: #fff;width: 100%;border-bottom: 1px solid #e5e5e5;  display: flex;text-align: center;}
+.tabType6 li {flex-basis: calc(100%/2);}
+.tabType6 li button {width: 100%;height: 35px; font-size: 16px;border: 1px solid #dfdfdf; border-bottom: 1px solid #e5e5e5; border-radius: 5px 5px 0 0;}
+.tabType6 li.active button {background-color: #c8c8c8;border-radius: 5px 5px 0 0; border: 1px solid #c8c8c8;}
+.pay_refund_cont .pay_tType1 {margin-top:-20px;}
+.pay_refund_cont .pay_tType1 tbody tr:first-child {border-top:0 none;}
+
+/* // tab */
+
+/* calendar */
+.calendar_wrap {position:relative;display: inline-block;}
+.calendar_wrap>span {font-weight: 500;}
+.calendar_wrap>input[type="text"] {height: 36px;line-height: 36px;width: 140px;border: 1px solid #d5d5d5;font-size: 16px;font-weight: 300;padding: 0 5px;color: #777;background: url(/publish/images/calendar/calendarIcon2.png) #fff no-repeat right 7px center;}
+.calendar_in {position: relative;display: inline;}
+.calendar_in>button {  border: 1px solid transparent !important; height: 26px; margin: 1px 0 0 0; padding: 0; text-indent: -9999em; width: 26px; vertical-align: middle; position: absolute; right: 8px;top: 57%; transform: translateY(-50%);}
+.calendar_in .calendar-frame {border: 0;height: 290px;width: 320px;}
+.calendar_in .calendarPop {display: none;position: absolute;z-index: 10;top: 32px;left: -204px; border-radius: 10px 10px 0 0;box-shadow: 0px 0px 5px 3px rgba(0,0,0,0.12); background-color: #fff;}(No newline at end of file)
src/main/webapp/publish/images/intro_function.jpg (Binary)
--- src/main/webapp/publish/images/intro_function.jpg
+++ src/main/webapp/publish/images/intro_function.jpg
Binary file is not shown
src/main/webapp/publish/images/intro_service.jpg (Binary)
--- src/main/webapp/publish/images/intro_service.jpg
+++ src/main/webapp/publish/images/intro_service.jpg
Binary file is not shown
 
src/main/webapp/publish/images/kakao_intro_cont/text_brandmsg.png (Binary) (added)
+++ src/main/webapp/publish/images/kakao_intro_cont/text_brandmsg.png
Binary file is not shown
src/main/webapp/publish/info_popup.html
--- src/main/webapp/publish/info_popup.html
+++ src/main/webapp/publish/info_popup.html
@@ -447,6 +447,20 @@
     </div>
   </div>
   <!-- // 카톡발송 > 친구톡 -->
+  <!-- 카카오톡 설정 > 브랜드메시지 템플릿 관리-->
+  <div class="info_popup" id="brandMsgSet">
+    <div class="popup_heading">
+      <p>사용안내</p>
+    </div>
+    <div class="layer_in layer_info_wrap">
+      <ul class="info_list">
+        <li>브랜드메시지는 알림톡과 달리 별도의 템플릿 심사가 필요하지 않습니다.</li>
+        <li>등록된 템플릿은 자유롭게 삭제가 가능합니다.</li>
+        <li>문자온이 제공하지 않는 이모티콘, 이모지를 포함하여 템플릿을 등록할 경우, 브랜드메시지 발송이 불가합니다.</li>
+      </ul>
+    </div>
+  </div>
+  <!-- // 카톡발송 > 친구톡 -->
 
 </body>
 
src/main/webapp/publish/js/content.js
--- src/main/webapp/publish/js/content.js
+++ src/main/webapp/publish/js/content.js
@@ -436,6 +436,7 @@
 	});
 
 	// 알림톡 템플릿 등록/관리 버튼 클릭 시 콘텐츠 바뀜
+	/*$(".template_content_wrap:not(.friend_template_content) .btn_list").click(function () {*/
 	$(".btn_list").click(function () {
 		$(this).closest(".tab_content").find(".thumbnail_content").fadeOut(0);
 		$(this).closest(".tab_content").find(".list_content,.btn_thumbnail").show();
src/main/webapp/publish/kakao_allimtalk_intro.html
--- src/main/webapp/publish/kakao_allimtalk_intro.html
+++ src/main/webapp/publish/kakao_allimtalk_intro.html
@@ -46,7 +46,7 @@
 
                     <ul class="tabType1">
                         <li class="tab active"><button type="button" onclick="contentTab(this,'1');">알림톡</button></li>
-                        <li class="tab"><button type="button" onclick="contentTab(this,'2');">친구톡</button></li>
+                        <li class="tab"><button type="button" onclick="contentTab(this,'2');">브랜드메시지</button></li>
                     </ul>
 
                     <!-- 알림톡 소개 -->
@@ -325,7 +325,7 @@
                     <div class="tab_content friendtalk" id="tab_content_2">
                         <div class="kakao_intro">
                             <div class="title">
-                                <h3>친구톡이란?</h3>
+                                <h3>브랜드메시지란?</h3>
                             </div>
 
 
@@ -339,9 +339,9 @@
                                 <div class="intro">
                                     <img class="phone" src="/publish/images/kakao_intro_cont/phone_friendtalk.png" alt="핸드폰">
 
-                                    <ul class="list">
+                                    <ul class="list" style="width:57%;">
                                         <li>
-                                            <img src="/publish/images/kakao_intro_cont/text_friendtalk.png" alt="카카오톡 전용 기업 메시지 서비스  “알림톡”">
+                                            <img src="/publish/images/kakao_intro_cont/text_brandmsg.png" alt="카카오톡 전용 기업 메시지 서비스  “알림톡”">
                                         </li>
                                         <li>
                                             <p>1</p>
@@ -349,7 +349,7 @@
                                         </li>
                                         <li>
                                             <p>2</p>
-                                            <p>채널 친구 추가된 사용자라면 <span>누구에게나</span> 발송 가능</p>
+                                            <p>채널 친구 추가된 사용자라면 <span>누구에게나</span> 발송 가능<strong>(타깃 설정 미지원)</strong></p>
                                         </li>
                                         <li>
                                             <p>3</p>
@@ -363,7 +363,7 @@
                                         </li>
                                         <li>
                                             <p>5</p>
-                                            <p>문자 메시지 대비 <span>O % 이상</span> 저렴</p>
+                                            <p>문자 메시지 대비 <span>저렴한</span> 단가</p>
                                         </li>
                                         <li>
                                             <p>6</p>
@@ -384,7 +384,7 @@
                                 <div class="fight">
                                     <div class="line"></div>
                                     <div class="fight-title">
-                                        <h4>알림톡 <span>VS</span> 친구톡</h4>
+                                        <h4>알림톡 <span>VS</span> 브랜드메시지</h4>
                                         <div class="circle"></div>
                                     </div>
 
@@ -420,15 +420,15 @@
                                         </div>
 
                                         <div class="vs friendtalk_vs">
-                                            <div class="title">친구톡</div>
+                                            <div class="title">브랜드메시지</div>
                                             <div class="box">
                                                 <ul>
-                                                    <li>채널 친구</li>
+                                                    <li>채널 친구<span>(타깃 설정 미지원)</span></li>
                                                     <li>광고 및 마케팅성<span>(예 : 이벤트, 쿠폰 등)</span></li>
                                                     <li>텍스트, 기본이미지, 와이드 이미지형 등</li>
                                                     <li>최대 5개</li>
                                                     <li>별도 승인 없음 <span>야간 발송 제한(20:50 ~ 익일 08:00)</span></li>
-                                                    <li>0.0원 ~ 0.0원</li>
+                                                    <li>20원</li>
                                                     <li>1,000자</li>
                                                     <li>가능</li>
                                                 </ul>
@@ -442,7 +442,7 @@
                         <!-- 친구톡 유형 -->
                         <div class="use">
                             <div class="title">
-                                <h3>친구톡 유형</h3>
+                                <h3>브랜드메시지 유형</h3>
                             </div>
 
                             <div class="title-line">
@@ -498,14 +498,14 @@
                                 <li class="guide_03">
                                     <div class="title">STEP <span>03</span></div>
                                     <i></i>
-                                    <p class="guide_title">친구톡 전송</p>
-                                    <span class="guide_info">친구톡은 별도의 템플릿 심사 절차 없이, 즉시 발송 가능합니다.</span>
+                                    <p class="guide_title">브랜드메시지 전송</p>
+                                    <span class="guide_info">브랜드메시지는 별도의 템플릿 심사 절차 없이, 즉시 발송 가능합니다.</span>
                                 </li>
                             </ul>
 
                             <!--이용가이드 버튼-->
                             <div class="guide">
-                                <a href="https://kakaobusiness.gitbook.io/main/ad/brandmessage" target="_blank">친구톡 이용가이드 보기 <img src="/publish/images/kakao_intro_cont/guide_arrow.png" alt="알림톡 이용가이드 화살표"></a>
+                                <a href="https://kakaobusiness.gitbook.io/main/ad/brandmessage" target="_blank">브랜드메시지 이용가이드 보기 <img src="/publish/images/kakao_intro_cont/guide_arrow.png" alt="알림톡 이용가이드 화살표"></a>
                             </div>
                         </div>
 
@@ -515,10 +515,9 @@
                                 <p><span><img src="/publish/images/kakao_intro_cont/note_icon.png" alt="유의사항 아이콘"></span>유의사항</p>
                             </div>
                             <ul>
-                                <li>- (광고) 표기 여부는 선택 가능하나 , (광고)표기 해제에 따른 법령상 의무사항을 미 준수시에는 메시지 발송이 중단될 수 있습니다.</li>
-                                <li>- 광고성 친구톡 메시지에는 “(광고) 표시 및 수신거부 방식”이 표시되며, 대체 문자의 경우에는 “(광고) 문구 및 080 무료수신거부 번호”가 자동으로 포함됩니다.</li>
+                                <li>- 브랜드메시지에는 "(광고) 문구 및 수신거부 방식"이 자동으로 표시되며, 대체 문자 발송 시에는 “(광고) 문구 및 080 무료수신거부 번호”가 자동으로 적용됩니다.</li>
                                 <li><b>- 광고성 메시지의 발송 가능 시간은 08:00 ~ 20:50(한국시간) 입니다.</b></li>
-                                <li>- 친구톡 발송 실패에 따른 대체문자 발송 시 문자요금(단문, 장문, 그림)이 보유 캐시에서 차감됩니다.</li>
+                                <li>- 브랜드메시지 발송 실패에 따른 대체문자 발송 시 문자요금(단문, 장문, 그림)이 보유 캐시에서 차감됩니다.</li>
                                 <li>- 카카오정책 및 심의기준을 반드시 준수하여야 합니다.</li>
                             </ul>
                         </div>
src/main/webapp/publish/kakao_friendtalk_send.html
--- src/main/webapp/publish/kakao_friendtalk_send.html
+++ src/main/webapp/publish/kakao_friendtalk_send.html
@@ -38,6 +38,25 @@
 </head>
 
 <body>
+	<div class="mask on"></div>
+	<!-- 친구톡 서비스 중단 -->
+	<div class="tooltip-wrap ">
+        <div class="popup-com service_stop_popup alert_layer_popup" tabindex="0" data-tooltip-con="alert_layer_popup" data-focus="alert_layer_popup" data-focus-prev="alert_layer_popup-close" style="display:block;width:490px;opacity:1;">
+            <div class="popup_heading">
+                <p>알림</p>
+                <button type="button" class="tooltip-close" data-focus="alert_layer_popup-close"><img src="/publish/images/content/layerPopup_close.png" alt="팝업 닫기"></button>
+            </div>
+            <div class="layer_in">
+                <p>친구톡 서비스는 종료되었으며,<br />2026년 1월부터 <b>'브랜드메시지'</b>로 전환될 예정입니다.</p>
+                <div class="popup_btn">
+                	<button type="button" class="btn fill blue" onclick="location.href='/web/main/mainPage.do'">메인화면 바로가기</button>
+                </div>
+            </div>
+        </div>
+    </div>
+    <!-- //친구톡 서비스 중단 -->
+	
+	
     <div class="skip_menu">
         <a href="#cont" title="본문 바로가기" class="contGo">본문 바로가기</a>
     </div>
@@ -96,11 +115,11 @@
                                         <th>이미지 첨부</th>
                                         <td>
                                             <input type="radio" name="img_file_add" id="img_file_0" checked>
-                                            <label for="img_file_0">첨부 안함</label>
+                                            <label for="img_file_0">텍스트</label>
                                             <input type="radio" name="img_file_add" id="img_file_1">
-                                            <label for="img_file_1">이미지 첨부</label>
+                                            <label for="img_file_1">이미지</label>
                                             <input type="radio" name="img_file_add" id="img_file_2">
-                                            <label for="img_file_2">와이드 이미지 첨부</label>
+                                            <label for="img_file_2">와이드</label>
                                             
                                             <div class="img_file_add_wrap basic_img_add_wrap">
                                                 <p class="info_title_text"><span class="c_e40000">*</span> 이미지 첨부 안내</p>
src/main/webapp/publish/kakao_profile_add.html
--- src/main/webapp/publish/kakao_profile_add.html
+++ src/main/webapp/publish/kakao_profile_add.html
@@ -238,7 +238,7 @@
                     <div class="titBox">
                         <p>- 카카오톡 채널(https://center-pf.kakao.com)에서 가입 후, 카카오톡 채널(발신프로필) 등록바랍니다.</p>
                         <p>- 카카오톡 채널 관리자센터- [서비스관리] – 프로필명 클릭 – [관리]메뉴-카카오톡 채널 홈에서 홈 공개 및 검색허용을 하셔야 등록가능합니다.</p>
-                        <p>- 카카오 알림톡/친구톡은 기업고객 전용 서비스입니다.</p>
+                        <p>- 카카오 알림톡/브랜드메시지는 기업고객 전용 서비스입니다.</p>
                     </div>
                     <div class="list_info">
                         <div class="btn_wrap">
src/main/webapp/publish/payment1.html
--- src/main/webapp/publish/payment1.html
+++ src/main/webapp/publish/payment1.html
@@ -470,7 +470,30 @@
 							</table>
 							<span class="reqTxt4">* 텍스트 용량(Byte)에 대한 안내 : 한글2Byte, 영문·숫자 1Byte를 차지.</span>
 							
-							<p class="tType1_title"><img src="/publish/images/content/icon_fee2.png" alt="알림톡 아이콘 이미지"> 친구톡</p>
+							<p class="tType1_title"><img src="/publish/images/content/icon_fee2.png" alt="알림톡 아이콘 이미지"> 브랜드메시지</p>
+							<table class="tType2">
+								<colgroup>
+									<col style="width: 20%;">
+									<col style="width: 60%;">
+									<col style="width: 20%;">
+								</colgroup>
+								<thead>
+									<tr>
+										<th>구분</th>
+										<th>특징</th>
+										<th>가격</th>
+									</tr>
+								</thead>
+								<tbody>
+									<tr>
+										<th>브랜드메시지</th>
+										<td>카카오톡을 통해 채널 친구 대상으로 발송이 가능한 광고성 메시지<br />(1,000자 이하의 텍스트 및 이미지 발송 가능)</td>
+										<td>20원</td>
+									</tr>
+								</tbody>
+							</table>
+							<span class="reqTxt4">* 텍스트 용량(Byte)에 대한 안내 : 한글2Byte, 영문·숫자 1Byte를 차지.</span>
+							<!-- <p class="tType1_title"><img src="/publish/images/content/icon_fee2.png" alt="알림톡 아이콘 이미지"> 친구톡</p>
 							<table class="tType2">
 								<colgroup>
 									<col style="width: 20%;">
@@ -499,7 +522,7 @@
 										<td><span>22.9</span>원</td>
 									</tr>
 								</tbody>
-							</table>
+							</table> -->
 							<!-- <span class="reqTxt4">* 텍스트 용량(Byte)에 대한 안내 : 한글2Byte, 영문·숫자 1Byte를 차지.</span> -->
 
 							<p class="tType1_title"><img src="/publish/images/content/icon_fee_fax.png" alt="팩스 아이콘 이미지"> 팩스</p>
src/main/webapp/publish/payment4.html
--- src/main/webapp/publish/payment4.html
+++ src/main/webapp/publish/payment4.html
@@ -54,6 +54,84 @@
 
 <body>
 
+	<!-- 브랜드메시지 상세 팝업 -->
+	<div class="tooltip-wrap">
+		<div class="popup-com adr_layer kakao_rev_popup brandmsg_detail_popup" tabindex="0" data-tooltip-con="brandmsg_detail_popup" data-focus="allimTalk_detail_popup" data-focus-prev="brandmsg_detail_popup-close" style="width:440px;">
+			<div class="popup_heading">
+				<p>문자내용</p>
+				<button type="button" class="tooltip-close" data-focus="brandmsg_detail_popup-close"><img src="/publish/images/content/layerPopup_close.png" alt="팝업 닫기"></button>
+			</div>
+			<div class="layer_in">
+				<div class="list_tab_wrap2 kakao_rev_tab">
+					<!-- tab button -->
+					<ul class="list_tab">
+						<li class="tab active"><button type="button" onclick="popupTab(this,'1');">카카오톡</button></li>
+						<!-- <li class="tab"><button type="button" onclick="popupTab(this,'2');">대체문자</button></li> -->
+					</ul>
+					<!--// tab button -->
+				</div>
+				<div class="popCont current kakao_wrap " id="popCont_1">
+					<div class="phone_kakao friendtalk">
+						<div class="phoneIn">
+							<div class="rev_pop_middle clearfix">
+								
+								<span>발송일시 : 2025-12-09 18:05:05</span>
+								<span class="msg_com msg_allimtalk">
+								브랜드(텍스트)
+								</span>
+							</div>
+					 		<!-- 텍스트 미리보기 -->
+							<div class="rev_pop_txt">
+								<div class="text_preview">
+									<p class="friend_talk_title"><span>(광고)</span></p>
+									<div class="allimtalk_content">
+										<div class="kakao_image">
+											<img src="https://mud-kage.kakao.com/dn/Sseex/btsQMCVwCSJ/s0jeqzYQUjW1jX1Msszdk1/img_l.jpg" alt="">
+										</div>
+										<p class="emphasis_side_text">강조표기 보조문구 미리보기</p>
+										<p class="emphasis_title_text">타이틀 미리보기</p>
+										<p class="template_text">내용미리보기</p>
+										<p class="side_info_text">부가정보내용</p>
+										<p class="channel_info_text">채널 추가 안내 메시지 미리보기</p>
+										<button type="button" class="btn_kakao_type">버튼명</button>
+										<button type="button" class="btn_kakao_type">버튼명</button>
+									</div>
+									<p class="kakao_block_text">수신거부 : 홈 &gt; 채널차단</p>
+								</div>
+							 </div>
+						</div>
+					</div>
+				</div>
+				<!-- <div class="popCont replace_send_popup" id="popCont_2">
+					<div class="rev_pop_in">
+						<div class="rev_pop_middle clearfix">
+							<span>발송일시 : 2021-05-28 16:52:30</span>
+							<span class="msg_com msg_allimtalk">알림톡</span>
+						</div>
+						<div class="rev_pop_txt">
+							<ul>
+								<li><img src="/publish/images/content/thumb1.jpg" alt="발송된 그림문자 미리보기"></li>
+								<li><img src="/publish/images/content/thumb2.jpg" alt="발송된 그림문자 미리보기"></li>
+								<li><img src="/publish/images/content/thumb3.jpg" alt="발송된 그림문자 미리보기"></li>
+							</ul>
+							<div>
+								<p class="deny_receipt">(광고) 무료거부 080-888-8282</p>
+								<p class="rev_cont">안녕하세요. 문자온미용실 입니다.<br>
+									여름 맞이 이벤트 입니다.<br>
+									7월부터 8월까지 모든 염색 10만원(시세이도 및 탈색은 별도)
+								</p>
+							</div>
+						</div>
+					</div>
+				</div> -->
+				<div class="popup_btn_wrap2" style="justify-content: center;">
+					<button type="button" class="tooltip-close" data-focus="brandmsg_detail_popup-close" data-focus-next="brandmsg_detail_popup">닫기</button>
+				</div>
+			</div>
+		</div>
+	</div>
+	<!--// 브랜드메시지 상세 팝업 -->
+
 
 	<!-- 알림톡 상세 팝업 -->
 	<div class="tooltip-wrap">
@@ -298,8 +376,8 @@
 							<li class="tab"><button type="button" onclick="listTab2(this,'4');">그림</button></li>
 							<li class="tab"><button type="button" onclick="listTab2(this,'5');">선거</button></li>
 							<li class="tab"><button type="button" onclick="listTab2(this,'5');">알림톡</button></li>
-							<!-- <li class="tab"><button type="button" onclick="listTab2(this,'5');">친구톡</button></li> -->
-							<li class="tab"><button type="button" onclick="listTab2(this,'5');">팩스</button></li>
+							<li class="tab"><button type="button" onclick="listTab2(this,'5');">브랜드메시지</button></li>
+							<li class="tab"><button type="button" onclick="listTab2(this,'6');">팩스</button></li>
 						</ul>
 						<!--// tab button -->
 					</div>
@@ -322,7 +400,7 @@
 							<table class="tType4">
 								<colgroup>
 									<col style="width: auto;">
-									<col style="width: 9%;">
+									<col style="width: 15%;">
 									<col style="width: 10%;">
 									<col style="width: 12%;">
 									<col style="width: 12%;">
@@ -359,6 +437,20 @@
 									</tr>
 									<tr>
 										<td>2025-04-21 18:19</td>
+										<td>브랜드(텍스트)</td>
+										<td><button class="btnType btnType20" data-tooltip="brandmsg_detail_popup">상세보기</button></td>
+										<td>
+											<p class="fwRg c_002c9a">187</p>
+										</td>
+										<td>
+											<p class="fwRg c_222">23</p>
+										</td>
+										<td>
+											<p class="fwRg c_002c9a">5</p>
+										</td>
+									</tr>
+									<tr>
+										<td>2025-04-21 18:19</td>
 										<td>알림톡</td>
 										<td><button class="btnType btnType20" data-tooltip="allimTalk_detail_popup">상세보기</button></td>
 										<td>
src/main/webapp/publish/sub2.html
--- src/main/webapp/publish/sub2.html
+++ src/main/webapp/publish/sub2.html
@@ -136,10 +136,8 @@
                                     </div>
                                     <div class="custom_put1_txt">
                                         <p><span class="vMiddle">*</span> <span class="c_e40000">캘리그래피체는 수정이 불가</span>합니다.</p>
-                                        <p><span class="vMiddle">*</span>
-                                            <spanspan class="c_e40000">제작형태와 요청사항이 상이한 경우 <spanspan class="c_e40000">추가로 비용이 발생할 수 있습니다.</spanspan>
-                                            </spanspan>
-                                        </p>
+                                        <p><span class="vMiddle">*</span> <span class="c_e40000">제작형태와 요청사항이 상이한 경우 <span class="c_e40000">추가로 비용이 발생할 수 있습니다.</span></span></p>
+                                        <p><span class="vMiddle">*</span> <span class="c_e40000">제작된 이미지는 알림톡 및 브랜드메시지 발송에는 사용할 수 없습니다.</span></p>
                                     </div>
                                 </td>
                             </tr>
src/main/webapp/publish/textingmsg.html
--- src/main/webapp/publish/textingmsg.html
+++ src/main/webapp/publish/textingmsg.html
@@ -651,7 +651,7 @@
 						<div class="titBox_result">
 							<p>- 최대 3개월간의 발송내역만 확인하실 수 있습니다.</p>
 							<p>- 전송내역이 필요한 경우 기간 내에 다운로드하여 주시기 바랍니다.</p>
-							<p>- 단문문자는 최대 24시간, 장문 및 그림문자는 최대 72시간까지 결과값이 수신되지 않은 경우 실패(비과금) 처리됩니다.</p>
+							<p>- 기존 카카오 친구톡 서비스는 브랜드메시지로 변경되었습니다.</p>
 						</div>
 						<!--// 발송결과 개선 : 문구추가 -->
 
@@ -726,9 +726,9 @@
 									</dl>
 								</div>
 							</div>
-							<!-- <div class="rev_admin_in">
+							<div class="rev_admin_in">
 								<div class="rev_admin_top clearfix">
-									<p>친구톡</p>
+									<p>브랜드메시지</p>
 									<p><span>171</span> 건</p>
 								</div>
 								<div class="rev_admin_btm">
@@ -745,7 +745,7 @@
 										<dd><span class="c_e40000">0</span>건</dd>
 									</dl>
 								</div>
-							</div> -->
+							</div>
 						</div>
 
 						<div class="list_tab_wrap2 type4">
@@ -754,7 +754,7 @@
 								<li class="tab active"><button type="button" onclick="listTab2(this,'1');">전체</button>
 								</li>
 								<li class="tab"><button type="button" onclick="listTab2(this,'2');">알림톡</button></li>
-								<li class="tab"><button type="button" onclick="listTab2(this,'3');">친구톡</button></li>
+								<li class="tab"><button type="button" onclick="listTab2(this,'3');">브랜드메시지</button></li>
 							</ul>
 							<!--// tab button -->
 						</div>
@@ -810,7 +810,7 @@
 										<colgroup>
 											<col style="width: 45px;">
 											<col style="width: 12%;">
-											<col style="width: 8%;">
+											<col style="width: 10%;">
 											<col style="width: auto;">
 											<col style="width: 8%;">
 											<col style="width: 6%;">
@@ -820,7 +820,7 @@
 											<col style="width: 6%;">
 											<col style="width: 6%;">
 											<col style="width: 9%;">
-											<col style="width: 11%;">
+											<col style="width: 8%;">
 										</colgroup>
 										<thead>
 											<tr>
@@ -865,7 +865,7 @@
 													<input type="checkbox">
 												</td>
 												<td>2024-01-09 17:42</td>
-												<td>단문</td>
+												<td>알림톡</td>
 												<td class="result_cont"><a href="#">내용을 클릭하면 상세보기 화면으로 이동합니다.</a></td>
 												<td>125,895</td>
 												<td>
@@ -893,6 +893,40 @@
 													<p><button class="btnType btnType20">예약취소</button></p>
 												</td>
 											</tr>
+											<tr>
+												<td>
+													<label for="" class="label">선택</label>
+													<input type="checkbox">
+												</td>
+												<td>2024-01-09 17:42</td>
+												<td>브랜드(텍스트)</td>
+												<td class="result_cont"><a href="/publish/textingmsg_detail_brandmsg.html">내용을 클릭하면 상세보기 화면으로 이동합니다.</a></td>
+												<td>125,895</td>
+												<td>
+													<p class="c_666">0</p>
+												</td>
+												<td>
+													<p class="c_002c9a">0</p>
+												</td>
+												<td>
+													<p class="c_e40000">0</p>
+												</td>
+												<td>
+													<p class="c_002c9a">0</p>
+												</td>
+												<td>
+													<p class="c_002c9a">0</p>
+												</td>
+												<td>
+													<p class="c_e40000">125,895</p>
+												</td>
+												<td>
+													8,485,258원
+												</td>
+												<td>
+													<p><button class="btnType btnType20">예약취소</button></p>
+												</td>
+											</tr>
 										</tbody>
 									</table>
 								</div>
 
src/main/webapp/publish/textingmsg_detail_brandmsg.html (added)
+++ src/main/webapp/publish/textingmsg_detail_brandmsg.html
@@ -0,0 +1,845 @@
+<!DOCTYPE html>
+<html lang="ko">
+
+<head>
+	<meta charset="UTF-8">
+	<meta http-equiv="X-UA-Compatible" content="IE=edge">
+	<title>문자온_발송결과</title>
+
+	<link href="https://fonts.googleapis.com/css2?family=Noto+Sans+KR:wght@100;300;400;500;700;900&display=swap" rel="stylesheet">
+	<link rel="stylesheet" href="/publish/css/reset.css">
+	<link rel="stylesheet" href="/publish/css/jquery.mCustomScrollbar.css">
+	<link rel="stylesheet" href="/publish/css/common.css">
+	<link rel="stylesheet" href="/publish/css/button.css">
+	<link rel="stylesheet" href="/publish/css/content.css">
+	<link rel="stylesheet" href="/publish/css/mem.css">
+	<link rel="stylesheet" href="/publish/css/font.css">
+	<link rel="stylesheet" href="/publish/css/popupLayer.css">
+	<link rel="stylesheet" href="/publish/js/datepicker/classic.css">
+	<link rel="stylesheet" href="/publish/js/datepicker/classic.date.css">
+
+
+	<script src="/publish/js/jquery-3.5.0.js"></script>
+	<script src="/publish/js/jquery.mCustomScrollbar.concat.min.js"></script>
+	<script src="/publish/js/common.js"></script>
+	<script src="/publish/js/content.js"></script>
+	<script src="/publish/js/popupLayer.js"></script>
+	<script type="text/javascript" src="/publish/js/datepicker/picker.js"></script>
+	<script type="text/javascript" src="/publish/js/datepicker/picker.date.js"></script>
+	<script type="text/javascript" src="/publish/js/datepicker/ko_KR.js"></script>
+
+	<script>
+		$(document).ready(function () {
+			$(".table_tab_wrap .tab_depth1 a").click(function () {
+				var tab_num = $(this).index();
+				$(".table_cont .tb_wrap").eq(tab_num).show();
+				$(".table_cont .tb_wrap").eq(tab_num).siblings(".tb_wrap").hide();
+				if ($(".table_tab_wrap .tab_depth1 a:visible").length == tab_num + 1) {
+					$(this).css("border-radius", "0 5px 5px 0");
+				} else {}
+			})
+		});
+
+		function phoneTab(obj, tabId) {
+			var $tab = $(obj).closest("li");
+			$tab.addClass("active");
+			$tab.find("button").attr("title", "선택됨");
+			$tab.siblings("li.tab").removeClass("active");
+			$tab.siblings("li.tab").find("button").removeAttr("title");
+
+			var $tabCn = $("#tab_phone_" + tabId);
+			$tabCn.fadeIn(0);
+			$tabCn.addClass("current");
+
+			$(".tab_phone").not($tabCn).removeClass("current");
+			$(".tab_phone").not($tabCn).fadeOut(0);
+
+			currTabId = tabId;
+		}
+	</script>
+
+</head>
+
+<body>
+	<div class="mask"></div>
+
+	<!-- 220411 이통사 스팸차단 및 번호도용 방지 서비스 안내 팝업 -->
+	<div class="tooltip-wrap">
+		<div class="popup-com ad_layer popupJunk" tabindex="0" data-tooltip-con="popupJunk" data-focus="popupJunk" data-focus-prev="popupJunk-close" style="width: 795px;">
+			<div class="popup_heading">
+				<p>이통사 스팸차단 및 번호도용 방지 서비스 안내</p>
+				<button type="button" class="tooltip-close" data-focus="popupJunk-close"><img src="/publish/images/content/layerPopup_close.png" alt="팝업 닫기"></button>
+			</div>
+			<div class="layer_in">
+				<div class="list_tab_wrap2 type5">
+					<!-- tab button -->
+					<ul class="list_tab">
+						<li class="tab active"><button type="button" onclick="listTab2(this,'1');">이통사 스팸 필터링 서비스</button></li>
+						<li class="tab"><button type="button" onclick="listTab2(this,'2');">번호도용 문자차단 서비스</button></li>
+					</ul><!-- // tab button -->
+				</div>
+				<!-- 광고문자 전송규정 안내 -->
+				<div class="adpop_cont current" id="listTab2_1">
+					<div class="titBox">
+						<div class="notibox">한국인터넷진흥원 불법스팸대응센터에서 스팸종합대책을 마련함에 따라,<br>각 통신사에서 스팸차단서비스라는 서비스를 진행하고 있습니다.</div>
+						<p>- 스팸차단서비스는 이동통신사의 별도 조합 기준에 따른 스팸확률에 의한 차단으로 스팸으로 판단되는 문자를</p>
+						<p>&nbsp; 휴대폰 문자수신함이 아닌, 각 통신사별 스팸보관함에 전송한 후 결과값은 성공을 처리합니다(정상과금 처리)</p>
+						<p>- 스팸문자로 저장된것이 확인되었다면, 스팸차단서비스를 해제하여 이용하시기 바랍니다.</p>
+						<p>&nbsp; (개인정보보호정책으로 인해 본인 이외 타인은 확인 불가하므로, 본인이 직접 확인해야합니다.)</p>
+					</div>
+					<div class="adpop1_bottom">
+						<p class="title_box"><span>01.</span>통신사 홈페이지를 통해 확인하는 방법<button type="button" class="view_button" onclick="popContentBoxView(this);"><i></i></button></p>
+						<div class="content_box">
+							<ul class="list">
+								<li class="tit">
+									<ul>
+										<li>
+											<div class="img_box"><img src="/publish/images/content/junk_agency001.png" alt="SK telecom" /></div>
+											<a href="http://www.tworld.co.kr/normal.do?serviceId=S_PROD2001&viewId=V_PROD7070&prod_id=NA00002121&uCode=u1_2" target="_blank" rel="nosublink">T월드 문자 스팸필터링 바로가기</a>
+										</li>
+										<li>
+											<div class="img_box"><img src="/publish/images/content/junk_agency002.png" alt="olleh KT" /></div>
+											<a href="https://product.kt.com/wDic/productDetail.do?ItemCode=479" target="_blank" rel="nosublink">KT (안심)스팸차단 바로가기</a>
+										</li>
+										<li>
+											<div class="img_box"><img src="/publish/images/content/junk_agency003.png" alt="LG U+" /></div>
+											<a href="https://www.lguplus.com/plan/addon/addon-call-msg/LRZ0000277" target="_blank" rel="nosublink">U+ 스팸차단 바로가기</a>
+										</li>
+									</ul>
+								</li>
+								<li>
+									<dl>
+										<dt><img src="/publish/images/content/junk_agency001_01.png" alt="T world" /></dt>
+										<dd>
+											<p>Tworld<a href="https://www.tworld.co.kr" target="_blank" rel="nosublink">(www.tworld.co.kr)</a> 홈페이지 접속 → 로그인 → [스팸필터링] 검색<br>→ 부가서비스 - 문자 스팸필터링 → 설정 → SMS인증 → 스팸차단 메시지 확인</p>
+										</dd>
+									</dl>
+								</li>
+								<li>
+									<dl>
+										<dt><img src="/publish/images/content/junk_agency002_01.png" alt="olleh O" /></dt>
+										<dd>
+											<p>KT<a href="https://www.kt.com/" target="_blank" rel="nosublink">(www.kt.com)</a> 홈페이지 접속 → 로그인 →[스팸차단서비스] 검색<br>→ 스팸차단서비스 → 스팸메시지함 → 스팸차단 메시지 확인</p>
+										</dd>
+									</dl>
+								</li>
+								<li>
+									<dl>
+										<dt><img src="/publish/images/content/junk_agency003_01.png" alt="LG U+" /></dt>
+										<dd>
+											<p>U+<a href="https://www.uplus.co.kr" target="_blank" rel="nosublink">(www.uplus.co.kr)</a> 홈페이지 접속 → 로그인 → [스팸차단] 검색<br>→ 부가서비스 - 스팸차단 → 스팸내역 조회 → SMS인증 → 스팸차단 메시지 확인</p>
+										</dd>
+									</dl>
+								</li>
+							</ul>
+						</div>
+					</div>
+					<div class="adpop1_bottom">
+						<p class="title_box"><span>02.</span>통신사 어플을 통해 확인하는 방법<button type="button" class="view_button" onclick="popContentBoxView(this);"><i></i></button></p>
+						<div class="content_box">
+							<ul class="list02">
+								<li>
+									<div class="img_box"><img src="/publish/images/content/junk_agency01_02.png" alt="SKT" /></div>
+									<dl>
+										<dt>SKT · T스팸필터링</dt>
+										<dd>T Store, 구글 Play 스토어<br>다운가능</dd>
+									</dl>
+								</li>
+								<li>
+									<div class="img_box"><img src="/publish/images/content/junk_agency02_02.png" alt="KT" /></div>
+									<dl>
+										<dt>KT올레 · 올레스팸차단서비스</dt>
+										<dd>구글 Play 스토어 다운가능</dd>
+									</dl>
+								</li>
+								<li>
+									<div class="img_box"><img src="/publish/images/content/junk_agency03_02.png" alt="LG" /></div>
+									<dl>
+										<dt>LG U+ · U+ 스팸차단</dt>
+										<dd>구글 Play 스토어 다운가능</dd>
+									</dl>
+								</li>
+							</ul>
+						</div>
+					</div>
+					<div class="adpop1_bottom">
+						<p class="title_box"><span>03.</span>통신사 고객센터를 확인하는 방법<button type="button" class="view_button" onclick="popContentBoxView(this);"><i></i></button></p>
+						<div class="content_box">
+							<dl class="cscenter">
+								<dt>휴대폰 114 + 통화버튼</dt>
+								<dd>
+									<ul>
+										<li>· SKT 고객센터(1599-0011)</li>
+										<li>· KT올레 고객센터(100)</li>
+										<li>· LG U+ 고객센터(1544-0010)</li>
+									</ul>
+								</dd>
+							</dl>
+						</div>
+					</div>
+				</div><!-- // 광고문자 전송규정 안내 -->
+
+				<!-- 광고문자 수신동의 안내 -->
+				<div class="adpop_cont" id="listTab2_2">
+					<div class="titBox">
+						<div class="notibox">웹에서 발송되는 스팸, 스미싱 문자에 내 번호가 회신번호로 악용되는 것을 방지해주는 서비스로<br>해당 서비스에 가입된 경우 인터넷 문자 발송서비스를 통해 본인 휴대폰번호로 문자 발송시 차단됩니다</div>
+						<p>- 모든 전송 결과값이 실패로 확인되는 경우, 번호도용문자차단서비스에 가입여부 확인 후 해당서비스를 해지</p>
+						<p>&nbsp; 하신 후 전송하시기 바랍니다.</p>
+					</div>
+					<div class="adpop1_bottom">
+						<p class="title_box"><span>01.</span>통신사 홈페이지를 통해 확인하는 방법<button type="button" class="view_button" onclick="popContentBoxView(this);"><i></i></button></p>
+						<div class="content_box">
+							<ul class="list">
+								<li class="tit">
+									<ul>
+										<li>
+											<div class="img_box"><img src="/publish/images/content/junk_agency001.png" alt="SKT" /></div>
+											<a href="http://www.tworld.co.kr/normal.do?serviceId=S_PROD2001&viewId=V_PROD7070&prod_id=NA00004406&uCode=u1_2" target="_blank" rel="nosublink">T번호도용문자차단 바로가기</a>
+										</li>
+										<li>
+											<div class="img_box"><img src="/publish/images/content/junk_agency002.png" alt="KT" /></div>
+											<a href="https://product.kt.com/wDic/productDetail.do?ItemCode=1047" target="_blank" rel="nosublink">KT번호도용문자차단 바로가기</a>
+										</li>
+										<li>
+											<div class="img_box"><img src="/publish/images/content/junk_agency003.png" alt="Uplus" /></div>
+											<a href="https://www.lguplus.com/plan/addon/addon-call-msg/LRZ0002297" target="_blank" rel="nosublink">U+ 번호도용문자차단 바로가기</a>
+										</li>
+									</ul>
+								</li>
+								<li>
+									<dl>
+										<dt><img src="/publish/images/content/junk_agency001_01.png" alt="tworld" /></dt>
+										<dd>
+											<p>Tworld<a href="https://www.tworld.co.kr" target="_blank" rel="nosublink">(www.tworld.co.kr)</a> 홈페이지 접속 → 로그인<br>→ [번호도용문자차단] 검색 → 부가서비스 → 번호도용문자차단 → 해지</p>
+										</dd>
+									</dl>
+								</li>
+								<li>
+									<dl>
+										<dt><img src="/publish/images/content/junk_agency002_01.png" alt="kt" /></dt>
+										<dd>
+											<p>KT<a href="https://www.kt.com" target="_blank" rel="nosublink">(www.kt.com)</a> 홈페이지 접속 → 로그인<br>→ [번호도용문자차단] 검색 → 부가서비스 → 번호도용문자차단 → 해지</p>
+										</dd>
+									</dl>
+								</li>
+								<li>
+									<dl>
+										<dt><img src="/publish/images/content/junk_agency003_01.png" alt="LGuplus" /></dt>
+										<dd>
+											<p>U+<a href="https://www.uplus.co.kr" target="_blank" rel="nosublink">(www.uplus.co.kr)</a> 홈페이지 접속 → 로그인 → [번호도용문자차단] 검색<br>→ 부가서비스 → 번호도용문자차단 → 해지</p>
+										</dd>
+									</dl>
+								</li>
+							</ul>
+						</div>
+					</div>
+					<div class="adpop1_bottom">
+						<p class="title_box"><span>02.</span>통신사 고객센터를 확인하는 방법<button type="button" class="view_button" onclick="popContentBoxView(this);"><i></i></button></p>
+						<div class="content_box">
+							<dl class="cscenter">
+								<dt>휴대폰 114 + 통화버튼</dt>
+								<dd>
+									<ul>
+										<li>· SKT 고객센터(1599-0011)</li>
+										<li>· KT올레 고객센터(100)</li>
+										<li>· LG U+ 고객센터(1544-0010)</li>
+									</ul>
+								</dd>
+							</dl>
+						</div>
+					</div>
+				</div><!-- // 광고문자 수신동의 안내 -->
+			</div>
+			<div class="popup_btn_wrap2" style="margin: 0 auto 30px auto;">
+				<button type="button" class="tooltip-close" data-focus="adr_popup01-close" data-focus-next="popup02">닫기</button>
+			</div>
+		</div>
+	</div>
+	<!-- //220411 이통사 스팸차단 및 번호도용 방지 서비스 안내 팝업 -->
+
+
+	<!-- 발송대상리스트 팝업 -->
+	<div class="tooltip-wrap">
+		<div class="popup-com ad_layer rev_popup04" tabindex="0" data-tooltip-con="rev_popup04" data-focus="rev_popup04" data-focus-prev="rev_popup04-close" style="width:595px;">
+			<div class="popup_heading">
+				<p>발송대상 리스트</p>
+				<button type="button" class="tooltip-close" data-focus="rev_popup04-close"><img src="/publish/images/content/layerPopup_close.png" alt="팝업 닫기"></button>
+			</div>
+			<div class="layer_in">
+
+				<div class="popup_search_type2">							
+					<label for="" class="label">검색종류 선택</label>
+					<div class="title">수신번호</div>
+					<label for="" class="label">검색어입력</label>
+					<input type="text" class="send_text" id="searchInput" placeholder="3자 이상 입력하세요." onfocus="this.placeholder=''" onblur="this.placeholder='3자 이상 입력하세요.'">
+					<button type="button" id="searchBtn" class="btnType btnType2" style="width:63px; margin:0;">검색</button>
+				</div>
+				
+				<div class="list_tab_wrap2 type4">
+					<ul class="tabType3" id="tabType" name="tabType">
+						<li class="tab active"><button type="button" id="initTab" title="선택됨">전체</button></li>
+						<li class="tab"><button type="button">대기</button></li>
+						<li class="tab"><button type="button">성공</button></li>
+						<li class="tab"><button type="button">실패</button></li>
+					</ul>
+				</div>
+
+				<div class="tb_wrap" style="min-height:200px;">
+					<table class="tType4">
+						<colgroup>
+							<col style="width: 30%;">
+							<col style="width: 40%;">
+							<col style="width: 30%;">
+						</colgroup>
+						<thead>
+							<tr>
+								<th>이름
+									<div class="sort_wrap">
+										<input type="button" class="sort sortBtn">
+									</div>
+								</th>
+								<th>수신번호
+									<div class="sort_wrap">
+										<input type="button" class="sort sortBtn">
+									</div>
+								</th>
+								<th>상세결과
+									<div class="sort_wrap">
+										<input type="button" class="sort sortBtn">
+									</div>
+								</th>
+							</tr>
+						</thead>
+						<tbody>
+							<tr>
+								<td>홍길동</td>
+								<td>010-1234-5678</td>
+								<td>성공(카톡)</td>
+							</tr>
+							<tr>
+								<td>홍길동</td>
+								<td>010-1234-5678</td>
+								<td>성공(카톡)</td>
+							</tr>
+							<tr>
+								<td>홍길동</td>
+								<td>010-1234-5678</td>
+								<td>실패(카톡+문자)</td>
+							</tr>
+							<tr>
+								<td>홍길동</td>
+								<td>010-1234-5678</td>
+								<td>성공(문자)</td>
+							</tr>
+							<tr>
+								<td>홍길동</td>
+								<td>010-1234-5678</td>
+								<td>성공(문자)</td>
+							</tr>
+							<tr>
+								<td>홍길동</td>
+								<td>010-1234-5678</td>
+								<td>실패(카톡+문자)</td>
+							</tr>
+							<tr>
+								<td>홍길동</td>
+								<td>010-1234-5678</td>
+								<td>성공(카톡)</td>
+							</tr>
+						</tbody>
+					</table>
+
+				</div>
+
+				<div class="table_btn clearfix">
+					<div class="table_btn_left">
+						<button type="button" class="excel_btn btnType"><i class="downroad"></i>엑셀 다운로드</button>
+						<button type="button" data-tooltip="rev_popup02" class="btnType btnType14"><i class="add_img"></i>주소록 등록</button>
+						<button type="button" class="btnType btnType15" style="display: none;"><i class="remove_img"></i>주소록에서 번호 삭제</button>
+					</div>
+				</div>
+
+				<!-- pagination -->
+				<ul class="pagination">
+					<li class="page_first"><button><img src="/publish/images/content/page_first.png" alt=""></button></li>
+					<li class="page_prev"><button><img src="/publish/images/content/page_prev.png" alt=""></button></li>
+					<li class="on"><button>1</button></li>
+					<li><button>2</button></li>
+					<li><button>3</button></li>
+					<li><button>4</button></li>
+					<li><button>5</button></li>
+					<li><button>6</button></li>
+					<li><button>7</button></li>
+					<li><button>8</button></li>
+					<li><button>9</button></li>
+					<li><button>10</button></li>
+					<li class="page_next"><button><img src="/publish/images/content/page_next.png" alt=""></button></li>
+					<li class="page_last"><button><img src="/publish/images/content/page_last.png" alt=""></button></li>
+				</ul><!-- pagination -->
+
+			</div>
+			<div class="popup_btn_wrap2" style="margin: -40px auto 30px auto;">
+				<button type="button" class="tooltip-close" data-focus="adr_popup01-close" data-focus-next="popup02">닫기</button>
+			</div>
+
+		</div>
+	</div>
+	<!-- //발송대상 리스트 안내 팝업 -->
+
+	<!-- 그룹등록 팝업 data-tooltip:rev_popup02 -->
+	<div class="tooltip-wrap">
+		<div class="popup-com adr_layer rev_popup02" tabindex="0" data-tooltip-con="rev_popup02" data-focus="rev_popup02" data-focus-prev="rev_popup02-close" style="width: 500px;">
+			<div class="popup_heading">
+				<p>그룹등록</p>
+				<button type="button" class="tooltip-close" data-focus="rev_popup02-close"><img src="/publish/images/content/layerPopup_close.png" alt="팝업 닫기"></button>
+			</div>
+			<div class="layer_in">
+				<div class="gorup_join_cont">
+					<p class="adr_pop_title">선택된 발송내역 전화번호를 그룹으로 등록합니다.</p>
+					<div class="group_input" style="margin-top: 0;">
+						<div class="input_left">그룹이름</div>
+						<div class="input_right">
+							<label for="" class="label">새 그룹명 입력</label>
+							<input type="text" placeholder="새 그룹명 입력" onfocus="this.placeholder=''" onblur="this.placeholder='새 그룹명 입력'" class="inputLight">
+						</div>
+					</div>
+					<div class="popup_btn_wrap2">
+						<button type="button">저장</button>
+						<button type="button" class="tooltip-close" data-focus="rev_popup02-close" data-focus-next="rev_popup02">취소</button>
+					</div>
+				</div>
+			</div>
+		</div>
+	</div>
+	<!--// 발송실패사유 팝업 -->
+
+	<!-- skip 메뉴  -->
+	<div class="skip_menu">
+		<a href="#cont" title="본문 바로가기" class="contGo">본문 바로가기</a>
+	</div>
+	<!--// skip 메뉴  -->
+	<!-- quick 메뉴 -->
+	<div class="quickMenu">
+		<div>
+			<p class="quick_title">QUICK<br>MENU</p>
+			<p class="quick_title2">QUICK</p>
+			<ul class="quickMenuIn">
+				<li>
+					<a href="/publish/index.html"><i class="quick1"></i><span>이용안내</span></a>
+					<div class="hover_cont">이용안내</div>
+				</li>
+				<li>
+					<a href="#"><i class="quick2"></i><span>채팅상담</span></a>
+					<div class="hover_cont">채팅상담</div>
+				</li>
+				<li>
+					<a href="#"><i class="quick3"></i><span>원격지원</span></a>
+					<div class="hover_cont">원격지원</div>
+				</li>
+				<li>
+					<a href="#"><i class="quick4"></i><span>맞춤제작</span></a>
+					<div class="hover_cont">맞춤제작</div>
+				</li>
+				<li>
+					<a href="#"><i class="quick5"></i><span>주소록 등록</span></a>
+					<div class="hover_cont">주소록 등록</div>
+				</li>
+				<li>
+					<a href="#"><i class="quick6"></i><span>엑셀 전송</span></a>
+					<div class="hover_cont">엑셀 대량전송</div>
+				</li>
+				<li>
+					<a href="#"><i class="quick7"></i><span>견적서</span></a>
+					<div class="hover_cont">견적서</div>
+				</li>
+				<li>
+					<a href="#"><i class="quick8"></i><span>결제</span></a>
+					<div class="hover_cont">결제</div>
+				</li>
+				<li>
+					<a href="#"><i class="quick9"></i><span>영수증/계산서</span></a>
+					<div class="hover_cont">영수증/계산서</div>
+				</li>
+			</ul>
+			<button type="button" class="goTop" title="맨 위로 이동">TOP<i></i></button>
+		</div>
+	</div>
+	<!--// quick 메뉴 -->
+	<!-- header 영역 -->
+	<header id="header" class="header">
+		<!-- header top 영역 -->
+		<div class="header_top">
+			<div class="inner">
+				<ul class="menu_left">
+					<li><a href="#"><i class="hdTop_fav"></i>즐겨찾기추가</a></li>
+					<li><a href="#"><i class="hdTop_mypage"></i>마이페이지</a></li>
+					<li><a href="#"><i class="hdTop_center"></i>고객센터</a></li>
+				</ul>
+				<ul class="menu_right">
+					<li><a href="#">충전하기</a></li>
+					<li class="SortLine"><a href="#">요금안내</a></li>
+					<li class="SortLine"><a href="#">이용안내</a></li>
+					<li class="SortLine"><a href="#">1:1고객상담</a></li>
+				</ul>
+			</div>
+		</div><!-- header top 영역 -->
+		<!-- header body 영역 -->
+		<div class="header_body">
+			<div class="inner table">
+				<h1 class="logo"><a href="/publish/index.html" alt="문자온 메인 바로가기"><img src="/publish/images/CI.png" alt="문자온 CI"></a></h1>
+				<ul class="gnbWrap table_cell">
+					<li><a href="#">문자발송</a></li>
+					<li><a href="#">선거문자</a></li>
+					<li><a href="#">맞춤제작</a></li>
+					<li><a href="#">비즈톡</a></li>
+					<li><a href="#">주소록 관리</a></li>
+					<li><a href="#">발송결과</a></li>
+					<li><a href="#">예약관리</a></li>
+					<li><a href="#">결제내역</a></li>
+				</ul>
+				<div class="s_menu">
+					<i class="allSearch_info"><span>문자검색</span></i>
+					<button type="button" title="전체검색" class="allSearch" onclick="searchToggle();"><img src="/publish/images/search.png" alt="검색영역 열기" class="allMenu"></button>
+					<button type="button" title="전체메뉴"><img src="/publish/images/all_menu.png" alt="전체메뉴 열기"></button>
+				</div>
+			</div>
+			<!-- search popup 영역 -->
+			<div class="pop_search">
+				<div class="inner">
+					<div class="area_search">
+						<select name="" id="">
+							<option value="">그림문자</option>
+							<option value="">단문문자</option>
+							<option value="">장문문자</option>
+							<option value="">GIF</option>
+						</select>
+						<input type="text" placeholder="문자샘플 검색하기">
+						<button><img src="/publish/images/search02.png" alt=""></button>
+					</div>
+					<div class="area_popular">
+						<p><i></i>인기검색어</p>
+						<ul class="popular_tag">
+							<li><a href="#">#정월대보름</a></li>
+							<li class="on"><a href="#">#추석</a></li>
+							<li><a href="#">#가을인사</a></li>
+							<li><a href="#">#좋은하루</a></li>
+						</ul>
+					</div>
+					<button class="btn_close" onclick="searchToggle();"><img src="/publish/images/btn_searchclose.png" alt=""></button>
+				</div>
+			</div>
+			<!--// search popup 영역 -->
+		</div>
+		<!--// header body 영역 -->
+		<div id="login" class="login">
+			<div class="inner table">
+				<div class="login_left table_cell">
+					<div class="login_put">
+						<label for="id_text" class="label"></label>
+						<input type="text" placeholder="아이디를 입력해주세요" id="id_text" class="id_text" maxlength="30" size="18">
+						<label for="password_text" class="label"></label>
+						<input type="password" placeholder="비밀번호를 입력해주세요" id="password_text" class="password_text" maxlength="30" size="18">
+						<label for="login_button" class="label"></label>
+						<button type="submit" class="btnType btnType1" class="login_button">로그인</button>
+					</div>
+					<div class="login_save">
+						<input type="checkbox" id="save_id">
+						<label for="save_id">아이디 저장</label>
+					</div>
+					<div class="login_find">
+						<a href="#">아이디찾기 /</a>
+						<a href="#">비밀번호 찾기</a>
+					</div>
+					<div>
+						<button type="button" class="btnType btnType2">회원가입</button>
+						<button type="button" class="btnType btnType3">둘러보기</button>
+					</div>
+				</div>
+				<div class="login_right">
+					<span><i></i>이달의 이벤트</span>
+					<button type="button" class="btnType btnType4">바로가기</button>
+				</div>
+			</div>
+		</div>
+		<!--// login 영역 -->
+	</header>
+	<!--// header 영역 -->
+	<!-- login 영역 -->
+	<!-- content 영역 -->
+	<div id="container" class="cont sub">
+		<div class="inner">
+			<!-- send top -->
+			<div class="send_top">
+				<!-- 결제관리 - 요금 사용내역 -->
+				<div class="rev_admin_cont serv_content current">
+					<div class="heading">
+						<h2>발송결과 상세</h2>
+						<button type="button" class="button junk" data-tooltip="popupJunk" style="right:0;">통신사 스팸규격안내</button>
+					</div>
+
+					<!-- 발송결과 상세 및 미리보기-->
+
+					<div class="send_general">
+						<!-- 발송결과 상세 정보 -->
+						<div class="resultcont_left">
+							<!--발송정보-->
+							<div class="res_info">
+								<div class="res_info_in">
+									<div class="res_info_top clearfix">
+										<p>발송정보</p>
+										<p><button type="button" class="btnType btnType3" onclick="fnMjMsgReSendAll();">재전송</button></p>
+									</div>
+									<div class="res_info_btm">
+										<dl>
+											<dt>발송일시</dt>
+											<dd>2025-04-21 18:19:48</dd>
+										</dl>
+										<dl>
+											<dt>형태</dt>
+											<dd>
+												브랜드(텍스트)
+											</dd>
+										</dl>
+										<dl>
+											<dt>발송건수</dt>
+											<dd><span class="c_222">1</span>건</dd>
+										</dl>
+										<dl>
+											<dt>채널정보</dt>
+											<dd>@아이티앤</dd>
+										</dl>
+										<dl>
+											<dt>진행상황</dt>
+											<dd>완료</dd>
+										</dl>
+										
+									</div>
+									<div class="res_info_btm">
+										<dl>
+											<dt class="btm_charge">발송요금(합계)</dt>
+											<dd><span class="stcharge">5</span>원</dd>
+											<!--<dd><span class="stcharge">-</span>원</dd>-->
+											<!-- 예역취소 후 금액은 하이픈 처리-->
+										</dl>
+										<div class="charge_line">
+											<dl>
+												<dt class="charge_title">· 카카오톡</dt>
+												<dd><span class="c_222">5</span>원</dd>
+											</dl>
+											<dl>
+												<dt class="charge_title">· 대체문자</dt>
+												<dd><span class="c_222">0</span>원</dd>
+											</dl>
+										</div>
+									</div>
+								</div>
+							</div>
+							<!--// 발송정보-->
+							<!--상세결과-->
+							<div class="res_info">
+								<div class="res_info_in">
+									<div class="res_info_top clearfix" style="padding:0 0 10px 0;">
+										<p>상세결과</p>
+										<p><!-- <button type="button" class="refresh_btn btnType"><i class="refresh_img"></i>새로고침</button> --></p>
+									</div>
+									<div class="res_num">
+										<div class="res_info_btm1">
+											<dl>
+												<dt>전체건수</dt>
+												<dd><a href="#" data-tooltip="rev_popup04"><span class="c_222_g">101</span>건(100%)</a></dd>
+											</dl>
+										</div>
+										<div class="res_info_btm1">
+											<dl>
+												<dt>성공건수</dt>
+												<dd><span class="c_002c9a_g">100</span>건(100%)</dd>
+											</dl>
+										</div>
+									</div>
+									<div class="res_num">
+										<div class="res_info_btm1">
+											<dl>
+												<dt>대기건수</dt>
+												<dd><span class="c_666_g">0</span>건(0%)</dd>
+											</dl>
+										</div>
+										<div class="res_info_btm1">
+											<dl>
+												<dt>실패건수</dt>
+												<dd><span class="c_e40000_g">1</span>건(100%)</dd>
+											</dl>
+										</div>
+									</div>
+									<div class="table_btn clearfix">
+										<div class="table_btn_left">
+											<!-- <button type="button" data-tooltip="rev_popup02" class="btnType btnType14"><i class="add_img"></i>주소록 등록</button>
+											<button type="button" class="excel_btn btnType"><i class="downroad"></i>엑셀 다운로드</button> -->
+											<p class="table_bottom_txt">* 전체건수를 클릭하면 받는 사람 상세정보를 확인하실 수 있습니다.</p>
+											<p class="table_bottom_txt" style="padding:5px 0 0 0;">* 대체문자 발송 성공 시, 성공건수로 집계됩니다.</p>
+										</div>
+										<div class="table_btn_right">
+											
+										</div>
+									</div>
+								</div>
+							</div>
+							<!--// 발송결과-->
+
+							
+						</div>
+						<!--// 발송결과 상세 정보 -->
+
+						<div class="resultcont_right" id="previewPhone">
+							<div class="phone">
+								<!-- 탭스타일 -->
+								<div class="list_tab_wrap2 type5">
+									<ul class="tabType3" id="tabType" name="tabType">
+										<li class="tab active"><button type="button" onclick="phoneTab(this,'1');" title="선택됨">카카오톡</button></li>
+										<!-- <li class="tab"><button type="button" onclick="phoneTab(this,'2');">대체문자</button></li> -->
+									</ul>
+								</div>
+								<!--// 탭스타일 -->
+
+								<!-- 카카오 알림톡 미리보기 -->
+								<div class="tab_phone current" id="tab_phone_1">
+									<div class="phone_kakako friendtalk">
+										<div class="phoneIn">
+											<p class="prev_p"><img src="/publish/images/content/kakao_prev_icon.png" alt="">@munjaon</p>
+											<!-- 텍스트 미리보기 -->
+											<div class="text_preview">
+		                                        <p class="friend_talk_title"><span>(광고)</span></p>
+		                                        <div class="allimtalk_content">
+		                                        
+		                                            <div class="kakao_image"><img src="/publish/images/content/kakao_img_basic.jpg" alt=""></div>
+		                                            <p class="template_text">홍길동 고객님 안녕하세요.
+		                                                문자온입니다.
+		                                                문자온에서는 재결제 고객님들께 다양한 이벤트를 준비하였으니, 방문하셔서 혜택 놓치지 마세요.</p>
+		                                            <button type="button" class="btn_kakao_type">문자온 바로가기</button>
+		                                        
+		                                        </div>
+		                                        <p class="kakao_block_text">수신거부 : 홈 > 채널차단</p>
+		                                    </div>
+										</div>
+										<p class="addText">※ 단말기 설정에 따라 다르게 보일 수 있습니다</p>
+									</div>
+								</div>
+								<!--// 카카오 알림톡 미리보기 -->
+
+								<!-- 대체문자 -->
+
+								<!-- 카카오 알림톡 미리보기 -->
+								<div class="tab_phone" id="tab_phone_2" style="display: none;position:relative;">
+									<div class="phone">
+										<div class="phoneIn">
+											<div>
+												<p class="prev_p"><img src="/publish/images/search.png">문자내용</p>
+												<div class="text_length2 clearfix" style="display:none;">
+													<span class="msg_com msg_short">단문</span>
+													<div>
+														<span>글자크기</span>
+														<button type="button"><img src="/publish/images/content/font_plus.png"></button>
+														<button type="button"><img src="/publish/images/content/font_minus.png"></button>
+													</div>
+												</div>
+												<div class="text_length2 clearfix" style="display:none;">
+													<span class="msg_com msg_long">장문</span>
+													<div>
+														<span>글자크기</span>
+														<button type="button"><img src="/publish/images/content/font_plus.png"></button>
+														<button type="button"><img src="/publish/images/content/font_minus.png"></button>
+													</div>
+												</div>
+												<div class="text_length2 clearfix">
+													<span class="msg_com msg_photo">
+														그림
+													</span>
+												</div>
+												<!-- 텍스트 미리보기 -->
+												<div class="text_preview">
+													<div class="preiew_img">
+														<div class="img_box">
+															<img src="/cmm/fms/getImage2.do?atchFileId=FILE_000000000013873&amp;fileSn=0" alt="발송된 그림문자 미리보기" style="width: 100%">
+														</div>
+													</div>
+													<div class="preview_auto">
+														<p class="ad_tit">(광고)</p>
+														<p class="realtime" id="smsTxt">
+															test
+														</p>
+														<p class="deny_receipt">무료거부 0808800858</p>
+													</div>
+												</div>
+												<!-- //텍스트 미리보기 -->
+											</div>
+										</div>
+										<p class="addText">※ 단말기 설정에 따라 다르게 보일 수 있습니다</p>
+									</div>
+								</div>
+								<!--// 카카오 알림톡 미리보기 -->
+								<!-- // 대체문자 -->
+
+							</div>
+						</div>
+
+						<!-- 발송결과 미리보기 -->
+						<div class="resultcont_right" style="display: none;">
+							<!-- 카카오 알림톡 미리보기 -->
+							<div class="phone_kakako">
+								<div class="phoneIn">
+									<p class="prev_p"><img src="/publish/images/content/kakao_prev_icon.png" alt="">@munjaon</p>
+									<!-- 텍스트 미리보기 -->
+									<div class="text_preview">
+										<div class="allimtalk_title">
+											<img src="/publish/images/content/icon_allimtalk.png" alt="">알림톡 도착
+										</div>
+										<div class="allimtalk_content">
+											<!--                                             <div class="kakao_image"> -->
+											<!--                                                 <img src="/publish/images/content/kakao_template_img.png" alt=""> -->
+											<!--                                             </div> -->
+											<p class="emphasis_side_text">강조표기 보조문구 미리보기</p>
+											<p class="emphasis_title_text">타이틀 미리보기</p>
+											<p class="template_text">내용미리보기</p>
+											<p class="side_info_text">부가정보내용</p>
+											<p class="channel_info_text">채널 추가 안내 메시지 미리보기</p>
+											<button type="button" class="btn_kakao_type">버튼명</button>
+											<button type="button" class="btn_kakao_type">버튼명</button>
+											<!--                                             <p class="emphasis_side_text">강조표기 보조문구 미리보기</p> -->
+											<!--                                             <p class="emphasis_title_text">타이틀 미리보기</p> -->
+											<!--                                             <p class="template_text">내용미리보기</p> -->
+											<!--                                             <p class="side_info_text">부가정보내용</p>  -->
+											<!--                                             <p class="channel_info_text">채널 추가 안내 메시지 미리보기</p> -->
+											<!--                                             <button type="button" class="btn_kakao_type">버튼명</button> -->
+											<!--                                             <button type="button" class="btn_kakao_type">버튼명</button> -->
+										</div>
+									</div>
+									<!-- //텍스트 미리보기 -->
+								</div>
+
+								<p class="addText">※ 단말기 설정에 따라 다르게 보일 수 있습니다<p>
+							</div>
+							<!--// 카카오 알림톡 미리보기 -->
+
+						</div>
+						<!--// 발송결과 미리보기 -->
+					</div>
+
+					<!--// 발송결과 상세 및 미리보기-->
+
+					<!-- 목록-->
+					<div class="btn_list_type1">
+						<button class="btnType btnType17">목록</button>
+					</div>
+					<!--// 목록-->
+
+				</div>
+			</div>
+			<!--// send top -->
+		</div>
+	</div>
+	<!--// content 영역 -->
+	<!-- footer 영역 -->
+	<div data-include-path="/publish/layout/_footer.html"></div>
+	<!--// footer 영역 -->
+</body>
+
+</html>(No newline at end of file)
src/main/webapp/publish/use_statement.html
--- src/main/webapp/publish/use_statement.html
+++ src/main/webapp/publish/use_statement.html
@@ -91,16 +91,14 @@
                     <p>(단위 : 원, 건)</p>
                     <div class="est_table2_wrap">
                         <table class="est_table2">
-                            <caption>사용일시, 문자유형, 발송건수, 사용금액을 제공하는 표</caption>
+                            <caption>문자유형, 발송건수, 사용금액을 제공하는 표</caption>
                             <colgroup>
-                                <col style="width:20%;">
-                                <col style="width:20%;">
-                                <col style="width:20%;">
-                                <col style="width:auto;">
+                                <col style="width:calc(100%/3);">
+                                <col style="width:calc(100%/3);">
+                                <col style="width:calc(100%/3);">
                             </colgroup>
                             <thead>
                                 <tr>
-                                    <th scope="col">사용일시</th>
                                     <th scope="col">문자유형</th>
                                     <th scope="col">발송건수</th>
                                     <th scope="col">사용금액</th>
@@ -108,28 +106,9 @@
                             </thead>
                             <tbody>
                                 <tr>
-                                    <td>2024-07-18 12:11</td>
-                                    <td>단문</td>
+                                    <td>브랜드(텍스트)</td>
                                     <td>1</td>
-                                    <td>75</td>
-                                </tr>
-                                <tr>
-                                    <td>2024-07-18 12:11</td>
-                                    <td>장문</td>
-                                    <td>2</td>
-                                    <td>64</td>
-                                </tr>
-                                <tr>
-                                    <td>2024-07-18 12:11</td>
-                                    <td>그림</td>
-                                    <td>1</td>
-                                    <td>59</td>
-                                </tr>
-                                <tr>
-                                    <td>2024-07-18 12:11</td>
-                                    <td>단문</td>
-                                    <td>1</td>
-                                    <td>75</td>
+                                    <td>20</td>
                                 </tr>
 
                             </tbody>
Add a comment
List