메뉴구조 1.2버전 적용

dev_tymeleaf
jangwonseokicom 2 years ago
parent 0651b8eff3
commit 49ee2b554e

@ -0,0 +1,122 @@
package com.icomsys.main_vm.biz.common.view;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@Slf4j
@RequiredArgsConstructor
@RequestMapping("/view/aiconsultation")
public class ViewAiconsultationController {
@GetMapping(value = "/scenario/intent")
public String aiconsultationscenariointent() {
return "layout/menu/aiconsultation/scenario/intent";
}
@GetMapping(value = "/scenario/synonym")
public String aiconsultationscenariosynonym() {
return "layout/menu/aiconsultation/scenario/synonym";
}
@GetMapping(value = "/scenario/systementity")
public String aiconsultationscenariosystementity() {
return "layout/menu/aiconsultation/scenario/systementity";
}
@GetMapping(value = "/scenario/userentity")
public String aiconsultationscenariouserentity() {
return "layout/menu/aiconsultation/scenario/userentity";
}
@GetMapping(value = "/scenario/scenariomanage")
public String aiconsultationscenarioscenariomanage() {
return "layout/menu/aiconsultation/scenario/scenariomanage";
}
@GetMapping(value = "/scenario/apinode")
public String aiconsultationscenarioapinode() {
return "layout/menu/aiconsultation/scenario/apinode";
}
@GetMapping(value = "/scenario/commonnode")
public String aiconsultationscenariocommonnode() {
return "layout/menu/aiconsultation/scenario/commonnode";
}
@GetMapping(value = "/counrec/intentanalyze")
public String aiconsultationcounrecintentanalyze() {
return "layout/menu/aiconsultation/counrec/intentanalyze";
}
@GetMapping(value = "/counrec/list")
public String aiconsultationcounreclist() {
return "layout/menu/aiconsultation/counrec/list";
}
@GetMapping(value = "/campaign/manage")
public String aiconsultationcampaignmanage() {
return "layout/menu/aiconsultation/campaign/manage";
}
@GetMapping(value = "/campaign/survey")
public String aiconsultationcampaignsurvey() {
return "layout/menu/aiconsultation/campaign/survey";
}
@GetMapping(value = "/campaign/user")
public String aiconsultationcampaignuser() {
return "layout/menu/aiconsultation/campaign/user";
}
@GetMapping(value = "/campaign/perform")
public String aiconsultationcampaignperform() {
return "layout/menu/aiconsultation/campaign/perform";
}
@GetMapping(value = "/monitoring/response")
public String aiconsultationmonitoringresponse() {
return "layout/menu/aiconsultation/monitoring/response";
}
@GetMapping(value = "/monitoring/bookmark")
public String aiconsultationmonitoringbookmark() {
return "layout/menu/aiconsultation/monitoring/bookmark";
}
@GetMapping(value = "/monitoring/breaknode")
public String aiconsultationmonitoringbreaknode() {
return "layout/menu/aiconsultation/monitoring/breaknode";
}
@GetMapping(value = "/setting/greeting")
public String aiconsultationsettinggreeting() {
return "layout/menu/aiconsultation/setting/greeting";
}
@GetMapping(value = "/setting/bgm")
public String aiconsultationsettingbgm() {
return "layout/menu/aiconsultation/setting/bgm";
}
@GetMapping(value = "/setting/holiday")
public String aiconsultationsettingholiday() {
return "layout/menu/aiconsultation/setting/holiday";
}
@GetMapping(value = "/setting/tts")
public String aiconsultationsettingtts() {
return "layout/menu/aiconsultation/setting/tts";
}
@GetMapping(value = "/setting/nlp")
public String aiconsultationsettingnlp() {
return "layout/menu/aiconsultation/setting/nlp";
}
@GetMapping(value = "/realtimemonitoring")
public String aiconsultationrealtimemonitoring() {
return "layout/menu/aiconsultation/realtimemonitoring";
}
}

@ -0,0 +1,23 @@
package com.icomsys.main_vm.biz.common.view;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@Slf4j
@RequiredArgsConstructor
@RequestMapping("/view/monitoring")
public class ViewMonitoringController {
@GetMapping(value = "/aitraffic")
public String monitoringaitraffic() {
return "layout/menu/monitoring/aitraffic";
}
}

@ -0,0 +1,75 @@
package com.icomsys.main_vm.biz.common.view;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@Slf4j
@RequiredArgsConstructor
@RequestMapping("/view/statistics")
public class ViewStatisticsController {
@GetMapping(value = "/counrec/ai")
public String statisticsCounrecAi() {
return "layout/menu/statistics/counrec/ai";
}
@GetMapping(value = "/counrec/call")
public String statisticsCounrecCall() {
return "layout/menu/statistics/counrec/call";
}
@GetMapping(value = "/counrec/intentday")
public String statisticsCounrecIntentday() {
return "layout/menu/statistics/counrec/intentday";
}
@GetMapping(value = "/counrec/intentitem")
public String statisticsCounrecIntentitem() {
return "layout/menu/statistics/counrec/intentitem";
}
@GetMapping(value = "/counrec/scenarioday")
public String statisticsCounrecScenarioday() {
return "layout/menu/statistics/counrec/scenarioday";
}
@GetMapping(value = "/counrec/scenarioitem")
public String statisticsCounrecScenarioitem() {
return "layout/menu/statistics/counrec/scenarioitem";
}
@GetMapping(value = "/campaign/category")
public String statisticsCampaignCategory() {
return "layout/menu/statistics/campaign/category";
}
@GetMapping(value = "/campaign/day")
public String statisticsCampaignDay() {
return "layout/menu/statistics/campaign/day";
}
@GetMapping(value = "/campaign/tbd")
public String statisticsCampaignTbd() {
return "layout/menu/statistics/campaign/tbd";
}
@GetMapping(value = "/vdo/month")
public String statisticsVdoMonth() {
return "layout/menu/statistics/vdo/month";
}
@GetMapping(value = "/vdo/day")
public String statisticsVdoDay() {
return "layout/menu/statistics/vdo/day";
}
}

@ -0,0 +1,38 @@
package com.icomsys.main_vm.biz.common.view;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@Slf4j
@RequiredArgsConstructor
@RequestMapping("/view/test")
public class ViewTestController {
@GetMapping(value = "/aicoun")
public String testAicoun() {
return "layout/menu/test/aicoun";
}
@GetMapping(value = "/inference")
public String testInference() {
return "layout/menu/test/inference";
}
@GetMapping(value = "/stt")
public String testStt() {
return "layout/menu/test/stt";
}
@GetMapping(value = "/tts")
public String testTts() {
return "layout/menu/test/tts";
}
}

@ -0,0 +1,31 @@
package com.icomsys.main_vm.biz.common.view;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@Slf4j
@RequiredArgsConstructor
@RequestMapping("/view/vdo")
public class ViewVdoController {
@GetMapping(value = "/contents")
public String vdoContents() {
return "layout/menu/vdo/contents";
}
@GetMapping(value = "/main")
public String vdoMain() {
return "layout/menu/vdo/main";
}
@GetMapping(value = "/history")
public String vdoHistory() {
return "layout/menu/vdo/history";
}
}

@ -0,0 +1,26 @@
package com.icomsys.main_vm.biz.common.view;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@Slf4j
@RequiredArgsConstructor
@RequestMapping("/view/vg")
public class ViewVgController {
@GetMapping(value = "/manage")
public String vdoContents() {
return "layout/menu/vg/manage";
}
@GetMapping(value = "/monitoring")
public String vdoMain() {
return "layout/menu/vg/monitoring";
}
}

@ -70,31 +70,31 @@ public enum MenuResource {
vdomain("vdo", 1300200L, 1300000L, 3, "영상상담", "영상상담", "/view/vdo/main"),
vdohistory("vdo", 1300300L, 1300000L, 3, "상담 이력", "상담 이력", "/view/vdo/history"),
vg("vg", 1400000L, 1L, 2, "Voice Gateway", "Voice Gateway", "0"),
vgmanage("vg", 1400100L, 1400000L, 3, "Voice Gateway 관리", "Voice Gateway 관리", "/view/vgmanage"),
vgmanage("vg", 1400100L, 1400000L, 3, "Voice Gateway 관리", "Voice Gateway 관리", "/view/vg/manage"),
vgmonitoring("vg", 1400200L, 1400000L, 3, "Voice Gateway 모니터링", "Voice Gateway 모니터링", "/view/vg/monitoring"),
test("test", 1500000L, 1L, 2, "테스트", "테스트", "0"),
testaicoun("test", 1500100L, 1500000L, 3, "AI상담 시뮬레이터", "AI상담 시뮬레이터", "/view/test/aicoun"),
testinference("test", 1500200L, 1500000L, 3, "의도추론 테스트", "의도추론 테스트", "/view/test/inference"),
teststt("test", 1500300L, 1500000L, 3, "STT 테스트", "STT 테스트", "/view/test/stt"),
testtts("test", 1500400L, 1500000L, 2, "TTS 테스트", "TTS 테스트", "/view/testtts"),
testtts("test", 1500400L, 1500000L, 2, "TTS 테스트", "TTS 테스트", "/view/test/tts"),
statistics("statistics", 1600000L, 1L, 2, "통계", "통계", "0"),
statisticscounrec("statistics", 1600100L, 1600000L, 3, "상담/접수", "상담/접수", "0"),
statisticscounrecintentday("statistics", 1600101L, 1600100L, 4, "인텐트날짜별 현황", "인텐트날짜별 현황", "/view/statistics/counrec/intentday"),
statisticscounrecintentitem("statistics", 1600102L, 1600100L, 4, "인텐트항목별 현황", "인텐트항목별 현황", "/view/statistics/counrec/intentitem"),
statisticscounrecscenarioday("statistics", 1600103L, 1600100L, 4, "시나리오날짜별 현황", "시나리오날짜별 현황", "/view/statistics/counrec/scenarioday"),
statisticscounrecscenarioitem("statistics", 1600104L, 1600100L, 4, "시나리오항목별 현황", "시나리오항목별 현황", "/view/statisticscounrec/scenarioitem"),
statisticscounrecscenarioitem("statistics", 1600104L, 1600100L, 4, "시나리오항목별 현황", "시나리오항목별 현황", "/view/statistics/counrec/scenarioitem"),
statisticscounreccall("statistics", 1600105L, 1600100L, 4, "콜 통계", "콜 통계", "/view/statistics/counrec/call"),
statisticscounrecai("statistics", 1600106L, 1600100L, 4, "AI 통계", "AI 통계", "/view/statistics/counrec/ai"),
statisticscampaign("statistics", 1600200L, 1600000L, 3, "캠페인", "캠페인", "0"),
statisticscampaignday("statistics", 1600201L, 1600200L, 4, "캠페인 날짜별현황", "캠페인 날짜별현황", "/view/statistics/campaign/day"),
statisticscampaigncategory("statistics", 1600202L, 1600200L, 4, "켐페인 유형별현황", "켐페인 유형별현황", "/view/statisticscampaign/category"),
statisticscampaigncategory("statistics", 1600202L, 1600200L, 4, "켐페인 유형별현황", "켐페인 유형별현황", "/view/statistics/campaign/category"),
statisticscampaigntbd("statistics", 1600203L, 1600200L, 4, "TBD", "TBD", "/view/statistics/campaign/tbd"),
statisticsvdo("statistics", 1600300L, 1600000L, 3, "영상상담", "영상상담", "0"),
statisticsvdomonth("statistics", 1600301L, 1600300L, 4, "월별 현황", "월별 현황", "/view/statistics/vdo/month"),
statisticsvdoday("statistics", 1600302L, 1600300L, 4, "일자별 현황", "일자별 현황", "/view/statistics/vdo/day"),
monitoring("monitoring", 1800000L, 1L, 2, "모니터링", "모니터링", "0"),
monitoringaitraffic("monitoring", 1800100L, 1800000L, 3, "AI 트래픽 모니터링", "AI 트래픽 모니터링", "/view/monitoring/aitraffic"),
dashboard("dashboard", 9000000L, 1L, 2, "대시보드", "대시보드", "/view/main"),
// dashboard("dashboard", 9000000L, 1L, 2, "대시보드", "대시보드", "/view/main"),
system("system", 9100000L, 1L, 2, "시스템 관리", "시스템 관리", "0"),
systemserviceteam("system", 9100100L, 9100000L, 3, "서비스팀 관리", "서비스팀 관리", "/view/system/serviceteam"),
systemgroupauth("system", 9100200L, 9100000L, 3, "그룹별 권한관리", "그룹별 권한관리", "/view/system/groupauth"),
@ -216,7 +216,7 @@ public enum MenuResource {
statisticsvdoday,
monitoring,
monitoringaitraffic,
dashboard,
// dashboard,
system,
systemserviceteam,
systemgroupauth,

@ -94,7 +94,7 @@ public enum PolicyResource {
statisticsvdodayRead(MenuResource.statisticsvdoday,"일자별 현황읽기권한","Y",1,Arrays.asList()),
monitoringRead(MenuResource.monitoring,"모니터링읽기권한","Y",1,Arrays.asList()),
monitoringaitrafficRead(MenuResource.monitoringaitraffic,"AI 트래픽 모니터링읽기권한","Y",1,Arrays.asList()),
dashboardRead(MenuResource.dashboard,"대시보드읽기권한","Y",1,Arrays.asList()),
// dashboardRead(MenuResource.dashboard,"대시보드읽기권한","Y",1,Arrays.asList()),
systemRead(MenuResource.system,"시스템 관리읽기권한","Y",10000,Arrays.asList()),
systemserviceteamRead(MenuResource.systemserviceteam,"서비스팀 관리읽기권한","Y",10000,Arrays.asList()),
systemgroupauthRead(MenuResource.systemgroupauth,"그룹별 권한관리읽기권한","Y",10000,Arrays.asList()),
@ -301,7 +301,7 @@ public enum PolicyResource {
statisticsvdodayRead,
monitoringRead,
monitoringaitrafficRead,
dashboardRead,
// dashboardRead,
systemRead,
systemserviceteamRead,
systemgroupauthRead,

@ -0,0 +1,12 @@
<html xmlns:th="http://www.thymeleaf.org">
<section id="Content" class="system_management">
<br>
<br>
<br>
<br>
<br>
<p> 캠페인관리</p>
</section>
</html>

@ -0,0 +1,12 @@
<html xmlns:th="http://www.thymeleaf.org">
<section id="Content" class="system_management">
<br>
<br>
<br>
<br>
<br>
<p> 캠페인 수행리스트</p>
</section>
</html>

@ -0,0 +1,12 @@
<html xmlns:th="http://www.thymeleaf.org">
<section id="Content" class="system_management">
<br>
<br>
<br>
<br>
<br>
<p> 캠페인 설문</p>
</section>
</html>

@ -0,0 +1,12 @@
<html xmlns:th="http://www.thymeleaf.org">
<section id="Content" class="system_management">
<br>
<br>
<br>
<br>
<br>
<p> 캠페인고객관리</p>
</section>
</html>

@ -0,0 +1,12 @@
<html xmlns:th="http://www.thymeleaf.org">
<section id="Content" class="system_management">
<br>
<br>
<br>
<br>
<br>
<p> 인텐트 분석 관리</p>
</section>
</html>

@ -0,0 +1,12 @@
<html xmlns:th="http://www.thymeleaf.org">
<section id="Content" class="system_management">
<br>
<br>
<br>
<br>
<br>
<p> 상담/접수 리스트</p>
</section>
</html>

@ -0,0 +1,12 @@
<html xmlns:th="http://www.thymeleaf.org">
<section id="Content" class="system_management">
<br>
<br>
<br>
<br>
<br>
<p> 대화책갈피</p>
</section>
</html>

@ -0,0 +1,12 @@
<html xmlns:th="http://www.thymeleaf.org">
<section id="Content" class="system_management">
<br>
<br>
<br>
<br>
<br>
<p> 시나리오이탈노드</p>
</section>
</html>

@ -0,0 +1,12 @@
<html xmlns:th="http://www.thymeleaf.org">
<section id="Content" class="system_management">
<br>
<br>
<br>
<br>
<br>
<p> 응대이력</p>
</section>
</html>

@ -0,0 +1,34 @@
<head>
<meta charset="UTF-8">
<title>실시간모니터링</title>
</head>
<body>
<h1>ICOMSYS ADMIN</h1>
<h1>실시간모니터링</h1>
<div class="skip_navigation">
<ul>
<li>
<a href="#Content" class="go_content">본문 바로가기</a>
</li>
<li>
<a href="#Gnb">메뉴 바로가기</a>
</li>
</ul>
</div>
<section id="Content" class="system_management">
<div class="location">
<ul>
<li class="home"><a href="#">HOME</a></li>
<li><a href="#">고객사관리</a></li>
<li><a href="#">실시간모니터링</a></li>
</ul>
</div>
</section>
</body>
<script>
</script>

@ -0,0 +1,329 @@
<%--
Created by IntelliJ IDEA.
User: Mong
Date: 2023-02-02
Time: PM 3:58
To change this template use File | Settings | File Templates.
--%>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>API NODE</title>
<%@ include file="/WEB-INF/jsp/adm/include/topLinkTag.jsp" %>
</head>
<body>
<h1>ICOMSYS ADMIN</h1>
<h1>API NODE</h1>
<div class="skip_navigation">
<ul>
<li>
<a href="#Content" class="go_content">본문 바로가기</a>
</li>
<li>
<a href="#Gnb">메뉴 바로가기</a>
</li>
</ul>
</div>
<header id="header">
<%@ include file="/WEB-INF/jsp/adm/include/header.jsp" %>
</header>
<c:import url="/adm/menu/getLnbMenu.do"/>
<script src="<c:url value='/js/adm/rcp/conversation/apiNodeEdit.js' />"></script>
<script src="<c:url value='/js/adm/rcp/conversation/common.js' />"></script>
<script type="text/javascript">
</script>
<section id="Content" class="bot_common">
<div class="location">
<ul>
<li class="home"><a href="#">HOME</a></li>
<li><a href="#">대화관리</a></li>
<li><a href="#">API노드관리</a></li>
</ul>
</div>
<!-- TODO: 래부터 신규 컨텐츠 마크업 입니다. -->
<form name="apiDataForm" id="apiDataForm">
<div class="sub_cont">
<div class="tbl">
<table class="search block">
<colgroup>
<col width="140px">
<col width="auto">
<col width="140px">
<col width="auto">
</colgroup>
<tbody>
<tr>
<th class="tl">시나리오그룹</th>
<td class="tl">
<div class="sel_box">
<select id="serviceGroup" class="wide">
</select>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<div class="cont_box">
<div class="box_title">
<div class="fl">
<h2 id="apiNodeTitle" class="mt12">API Node 편집</h2>
</div>
</div>
<div class="tbl">
<table class="edit hght">
<colgroup>
<col width="150px">
<col width="auto">
</colgroup>
<tbody>
<tr>
<th class="tl">API Node명 </th>
<td>
<div class="ipt_box">
<input id="APINodeName" type="text" value="" name="apiNodeName" class="">
</div>
</td>
</tr>
<tr>
<th class="tl">URL</th>
<td>
<div class="ipt_box type-flex">
<div class="sel_box">
<select id="urlSelect" class="" name="urlType">
<option value="GET">GET</option>
<option value="POST">POST</option>
</select>
</div>
<input id="APINodeUrl" type="text" value="http://" name="URL">
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="cont_box" id="apiNodeGetEdit">
<div class="box_title">
<div class="fl">
<h2 class="mt12">API Node Parameter 설정</h2>
</div>
</div>
<div class="dashedline createTrInputWrapper">
<div class="box_title sub">
<div class="fl">
<h2 class="mt12">Header</h2>
</div>
<div class="fr">
<a href="#" class="btn btn-sm createTrInputAdd api-header">+추가</a>
</div>
</div>
<div class="tbl">
<table id="headerTable" class="edit hght">
<colgroup>
<col width="auto">
<col width="auto">
<col width="40%">
</colgroup>
<tbody class="createTrInput">
<tr>
<td>
<div class="ipt_box">
<input type="text" placeholder="key" name="header[0][key]">
</div>
</td>
<td>
<div class="ipt_box">
<input type="text" placeholder="value" name="header[0][value]">
</div>
</td>
<td>
<div class="ipt_box type-flex">
<input type="text" placeholder="Description" name="header[0][desc]">
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="cont_box">
<div class="dashedline first createTrInputWrapper">
<div class="box_title sub">
<div class="fl">
<h2 class="mt12">Query Parameter</h2>
</div>
<div class="fr">
<a href="#" class="btn btn-sm createTrInputAdd api-param">+추가</a>
</div>
</div>
<div class="tbl">
<table id="paramTable" class="edit hght">
<colgroup>
<col width="auto">
<col width="auto">
<col width="40%">
</colgroup>
<tbody class="createTrInput">
<tr>
<td>
<div class="ipt_box">
<input type="text" placeholder="key" name="param[0][key]">
</div>
</td>
<td>
<div class="ipt_box">
<input type="text" placeholder="value" name="param[0][value]">
</div>
</td>
<td>
<div class="ipt_box type-flex">
<input type="text" placeholder="Description" name="param[0][desc]">
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="cont_box" id="apiPostBodyContents" style="display: none">
<div class="dashedline first createTrInputWrapper">
<div class="box_title sub">
<div class="fl">
<h2 class="mt12">Body</h2>
</div>
</div>
<div class="tbl">
<table id="bodyTable" class="edit hght">
<colgroup>
<col width="auto">
</colgroup>
<tbody>
<tr>
<td>
<div class="ipt_box">
<textarea name="body" id="apiBody" cols="30" rows="10"></textarea>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="cont_box">
<div class="box_title">
<div class="fl">
<h2 class="mt12">API Node 변수 설정</h2>
</div>
</div>
<div class="dashedline createTrInputWrapper">
<div class="box_title sub">
<div class="fl">
<h2 class="mt12">Request</h2>
</div>
<div class="fr">
<a href="#" class="btn btn-sm createTrInputAdd api-request">+추가</a>
</div>
</div>
<div class="tbl">
<table id="reqTable" class="edit hght">
<colgroup>
<col width="auto">
<col width="auto">
<col width="40%">
</colgroup>
<tbody class="createTrInput">
<tr>
<td colspan="2">
<div class="ipt_box">
<input type="text" placeholder="value" name="request[0][value]">
</div>
</td>
<td>
<div class="ipt_box type-flex">
<input type="text" placeholder="Description" name="request[0][desc]">
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="dashedline createTrInputWrapper">
<div class="box_title sub">
<div class="fl">
<h2 class="mt12">Response</h2>
</div>
<div class="fr">
<a href="#" class="btn btn-sm createTrInputAdd api-response">+추가</a>
</div>
</div>
<div class="tbl">
<table id="resTable" class="edit hght">
<colgroup>
<col width="auto">
<col width="auto">
<col width="40%">
</colgroup>
<tbody class="createTrInput">
<tr>
<td>
<div class="ipt_box">
<input type="text" placeholder="value" name="response[0][key]">
</div>
</td>
<td>
<div class="ipt_box">
<input type="text" placeholder="value" name="response[0][value]">
</div>
</td>
<td>
<div class="ipt_box type-flex">
<input type="text" placeholder="Description" name="response[0][desc]">
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="cont_box">
<div class="btn_wrap fr">
<a id="btnCancel" href="#" class="btn basic grey">취소</a>
<a id="btnSave" href="#" class="btn basic">저장</a>
</div>
</div>
</div>
</form>
<input type="hidden" id="apiUrl" value="<c:out value="${url}"/>"/>
<input type="hidden" id="apiSeq" value="<c:out value="${seq}"/>"/>
<input type="hidden" id="apiServiceGroup" value="<c:out value="${serviceGroup}"/>"/>
</section>
</body>
</html>

@ -0,0 +1,124 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>API NODE</title>
<%@ include file="/WEB-INF/jsp/adm/include/topLinkTag.jsp"%>
<script src="<c:url value='/js/adm/rcp/conversation/apiNode.js' />"></script>
<script src="<c:url value='/js/adm/rcp/conversation/common.js' />"></script>
</head>
<body>
<h1>ICOMSYS ADMIN</h1>
<h1>API NODE</h1>
<div class="skip_navigation">
<ul>
<li>
<a href="#Content" class="go_content">본문 바로가기</a>
</li>
<li>
<a href="#Gnb">메뉴 바로가기</a>
</li>
</ul>
</div>
<header id="header">
<%@ include file="/WEB-INF/jsp/adm/include/header.jsp"%>
</header>
<c:import url="/adm/menu/getLnbMenu.do" />
<script type="text/javascript">
</script>
<section id="Content" class="bot_common">
<div class="location">
<ul>
<li class="home"><a href="#">HOME</a></li>
<li><a href="#">대화관리</a></li>
<li><a href="#">API노드관리</a></li>
</ul>
</div>
<!-- TODO: 아래부터 신규 컨텐츠 마크업 입니다. -->
<div id="apiContent" class="sub_cont">
<div class="cont_box">
<div class="box_title">
<div class="fl">
<h2 class="mt12">API Node 관리</h2>
</div>
<div class="fr">
<div class="btn_wrap fl">
<a id="btnSearchApi" href="#" class="btn">조회</a>
</div>
</div>
</div>
<div class="tbl">
<table class="search block">
<colgroup>
<col width="140px">
<col width="auto">
<col width="140px">
<col width="auto">
</colgroup>
<tbody>
<tr>
<th class="tl">시나리오그룹</th>
<td class="tl">
<div class="sel_box">
<select id="serviceGroup" class="wide">
</select>
</div>
</td>
<th class="tl">API Node명</th>
<td class="tl">
<input id="nodeName" type="text" placeholder="API Node명을 입력해주세요." name="code" class="">
</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="cont_box">
<div class="box_title">
<div class="fl">
<h2 class="mt12">API Node 리스트</h2>
</div>
<div class="btn_wrap fr">
<a href="#" id="createApi" class="btn line">등록</a>
</div>
</div>
<div class="tbl">
<table id="resultTable" class="click">
<thead>
<tr>
<th>seq</th>
<th>APINode명</th>
<th>수정일</th>
<th>수정자</th>
<th>삭제</th>
</tr>
</thead>
<tbody>
<tr>
<td></td>
<td>GET</td>
<td>{{YYYY-MM-DD HH:MM:SS}}</td>
<td>{{string}}</td>
<td><a href="#" class="btn btn-sm red">삭제</a></td>
</tr>
<tr>
<td></td>
<td><a href="#">POST</a></td>
<td>{{YYYY-MM-DD HH:MM:SS}}</td>
<td>{{string}}</td>
<td><a href="#" class="btn btn-sm red">삭제</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</section>
</body>
</html>

@ -0,0 +1,131 @@
<%--
Created by IntelliJ IDEA.
User: Mong
Date: 2023-02-03
Time: AM 9:21
To change this template use File | Settings | File Templates.
--%>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Common Node</title>
<%@ include file="/WEB-INF/jsp/adm/include/topLinkTag.jsp" %>
<script src="<c:url value='/js/adm/rcp/conversation/cmmNodeEdit.js' />"></script>
<script src="<c:url value='/js/adm/rcp/conversation/scenarioNodePopup.js' />"></script>
<script src="<c:url value='/js/adm/rcp/conversation/common.js' />"></script>
<script src="<c:url value='/js/utils.js' />"></script>
<script src="<c:url value='/js/lib/crypto-js/aes.js' />"></script>
</head>
<body>
<style>
article {
/* 임시로 getLnbMenu를 dxdiagram popup content보다 높게 설정함 */
z-index: 1503 !important;
}
</style>
<h1>ICOMSYS ADMIN</h1>
<h1>API NODE</h1>
<div class="skip_navigation">
<ul>
<li>
<a href="#Content" class="go_content">본문 바로가기</a>
</li>
<li>
<a href="#Gnb">메뉴 바로가기</a>
</li>
</ul>
</div>
<header id="header">
<%@ include file="/WEB-INF/jsp/adm/include/header.jsp" %>
</header>
<c:import url="/adm/menu/getLnbMenu.do"/>
<section id="Content" class="bot_common">
<div class="location">
<ul>
<li class="home"><a href="#">HOME</a></li>
<li><a href="#">대화관리</a></li>
<li><a href="#">Common노드관리</a></li>
</ul>
</div>
<!-- TODO: 래부터 신규 컨텐츠 마크업 입니다. -->
<div id="editScenario" class="scenario">
<div class="sub_cont ov-unset">
<div class="box_title panel-tit">
<div class="fl">
<h2 class="" id="cmmNodeInfo" seq="<c:out value="${seq}"/>" checksum="0"></h2>
<div class="side-input-item">
<label for="">시나리오 그룹</label>
<div class="sel_box">
<select id="serviceGroup" class="wide">
</select>
</div>
</div>
<div class="side-input-item">
<label for="">Node명</label>
<input id="nodeName" type="text">
</div>
</div>
<div class="fr">
<div class="btn_wrap fl">
<div class="side-input-item">
<%-- <label for="">Node명</label>--%>
<%-- <input id="nodeName" type="text">--%>
</div>
<div class="toggleBtn-set">
</div>
<div class="toggleBtn-set">
<input type="hidden" name="" id="nodeType"/>
</div>
<a id="btnCancel" href="#" class="btn grey">취소</a>
<a id="btnSave" href="#" class="btn">저장</a>
</div>
</div>
</div>
</div>
<div class="cont_box">
<div class="component-diagram">
<!-- <ul class="diagram-tab">
<li><a href="#" class="tabVariable">VAR</a></li>
<li><a href="#" class="tabTest">TEST</a></li>
</ul> -->
<div class="diagram-panel">
<div id="diagram" class="exComp"></div>
<div id="popup"></div>
<input type="hidden" id="editFlag" value="<c:out value="${flag}"/>">
</div>
<div class="diagram-variable diagram-tab-panel">
<div class="diagram-tab-panel-head">
<div class="diagram-tab-panel-head-title">변수목록</div>
<div class="diagram-tab-panel-head-side">
<ul class="list-option">
<li><a href="#" class="refresh" title="새로고침" onclick="ViewEvent.ScenarioVarList(true)"></a></li>
<li><a href="#" class="close tabVariableClose" title="닫기"></a></li>
</ul>
</div>
</div>
<div id="scenarioVarList" class="variable-test">
<ul>
</ul>
</div>
</div>
</div>
</div>
</div>
</section>
<input type="hidden" id="cmmUrl" value="<c:out value="${url}"/>"/>
<input type="hidden" id="cmmSeq" value="<c:out value="${seq}"/>"/>
<input type="hidden" id="cmmServiceGroup" value="<c:out value="${serviceGroup}"/>"/>
</body>
</html>

@ -0,0 +1,121 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>COMMON NODE</title>
<%@ include file="/WEB-INF/jsp/adm/include/topLinkTag.jsp"%>
<script src="<c:url value='/js/adm/rcp/conversation/cmmNode.js' />"></script>
<script src="<c:url value='/js/adm/rcp/conversation/common.js' />"></script>
</head>
<body>
<h1>ICOMSYS ADMIN</h1>
<div class="skip_navigation">
<ul>
<li>
<a href="#Content" class="go_content">본문 바로가기</a>
</li>
<li>
<a href="#Gnb">메뉴 바로가기</a>
</li>
</ul>
</div>
<header id="header">
<%@ include file="/WEB-INF/jsp/adm/include/header.jsp"%>
</header>
<c:import url="/adm/menu/getLnbMenu.do" />
<section id="Content" class="bot_common">
<div class="location">
<ul>
<li class="home"><a href="#">HOME</a></li>
<li><a href="#">대화관리</a></li>
<li><a href="#">Common Node 관리</a></li>
</ul>
</div>
<!-- TODO: 래부터 신규 컨텐츠 마크업 입니다. -->
<div class="sub_cont">
<div class="cont_box">
<div class="box_title">
<div class="fl">
<h2 class="mt12">Common Node 관리</h2>
</div>
<div class="fr">
<div class="btn_wrap fl">
<a id="btnSearchCmm" href="#" class="btn">조회</a>
</div>
</div>
</div>
<div class="tbl">
<table class="search block">
<colgroup>
<col width="160px">
<col width="auto">
<col width="160px">
<col width="auto">
</colgroup>
<tbody>
<tr>
<th class="tl">시나리오그룹</th>
<td class="tl">
<div class="sel_box">
<select id="serviceGroup" class="wide">
</select>
</div>
</td>
<th class="tl">Common Node명</th>
<td class="tl">
<input id="nodeName" type="text" placeholder="Common Node명을 입력해주세요." name="code" class="">
</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="cont_box">
<div class="box_title">
<div class="fl">
<h2 class="mt12">Common Node 리스트</h2>
</div>
<div class="btn_wrap fr">
<a href="#" id="createCmm" class="btn line">등록</a>
</div>
</div>
<div class="tbl">
<table id="resultTable" class="click">
<colgroup>
<col width="auto">
<col width="200px">
<col width="200px">
<col width="140px">
</colgroup>
<thead>
<tr>
<th>seq</th>
<th>Common Node명</th>
<th>수정일</th>
<th>수정자</th>
<th>삭제</th>
</tr>
</thead>
<tbody>
<tr>
<td></td>
<td><a href="#"><b>{{string}}:GET</b></a></td>
<td>{{YYYY-MM-DD HH:MM:SS}}</td>
<td>{{string}}</td>
<td><a href="#" class="btn btn-sm red btnDeleteCmm">삭제</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</section>
</body>
</html>

@ -0,0 +1,297 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>금칙어 관리</title>
<%@ include file="/WEB-INF/jsp/adm/include/topLinkTag.jsp"%>
</head>
<body>
<h1>ICOMSYS ADMIN</h1>
<div class="skip_navigation">
<ul>
<li>
<a href="#Content" class="go_content">본문 바로가기</a>
</li>
<li>
<a href="#Gnb">메뉴 바로가기</a>
</li>
</ul>
</div>
<header id="header">
<%@ include file="/WEB-INF/jsp/adm/include/header.jsp"%>
</header>
<c:import url="/adm/menu/getLnbMenu.do" />
<%-- 업로드 결과 --%>
<script>
<c:if test="${not empty message}">
<c:if test="${result}">
$.utils.success('${message}');
</c:if>
<c:if test="${!result}">
$.utils.error('${message}');
</c:if>
</c:if>
</script>
<script type="text/javascript" src="<c:url value='/aajs/dictionary.js' />"></script>
<!-- 컨텐트 시작 -->
<section id="Content" class="conversation">
<div class="cont_top">
<div class="location">
<ul>
<li class="home">
<a href="#">HOME</a>
</li>
<li>
<a href="#">대화관리</a>
</li>
<li>
<a href="#">금칙어 관리</a>
</li>
</ul>
</div>
</div>
<div class="sub_cont">
<div class="cont_box">
<div class="box_title">
<div class="fl">
<h2 class="mt12">금칙어 관리</h2>
</div>
<div class="fr">
<dl class="customer fl">
<dt class="fl">
<c:if test="${'SYS_ADMIN'==LoginVO.authCode}">
고객사 :
</c:if>
</dt>
<dd class="fl">
<div class="sel_box">
<c:choose>
<c:when test="${'SYS_ADMIN'==LoginVO.authCode}">
<select class="top" name="custCode" id="custCode">
<c:forEach var="siteInfo" items="${siteLists}"
varStatus="status">
<option value="<c:out value="${siteInfo.custCode}"/>"><c:out
value="${siteInfo.custName}" /></option>
</c:forEach>
</select>
</c:when>
<c:otherwise>
<input name="custCode" id="custCode" type="hidden"
value="${LoginVO.siteCode}" />
</c:otherwise>
</c:choose>
</div>
</dd>
</dl>
<%-- <dl class="customer fl">
<dt class="fl">고객사 :</dt>
<dd class="fl">
<div class="sel_box">
<select onchange="fncServiceList(this)" class="top" id="selectCustName" name="selectCustName" title="검색조건-고객사">
<option value="">고객사 선택</option>
<c:forEach var="siteInfo" items="${siteLists}" varStatus="status">
<option value="<c:out value="${siteInfo.custCode}"/>"><c:out value="${siteInfo.custName}" /></option>
</c:forEach>
</select>
</div>
</dd>
</dl> --%>
<div class="btn_wrap fl">
<a href="#" class="btn" onclick="fncSendData();">조회</a>
</div>
</div>
</div>
<div class="tbl">
<form id="searchInfo">
<table class="search table-fixed">
<colgroup>
<col width="130px">
<col>
<col width="130px">
<col>
</colgroup>
<tbody>
<tr>
<th class="tl">서비스 명</th>
<td class="tl">
<div class="sel_box" id="selOprMng">
<select class="wide" id="oprMngName" name="oprMngCode">
<option value="">서비스 선택</option>
</select>
</div>
</td>
<th class="tl">대표어</th>
<td class="tl">
<input type="text" placeholder="대표어" id="oprMngName1" class="form-control">
</td>
</tr>
</tbody>
</table>
</form>
</div>
</div>
<div class="cont_box">
<div class="box_title">
<div class="fl">
<h2 class="mt12">금칙어 리스트</h2>
</div>
<div class="btn_wrap fr">
<a href="javascript:dictionaryGroup();" rel="dictionary_management_modal" class="btn line modalLoad">금칙어 그룹 관리</a>
<%-- <a href="javascript:downDictionary();" class="btn">금칙어 다운로드</a>--%>
<%-- <a href="#" rel="dictionary_upload_modal" class="btn modalLoad">금칙어 업로드</a>--%>
</div>
</div>
<div id="resultTable_wrapper" class="tbl">
<table id="resultTable" class="table-fixed" aria-describedby="resultTable_info" role="grid">
<colgroup>
<col width="20">
<col width="20%">
<col width="60%">
</colgroup>
<thead>
<tr>
<th>금칙어 그룹</th>
<th>대표어</th>
<th>용어</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
</div>
<div class="btn-side">
<div class="btn_wrap fr">
<a id="btnSave" href="#" class="btn" onclick="fncAdd();">추가</a>
<!-- <a id="btnSave" href="#" class="btn blue" onclick="fncSaveList();">저장</a> -->
</div>
</div>
</div>
</div>
</section>
<!-- 컨텐트 끝 -->
<!-- modal :: 사전 업로드 안내 팝업-->
<div class="modal" id="dictionary_upload_modal" tabindex="-1">
<div class="modal-dialog modal-lg">
<div class="modal_header">
<h3>금칙어 업로드 안내</h3>
</div>
<div class="modal_body">
<div class="modal_cont">
<div class="text-right">
<a href="/document/dictionary.xlsx" class="btn" download="금칙어 업로드 샘플">샘플 다운로드</a>
</div>
<div class="my-5">
<ul class="dot-list">
<li>업로드는 Excel 파일만 가능합니다.</li>
<li>파일 작성 방법은 [샘플 다운로드] 버튼을 선택하시고 샘플 파일을 다운받아 [작성방법] sheet를 참고해주세요.</li>
<li>파일 당 최대 3MB까지 업로드 할 수 있습니다.</li>
<li>파일명은 최대 70자까지 허용합니다.</li>
</ul>
</div>
<div class="title-sm">금칙어 파일 업로드</div>
<div class="tbl">
<form id="fileUploadForm" name="fileUploadForm" enctype="multipart/form-data" method="POST" action="<c:url value='/admin/conversation/dictionary/uploadSynonym.do'/>">
<table class="search">
<colgroup>
<col width="130px">
<col>
</colgroup>
<tbody>
<tr>
<th class="tl">파일선택</th>
<td class="tl">
<div class="file_upload">
<!-- view input -->
<input class="upload_name" value="파일을 선택해주세요" disabled="disabled">
<!-- upload input -->
<input type="file" name="csvFile" id="file" class="upload_hidden" accept="application/vnd.ms-excel, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" multiple onchange="uploadFileChange(this);">
<input type="hidden" name="serviceCode">
<label for="file" class="btn line">파일선택</label>
<button type="reset" class="btn ml-1">삭제</button>
</div>
</td>
</tr>
</tbody>
</table>
</form>
</div>
</div>
</div>
<div class="modal_footer">
<div class="btn_wrap fr">
<a href="#" onclick="" class="btn grey close">취소</a>
<a href="javascript:fncUploadFile();" class="btn">저장</a>
</div>
</div>
<div class="modal_controller">
<a href="#" class="close">close</a>
</div>
</div>
</div>
<!-- modal :: 사전 업로드 안내 end -->
<!-- modal :: 사전 그룹 관리 팝업-->
<div class="modal" id="dictionary_management_modal" tabindex="-1">
<div class="modal-dialog">
<div class="modal_header">
<h3>금칙어 그룹 관리</h3>
</div>
<div class="modal_body">
<div class="modal_cont min-height-150px max-height-300px overflow-y-auto">
<div class="p-3">
<dl>
<dt>
<h4>
<em class="important">금칙어 그룹명</em>
</h4>
</dt>
<dd>
<ul class="dictionary_list">
</ul>
</dd>
</dl>
</div>
</div>
</div>
<div class="modal_footer">
<div class="btn_wrap">
<a href="#" onclick="" class="btn grey close">취소</a>
<a href="#" onclick="fncGroupSave();" class="btn">저장</a>
</div>
</div>
<div class="modal_controller">
<a href="#" class="close">close</a>
</div>
</div>
</div>
<!-- modal :: 사전 그룹 관리 end -->
<ul class="vakata-context"></ul>
<div id="jstree-marker" style="display: none;">&nbsp;</div>
</body>
</html>

@ -0,0 +1,232 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>시나리오 관리</title>
<%@ include file="/WEB-INF/jsp/adm/include/topLinkTag.jsp"%>
</head>
<body>
<h1>ICOMSYS ADMIN</h1>
<div class="skip_navigation">
<ul>
<li><a href="#Content" class="go_content">본문 바로가기</a></li>
<li><a href="#Gnb">메뉴 바로가기</a></li>
</ul>
</div>
<header id="header">
<%@ include file="/WEB-INF/jsp/adm/include/header.jsp"%>
</header>
<c:import url="/adm/menu/getLnbMenu.do" />
<script type="text/javascript" src="<c:url value='/aajs/scenario.js' />"></script>
<!-- 컨텐트 시작 -->
<section id="Content" class="conversation">
<div class="cont_top">
<div class="location">
<ul>
<li class="home"><a href="#">HOME</a></li>
<li><a href="#">대화관리</a></li>
<li><a href="<c:url value='/admin/conversation/scenario/manage.do'/>">시나리오 관리</a></li>
<li><a href="javascript:location.reload();">시나리오 편집</a></li>
</ul>
</div>
</div>
<div class="sub_cont menu08_01">
<div class="cont_box">
<div class="box_title">
<div class="fl">
<h2 class="mt12">시나리오 편집</h2>
</div>
</div>
<div class="tbl">
<table class="search">
<colgroup>
<col width="130px">
<col width="auto">
</colgroup>
<tbody>
<tr>
<th class="tl">시나리오명</th>
<td class="tl">
<form id="reloadForm" method="post">
<input type="text" name="scenarioName" value="${ eMap.scenarioName }"> <input type="hidden" name="serviceCode" value="${ eMap.serviceCode }"> <input type="hidden" name="custCode" value="${ eMap.custCode }"> <input type="hidden" name="seq" value="${ eMap.seq }">
</form>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="cont_box">
<div class="box_title">
<div class="fl"></div>
<div class="btn_wrap fr">
<a href="javascript:fncAddNode();" class="btn">노드 추가</a> <a href="javascript:fncDelNode();" class="btn red">노드 삭제</a>
</div>
</div>
<form id="sendform" name="sendform" style="overflow-x: auto;">
<div class="tbl" style="min-width: 1300px; min-height: 500px;">
<div id="resultTable" class="slt-tbl">
<ul class="row no-gutters thead">
<li class="col">선택</li>
<li class="col-1">노드 코드</li>
<li class="col-1">노드 명</li>
<li class="col-1">노드 형태</li>
<li class="col-1">파라미터명</li>
<li class="col-4">멘트</li>
<li class="col " style="min-width: 70px;">질의 횟수</li>
<li class="col-1">다음노드</li>
<li class="col-1">인텐트명</li>
<li class="col-1">API명</li>
</ul>
<ul class="tbody">
<c:if test="${ list.isEmpty() }">
<div id="emptyTable" style="text-align: center; margin: 20px;">No data available in table</div>
</c:if>
<c:if test="${ !list.isEmpty() }">
<c:forEach var="item" items="${ list }">
<li class="ctLine">
<div class="row no-gutters boder-b-1 align-items-center">
<div class="col">
<div class="rdo-group">
<div class="rdo_box">
<input id="seqNo_<c:out value="${ item.nodeCode }"/>" name="seqNo" class="rdo-tbl-slt" type="radio" value="<c:out value="${ item.seq }"/>"> <label for="seqNo_<c:out value="${ item.nodeCode }"/>"></label> <input type="hidden" name="nodeUseYn" value="Y">
</div>
</div>
</div>
<div class="col-1 border-left-1">
<input type="text" name="nodeCode" value="<c:out value="${ item.nodeCode }"/>" readonly>
</div>
<div class="col-1 border-left-1">
<input id="itemName_0" name="nodeName" type="text" value="<c:out value="${ item.nodeName }"/>">
</div>
<div class="col-1 border-left-1">
<div class="sel_box">
<select name="nodeType" class="wide" onchange="fncNodeType(this, 'slot');">
<option value="">데이터 선택</option>
<option value="INTENT" <c:out value="${ item.nodeType eq 'INTENT' ? 'selected':'' }"/>>INTENT</option>
<option value="SLOT" <c:out value="${ item.nodeType eq 'SLOT' ? 'selected':'' }"/>>SLOT</option>
<option value="SPLIT" <c:out value="${ item.nodeType eq 'SPLIT' ? 'selected':'' }"/>>SPLIT</option>
<option value="API" <c:out value="${ item.nodeType eq 'API' ? 'selected':'' }"/>>API</option>
<option value="SPEAK" <c:out value="${ item.nodeType eq 'SPEAK' ? 'selected':'' }"/>>SPEAK</option>
</select>
</div>
</div>
<div class="col-1 border-left-1">
<div class="sel_box">
<!-- 파라미터명 -->
<input type="hidden" name="inputPN" value="<c:out value="${ item.slotParamSeq }"/>"> <select name="slotParamSeq" class="wide elements slot" required="required">
<option value="">데이터 선택</option>
</select>
</div>
</div>
<div class="col-4 border-left-1">
<!-- 멘트 -->
<input name="inputMent" type="hidden" value="<c:out value="${ item.nodeMent }"/>"> <input name="nodeMent" type="text" class="elements intent slot speak" value="<c:out value="${ item.nodeMent }"/>">
</div>
<div class="col border-left-1" style="min-width: 70px;">
<!-- 질의횟수 -->
<input name="inputNQC" type="hidden" value="<c:out value="${ item.nodeQstCnt }"/>"> <input name="nodeQstCnt" type="number" class="text-center elements slot" value="<c:out value="${ item.nodeQstCnt }"/>">
</div>
<div class="col-1 border-left-1">
<!-- 다음노드 -->
<input type="text" name="nextNode" class="elements intent slot api speak" value="<c:out value="${ item.nextNode }"/>">
</div>
<div class="col-1 border-left-1">
<div class="sel_box">
<!-- 인텐트명 -->
<input type="hidden" name="inputIN" value="<c:out value="${ item.intentSeq }"/>"> <select name="intentSeq" class="wide elements intent" required="required" onchange="slotParam(this);">
<option value="">항목 선택</option>
</select>
</div>
</div>
<div class="col-1 border-left-1">
<div class="sel_box">
<!-- API -->
<input type="hidden" name="inputAPI" value="<c:out value="${ item.apiCode }"/>"> <select name="apiName" class="wide elements api" required="required">
<option value="">항목 선택</option>
</select>
</div>
</div>
</div> <c:forEach var="slItem" items="${ subList }">
<c:if test="${ slItem.nodeSeq eq item.seq }">
<div id="addment_chk_<c:out value="${ item.seq }_${ slItem.nodeSeq }"/>" class="addments">
<div class="row no-gutters align-items-center mentsBox subMents" data-item-code="">
<div class="col-auto stack">
<i class="xi-subdirectory-arrow"></i> <input type="hidden" name="splitSeq" value="<c:out value="${ slItem.seq }"/>"> <input type="hidden" name="useYn" value="Y">
</div>
<div class="col-auto min-width-50px ml-4 text-right">조건</div>
<div class="col-3 ml-4">
<input type="text" name="splitNodeCondition" value="${fn:escapeXml(slItem.nodeCondition)}" style="width: 100%; margin: 0;">
</div>
<div class="col-auto min-width-50px ml-4 text-right">멘트</div>
<div class="col ml-4">
<div class="row no-gutters">
<div class="col">
<input type="text" name="splitNodeMent" value="${fn:escapeXml(slItem.nodeMent)}">
</div>
</div>
</div>
<div class="col-auto min-width-50px ml-4 text-right">다음노드</div>
<div class="col-1 ml-4">
<input type="text" name="splitNextNode" value="<c:out value="${ slItem.nextNode }"/>" style="width: 100%; margin: 0;">
</div>
<div class="col-auto ml-2">
<button type="button" class="mentBtnAdd extraBox btn-outline-primary ment_btn" onclick="fncAddSubList(this);">+</button>
</div>
<div class="col-auto ml-2">
<button type="button" class="mentBtnDel btn-outline-danger ment_btn" onclick="fncDelSubList(this, <c:out value='${slItem.seq}'/>);">-</button>
</div>
</div>
</div>
</c:if>
</c:forEach>
</li>
</c:forEach>
</c:if>
</ul>
</div>
</div>
</form>
<div class="btn-side">
<div class="btn_wrap fl">
<a id="btnMoveUp" href="#" class="btn grey up dataAlignUp">위로</a>
<a id="btnMoveDown" href="#" class="btn grey down dataAlignDown">아래로</a>
</div>
<div class="btn_wrap fr">
<a id="btnSave" href="javascript:fncSave();" class="btn blue">저장</a>
<a id="btnRemoveTr" href="javascript:fncCancel();" class="btn red dataRemove">취소</a>
</div>
</div>
</div>
</div>
</section>
<!-- 컨텐트 끝 -->
<ul class="vakata-context"></ul>
<div id="jstree-marker" style="display: none;">&nbsp;</div>
</body>
</html>

@ -0,0 +1,241 @@
<%--
Created by IntelliJ IDEA.
User: Mong
Date: 2023-02-03
Time: AM 9:21
To change this template use File | Settings | File Templates.
--%>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>시나리오GUI편집</title>
<%@ include file="/WEB-INF/jsp/adm/include/topLinkTag.jsp" %>
<script src="<c:url value='/js/utils.js' />"></script>
<script src="<c:url value='/js/lib/crypto-js/aes.js' />"></script>
</head>
<body>
<style>
article {
/* 임시로 getLnbMenu를 dxdiagram popup content보다 높게 설정함 */
z-index: 1503 !important;
}
</style>
<h1>ICOMSYS ADMIN</h1>
<h1>API NODE</h1>
<div class="skip_navigation">
<ul>
<li>
<a href="#Content" class="go_content">본문 바로가기</a>
</li>
<li>
<a href="#Gnb">메뉴 바로가기</a>
</li>
</ul>
</div>
<header id="header">
<%@ include file="/WEB-INF/jsp/adm/include/header.jsp" %>
</header>
<!-- header.jsp 이후 실행되어야 함 -->
<script src="<c:url value='/js/adm/rcp/conversation/scenarioGUINodeEdit.js' />"></script>
<script src="<c:url value='/js/adm/rcp/conversation/scenarioNodePopup.js' />"></script>
<script src="<c:url value='/js/adm/rcp/conversation/common.js' />"></script>
<c:import url="/adm/menu/getLnbMenu.do"/>
<section id="Content" class="bot_common">
<div class="location">
<ul>
<li class="home"><a href="#">HOME</a></li>
<li><a href="#">대화관리</a></li>
<li><a href="#">시나리오관리</a></li>
</ul>
</div>
<!-- 아래부터 신규 컨텐츠 마크업 입니다. -->
<div id="editScenario" class="scenario">
<div class="sub_cont">
<div class="box_title panel-tit">
<div class="fl">
<h2 class="" id="scenarioInfo" masterSeq="<c:out value="${seq}"/>" checksum="0" custCode="<c:out value="${custCode}"/>" serviceGroup="<c:out value="${serviceGroup}"/>" >(시나리오명 : {시나리오명})</h2>
</div>
<div class="fr">
<div class="btn_wrap fl">
<div class="toggleBtn-set">
</div>
<div class="toggleBtn-set">
<%-- <input id="devName" type="text" value="0"/>--%>
<%-- <div id="insBtn"></div>--%>
<%-- <div id="selBtn"></div>--%>
<input type="hidden" name="" id="nodeType"/>
<input type="hidden" name="" id="scenarioName"/>
</div>
<a id="btnScenarioDownload" href="#" class="btn line" >시나리오 다운로드</a>
<a id="btnScenarioFileLoad" href="#" rel="scenarioLoad" class="btn line modalLoad">시나리오 불러오기</a>
<a id="btnScenarioCancel" href="#" class="btn grey">취소</a>
<a id="btnScenarioSave" href="#" class="btn">저장</a>
</div>
</div>
</div>
</div>
<div class="cont_box">
<div class="component-diagram">
<!-- <ul class="diagram-tab">
<li><a href="#" class="tabVariable">VAR</a></li>
<li><a href="#" class="tabTest">TEST</a></li>
</ul> -->
<div class="diagram-panel">
<div id="diagram" class="exComp"></div>
<div id="popup"></div>
<input type="hidden" id="editFlag" value="<c:out value="${flag}"/>">
</div>
<div class="diagram-variable diagram-tab-panel">
<div class="diagram-tab-panel-head">
<div class="diagram-tab-panel-head-title">변수목록</div>
<div class="diagram-tab-panel-head-side">
<ul class="list-option">
<li><a href="#" class="refresh" title="새로고침" onclick="ViewEvent.ScenarioVarList(true)"></a></li>
<li><a href="#" class="close tabVariableClose" title="닫기"></a></li>
</ul>
</div>
</div>
<div id="scenarioVarList" class="variable-test">
<ul>
<!--
<li>
YESNO <a href="#" class="ico copy">복사</a>
</li>
<li>
customerPhoneNumber <a href="#" class="ico copy">복사</a>
</li>
<li>
reservationYn <a href="#" class="ico copy">복사</a>
</li>
-->
</ul>
</div>
</div>
<div class="diagram-test diagram-tab-panel">
<div class="diagram-tab-panel-head">
<div class="diagram-tab-panel-head-title">시나리오 테스트</div>
<div class="diagram-tab-panel-head-side">
<ul class="list-option">
<!-- <li><a href="#" class="windowModeBtn" title="윈도우 팝업띄우기"></a></li> -->
<li><a href="#" class="debugModeBtn" title="디버깅 모드"></a></li>
<li><a href="#" class="refresh" title="새로고침"></a></li>
<li><a href="#" class="close tabTestClose" title="닫기"></a></li>
</ul>
</div>
</div>
<div class="monitoring-test">
<div class="box_title monitering-header">
<div class="fl">
<div class="monitering-name">
<div class="select-inline">
<select name="" id="scenarioTestNum">
<!-- 테스트 전화 번호 추가 -->
</select>
</div>
</div>
</div>
<div class="fr" >
<a href="#" class="minico" id="btnTestConnect" >연결</a>
</div>
</div>
<div class="content-scroll type-bg">
<div id="chat" class="monitering-chat">
<!-- 채팅 내용 추가 영역 -->
</div>
</div>
</div>
<div class="test-input">
<input id="chatInput" type="text" placeholder="대화를 입력하세요.">
<a id="sendChat" href="#" class="btn grey">전송</a>
</div>
<div class="param-data-form">
<div class="box_title monitering-header">
<div class="fl">
<div class="monitering-name">
파라미터
</div>
</div>
</div>
<div class="param-form">
<div class="modal_cont" id="testParam">
<!-- 파라메터 값 추가 영역 -->
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</section>
<div class="modal" id="scenarioLoad">
<div class="modal_header">
<h3>시나리오 불러오기 안내</h3>
</div>
<div class="modal_body">
<div class="modal_cont">
<div class="box_title">
<div class="fl">
<h2 class="mt12">시나리오 파일 업로드</h2>
</div>
</div>
<div class="info-list">
<ul>
<li>
시나리오 파일 업로드는 시나리오 다운로드를 통해 다운로드 받은 파일만 가능합니다.
</li>
<li>
시나리오 다운로드 받은 파일을 변조하면 시나리오를 불러올 수 없습니다.
</li>
<li>
업로드는 파일은 Json( .json )파일만 가능합니다.
파일은 최대 3MB까지 업로드 할 수 있습니다.
</li>
<li>
파일명은 최대 70자까지 허용합니다.
</li>
<li><em class="red">시나리오 불러오기 시 작성 중인 시나리오는 삭제됩니다</em></li>
</ul>
</div>
<div class="file-upload-form">
<dl>
<dt>
<div class="file-upload">
<span class="btn">파일 선택</span>
<input type="file" name="" id="selectJsonFile" class="upload" />
</div>
</dt>
<dd>
<div class="ipt_box type-flex">
<input id="inputJsonUpload" type="text" class="input-file" placeholder="선택된 파일 없음." disabled>
<a id="deleteJsonFile" href="#" class="btn grey">삭제</a>
</div>
</dd>
</dl>
</div>
</div>
</div>
<div class="modal_footer">
<div class="btn_wrap fr">
<a id="jsonFileUpload" href="#" class="btn">불러오기</a>
<a id="scenarioLoadCancel" href="#" class="btn close grey">취소</a>
</div>
</div>
<div class="modal_controller">
<a href="#" class="close">close</a>
</div>
</div>
</body>
</html>

@ -0,0 +1,165 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>시나리오 관리</title>
<%@ include file="/WEB-INF/jsp/adm/include/topLinkTag.jsp"%>
</head>
<body>
<h1>ICOMSYS ADMIN</h1>
<div class="skip_navigation">
<ul>
<li>
<a href="#Content" class="go_content">본문 바로가기</a>
</li>
<li>
<a href="#Gnb">메뉴 바로가기</a>
</li>
</ul>
</div>
<header id="header">
<%@ include file="/WEB-INF/jsp/adm/include/header.jsp"%>
</header>
<c:import url="/adm/menu/getLnbMenu.do" />
<script type="text/javascript">
var getServiceCode = "<c:out value="${serviceCode}"/>";
//console.log(getServiceCode);
</script>
<script type="text/javascript" src="<c:url value='/aajs/scenario_list.js' />"></script>
<!-- 컨텐트 시작 -->
<section id="Content" class="conversation">
<div class="cont_top">
<div class="location">
<ul>
<li class="home">
<a href="#">HOME</a>
</li>
<li>
<a href="#">대화관리</a>
</li>
<li>
<a href="#">시나리오 관리</a>
</li>
</ul>
</div>
</div>
<div class="sub_cont menu08_01">
<div class="cont_box">
<div class="box_title">
<div class="fl">
<h2 class="mt12">시나리오관리</h2>
</div>
<div class="fr">
<dl class="customer fl">
<dt class="fl">
<c:if test="${'SYS_ADMIN'==LoginVO.authCode}">
고객사 :
</c:if>
</dt>
<dd class="fl">
<div class="sel_box">
<c:choose>
<c:when test="${'SYS_ADMIN'==LoginVO.authCode}">
<select class="top" name="custCode" id="custCode">
<c:forEach var="siteInfo" items="${siteLists}"
varStatus="status">
<option value="<c:out value="${siteInfo.custCode}"/>"><c:out value="${siteInfo.custName}" /></option>
</c:forEach>
</select>
</c:when>
<c:otherwise>
<input name="custCode" id="custCode" type="hidden" value="${LoginVO.siteCode}" />
</c:otherwise>
</c:choose>
</div>
</dd>
</dl>
<div class="btn_wrap fl">
<a href="#" class="btn" onclick="fncSendData();">조회</a>
</div>
</div>
</div>
<div class="tbl">
<table class="search table-fixed">
<colgroup>
<col width="130px">
<col width="auto">
<col width="130px">
<col width="auto">
</colgroup>
<tbody>
<tr>
<th class="tl">서비스 명</th>
<td class="tl">
<div class="sel_box" id="selOprMng">
<select class="wide" id="oprMngName" name="oprMngCode">
<option value="">서비스 선택</option>
</select>
</div>
</td>
<!-- <td class="tl">
<div class="sel_box">
<div class="sel_box" id="selOprMng">
<select class="wide" id="oprMngName" name="oprMngName">
<option value="">서비스 선택</option>
</select>
</div>
</div>
</td> -->
<th class="tl">시나리오명</th>
<td class="tl">
<input type="text" id="oprMngName1" placeholder="시나리오명">
</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="cont_box">
<div class="box_title">
<div class="fl">
<h2 class="mt12">시나리오 리스트</h2>
</div>
<div class="btn_wrap fr">
<a href="javascript:fncAddScenario();" class="btn">시나리오 등록</a>
</div>
</div>
<div class="tbl">
<table class="table-fixed" id="resultTable">
<colgroup>
<col width="55%">
<col width="15%">
<col width="15%">
<col width="15%">
</colgroup>
<thead>
<tr>
<th>시나리오명</th>
<th>수정일</th>
<th>수정자</th>
<th>삭제</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
</div>
</div>
</div>
</section>
<!-- 컨텐트 끝 -->
<ul class="vakata-context"></ul>
<div id="jstree-marker" style="display: none;">&nbsp;</div>
</body>
</html>

@ -0,0 +1,345 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>시나리오GUI</title>
<%@ include file="/WEB-INF/jsp/adm/include/topLinkTag.jsp"%>
<script src="<c:url value='/js/adm/rcp/conversation/scenarioGUI.js' />"></script>
<script src="<c:url value='/js/adm/rcp/conversation/common.js' />"></script>
<script src="<c:url value='/js/utils.js' />"></script>
</head>
<body>
<h1>ICOMSYS ADMIN</h1>
<h1>API NODE</h1>
<div class="skip_navigation">
<ul>
<li>
<a href="#Content" class="go_content">본문 바로가기</a>
</li>
<li>
<a href="#Gnb">메뉴 바로가기</a>
</li>
</ul>
</div>
<header id="header">
<%@ include file="/WEB-INF/jsp/adm/include/header.jsp"%>
</header>
<c:import url="/adm/menu/getLnbMenu.do" />
<section id="Content" class="bot_common">
<div class="location">
<ul>
<li class="home"><a href="#">HOME</a></li>
<li><a href="#">대화관리</a></li>
<li><a href="#">시나리오관리</a></li>
</ul>
</div>
<div id="manageScenario" class="sub_cont" popupSeq="${scenarioSeq}">
<div class="cont_box">
<div class="box_title">
<div class="fl">
<h2 class="mt12">시나리오 관리</h2>
</div>
<div class="fr">
<div class="btn_wrap fl">
<a id="btnSearchScenario" href="#" class="btn">조회</a>
</div>
</div>
</div>
<div class="tbl">
<table class="search block">
<colgroup>
<col width="140px">
<col width="auto">
<col width="140px">
<col width="auto">
</colgroup>
<tbody>
<tr>
<th class="tl">시나리오그룹</th>
<td class="tl">
<div class="sel_box">
<select id="serviceGroup" class="wide">
</select>
</div>
</td>
<th class="tl">시나리오명</th>
<td class="tl">
<input type="text" placeholder="시나리오명을 입력해주세요." id="scenarionName" class="">
</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="cont_box">
<div class="box_title">
<div class="fl">
<h2 class="mt12">시나리오 리스트</h2>
</div>
<div class="btn_wrap fr">
<a id="btnScenarioRegistration" href="#" rel="createScenario" class="btn line modalLoad">등록</a>
</div>
</div>
<div class="tbl">
<table id="scenarioListTable" class="click modalLoad" rel="managerScenario">
<colgroup>
<col width="auto">
<col width="250px">
<col width="200px">
<col width="200px">
<col width="140px">
</colgroup>
<thead>
<tr>
<th>시퀀스</th>
<th>시나리오명</th>
<th>연관 인텐트</th>
<th>수정일</th>
<th>수정자</th>
<th>배포버전</th>
</tr>
</thead>
<tbody>
<!--
<tr>
<td><a href="#" rel="reservationScenario" class="modalLoad"><b>{{string}}</b></a></td>
<td>{{YYYY-MM-DD HH:MM:SS}}</td>
<td>{{string}}</td>
<td>{{string}}</td>
</tr>
-->
</tbody>
</table>
</div>
</div>
</div>
</section>
<!-- modal :: 시나리오 관리 -->
<div class="modal" id="managerScenario" scSeq="-1" style="width:1024px">
<div class="modal_header" id="managerScenarioHeader">
<h3>시나리오 관리({시나리오 명})</h3>
</div>
<div class="modal_body">
<div class="row">
<div class="col">
<div class="modal_cont">
<div class="box_title">
<div class="fl">
<h2 class="mt12">시나리오명</h2>
</div>
<div class="fr">
<div class="btn_wrap fl sm">
<a id="btnScenarioNameApply" href="#" class="btn">저장</a>
</div>
</div>
</div>
<dl>
<dd class="full">
<div id="ipbScenarioName" class="ipt_box">
<input type="text" value="{scenario name}">
</div>
</dd>
</dl>
</div>
<div class="modal_cont">
<div class="box_title">
<div class="fl">
<h2 class="mt12">시나리오 현황</h2>
</div>
<div class="fr">
<div class="btn_wrap fl sm">
<a id="btnScenarioView" href="#" class="btn line">조회</a>
<a id="btnScenarioEdit" href="#" class="btn">편집</a>
<a id="btnScenarioRelease" href="#" class="btn">배포</a>
</div>
</div>
</div>
<div class="information-box">
<dl id="managerScenarioReleaseVersion">
<dt>
배포버전
</dt>
<dd>
({version})
</dd>
</dl>
<dl id="managerScenarioModifyType">
<dt>
수정사항
</dt>
<dd>
<span class="state sm normal">
({modifyType})
</span>
</dd>
</dl>
<dl id="managerScenarioLastSave">
<dt>
마지막 저장
</dt>
<dd>
<em class="gray"> {save datetime} {update name}}</em>
</dd>
</dl>
</div>
</div>
<div class="modal_cont">
<div class="box_title">
<div class="fl">
<h2 class="mt12">버전 리스트</h2>
</div>
</div>
<div class="tbl">
<table id="scenarioReleaseTable" style="width: 100%">
<colgroup>
<col width="auto">
<col width="auto">
<col width="auto">
<col width="auto">
<col width="auto">
</colgroup>
<thead>
<tr>
<th>시퀀스</th>
<th>버전</th>
<th>배포</th>
<th>불러오기</th>
<th>배포일</th>
<th>배포자</th>
</tr>
</thead>
<tbody>
<!--
<tr>
<td>{{string}}</td>
<td>
<div class="btn_wrap fl sm float-none">
<a href="#" class="btn red">롤백</a>
</div>
</td>
<td>
<div class="btn_wrap fl sm float-none">
<a href="#" class="btn line">불러오기</a>
</div>
</td>
<td>{{YYYY-MM-DD HH:SS}}</td>
<td>{{string}}</td>
</tr>
<tr>
<td>{{string}}</td>
<td>
배포중
</td>
<td>
</td>
<td>{{YYYY-MM-DD HH:SS}}</td>
<td>{{string}}</td>
</tr>
-->
</tbody>
</table>
</div>
</div>
</div>
<div class="col" >
<div class="modal_cont vh-flex">
<div class="box_title">
<div class="fl">
<h2 class="mt12">시나리오 히스토리</h2>
</div>
</div>
<div class="log-area">
<textarea name="" id="txScenarioHistory" cols="30" rows="10" readonly="readonly">
{scenario history}
</textarea>
</div>
</div>
</div>
</div>
</div>
<div class="modal_footer">
<div class="btn_wrap fr">
<a href="#" class="btn close" onclick="fnScenarioSearchBtn()">취소</a>
<a href="#" class="btn red" id="btnScenarioDelete">삭제</a>
</div>
</div>
<div class="modal_controller">
<a href="#" class="close" onclick="fnScenarioSearchBtn()">close</a>
</div>
</div>
<!-- modal :: 시나리오등록 -->
<div class="modal" id="createScenario">
<div class="modal_header">
<h3>시나리오 등록</h3>
</div>
<div class="modal_body">
<div class="modal_cont">
<dl>
<dt>
<h4>시나리오명 <em class="red">*</em></h4>
</dt>
<dd>
<div class="ipt_box" >
<input type="text" placeholder="시나리오명을 입력해주세요." id="insertScenarioName">
</div>
</dd>
</dl>
</div>
</div>
<div class="modal_footer">
<div class="btn_wrap fr">
<a href="#" class="btn grey close" onclick="fnInitInsertScenario()">취소</a>
<a href="#" class="btn" onclick="fnInsertScenario()">저장</a>
</div>
</div>
<div class="modal_controller">
<a href="#" class="close" onclick="fnInitInsertScenario()">close</a>
</div>
</div>
<!-- modal :: 연관 인텐트 설정 -->
<div class="modal" id="relatedIntentModify" scSeq="-1">
<div class="modal_header">
<h3>연관 인텐트 설정</h3>
</div>
<div class="modal_body relatedIntent_body">
<div class="modal_cont">
<div class="box_title">
<div class="fl">
<h2 class="mt12">인텐트 목록({scenario group})</h2>
</div>
</div>
<div id="relatedIntent" class="option-grid type-scroll">
<!-- 연관 인텐트 항목 추가 -->
</div>
</div>
</div>
<div class="modal_footer">
<div class="btn_wrap fr">
<a href="#" class="btn grey close" onclick="fnInitScenarioRelatedIntent()">취소</a>
<a href="#" class="btn" id="btnSRelatedIntentSave" onclick="fnScenarioRelatedIntentSave()">저장</a>
</div>
</div>
<div class="modal_controller">
<a href="#" class="close" onclick="fnInitScenarioRelatedIntent()">close</a>
</div>
</div>
</body>
</html>

@ -0,0 +1,473 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>슬롯 관리</title>
<%@ include file="/WEB-INF/jsp/adm/include/topLinkTag.jsp"%>
</head>
<body>
<%-- 공통 S --%>
<h1>ICOMSYS ADMIN</h1>
<div class="skip_navigation">
<ul>
<li>
<a href="#Content" class="go_content">본문 바로가기</a>
</li>
<li>
<a href="#Gnb">메뉴 바로가기</a>
</li>
</ul>
</div>
<header id="header">
<%@ include file="/WEB-INF/jsp/adm/include/header.jsp"%>
</header>
<c:import url="/adm/menu/getLnbMenu.do" />
<%-- 공통 E --%>
<script type="text/javascript" src="<c:url value='/aajs/slot.js' />"></script>
<%-- 컨텐츠 S --%>
<section id="Content" class="conversation">
<div class="cont_top">
<div class="location">
<ul>
<li class="home">
<a href="#">HOME</a>
</li>
<li>
<a href="#">대화관리</a>
</li>
<li>
<a href="#">슬롯 관리</a>
</li>
</ul>
</div>
</div>
<div class="sub_cont">
<div class="cont_box">
<div class="box_title">
<div class="fl">
<h2 class="mt12">슬롯 관리</h2>
</div>
<div class="fr">
<dl class="customer fl">
<dt class="fl">
<c:if test="${'SYS_ADMIN'==LoginVO.authCode}">
고객사 :
</c:if>
</dt>
<dd class="fl">
<div class="sel_box">
<c:choose>
<c:when test="${'SYS_ADMIN'==LoginVO.authCode}">
<select class="top" name="custCode" id="custCode" onchange="initIntentList()">
<c:forEach var="siteInfo" items="${siteLists}" varStatus="status">
<option value="<c:out value="${siteInfo.custCode}"/>"><c:out value="${siteInfo.custName}" /></option>
</c:forEach>
</select>
</c:when>
<c:otherwise>
<input name="custCode" id="custCode" type="hidden" value="${LoginVO.siteCode}" />
</c:otherwise>
</c:choose>
</div>
</dd>
</dl>
<div class="btn_wrap fl">
<a href="#" class="btn" data-role="search">조회</a>
</div>
</div>
</div>
<div class="tbl">
<form id="searchInfo">
<table class="search table-fixed">
<colgroup>
<col width="130px">
<col width="auto">
<col width="130px">
<col width="auto">
</colgroup>
<tbody>
<tr>
<th class="tl">서비스 명</th>
<td class="tl">
<div class="sel_box" id="selOprMng">
<select class="wide" id="oprMngName" name="oprMngCode" onchange="initIntentList();">
<option value="">서비스 선택</option>
</select>
</div>
</td>
<th class="tl">인텐트 명</th>
<td class="tl">
<div class="sel_box" id="selOprMng1">
<select class="wide" id="oprMngName1" name="intentName">
</select>
</div>
</td>
</tr>
</tbody>
</table>
</form>
</div>
</div>
<div class="cont_box">
<div class="box_title">
<div class="fl">
<h2 class="mt12">슬롯 리스트</h2>
</div>
<div class="btn_wrap fr">
<a href="#" rel="slot_enroll_modal" class="btn line modalLoad" onclick="fncaddSlotbtn()">슬롯 등록</a>
</div>
</div>
<div class="tbl">
<div id="resultTable_wrapper" class="dataTables_wrapper form-inline dt-bootstrap no-footer">
<table id="resultTable" class="click dataTable no-footer" aria-describedby="resultTable_info" role="grid">
<colgroup>
<col width="70%">
<col width="10%">
<col width="10%">
<col width="10%">
</colgroup>
<thead>
<tr role="row">
<th class="center" rowspan="1" colspan="1">슬롯 그룹명</th>
<th class="center" rowspan="1" colspan="1">슬롯 개수</th>
<th class="center" rowspan="1" colspan="1">인텐트명</th>
<th class="center" rowspan="1" colspan="1">삭제</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
<div class="clear"></div>
</div>
</div>
</div>
</div>
</section>
<!-- modal :: 슬롯 생성 팝업-->
<div class="modal" id="slot_enroll_modal" tabindex="-1" style="">
<div class="modal-dialog modal-lg">
<div class="modal_header">
<h3>슬롯 등록</h3>
</div>
<div class="modal_body">
<input type="hidden" name="seq" value="">
<input type="hidden" name="originalName" value="">
<div class="modal_cont">
<dl>
<dt>
<h4>
<em class="important">슬롯 그룹명</em>
</h4>
</dt>
<dd>
<div class="ipt_box">
<input type="text" placeholder="슬롯 그룹명을 입력하세요" name="groupName" id="" class="insert_step1">
</div>
<div class="text-danger err-text" style="display: none;">중복된 슬롯 그룹명 명입니다.</div>
</dd>
</dl>
<dl class="">
<dt>
<h4>
<em class="important">인텐트명</em>
</h4>
</dt>
<dd>
<!-- 2022.06.28 변경
<div class="sel_box" id="">
<select class="wide" id="" name="intentName">
<option value="">인텐트를 선택하세요.</option>
</select>
</div>
-->
<div class="d-flex no-gutters justify-content-between">
<div class="sel_box" id="">
<select class="wide insert_step1" id="selIntentName" name="intentName">
<option value="">인텐트를 선택하세요.</option>
</select>
</div>
<button type="button" class="btn btn-lg insert_step1" data-role="enroll">저장</button>
</div>
</dd>
</dl>
<dl class="insert_step2" style="display:none">
<dt>
<h4>
<em class="important">파라미터 추가</em>
</h4>
</dt>
</dl>
<div class="insert_step2" style="display:none">
<div class="tbl">
<table class="table-fixed">
<colgroup>
<col>
<col>
<col>
<col style="width: 10%">
</colgroup>
<thead>
<tr>
<th class="center">
<em class="important">파라미터ID</em>
</th>
<th class="center">
<em class="important">엔티티 타입</em>
</th>
<th class="center">
<em class="important">엔티티명</em>
</th>
<th class="center">추가</th>
</tr>
</thead>
<tbody>
<tr>
<td class="center">
<div class="ipt_box">
<input type="text" placeholder="파라미터ID를 입력하세요" name="addParamId" id="">
</div>
</td>
<td class="center">
<div class="sel_box" id="">
<select class="wide" id="" name="entityType" onchange='initEntityName(this)'>
<option value="">전제</option>
<option value="A">시스템엔티티</option>
<option value="B">동의어</option>
<option value="C">사전</option>
</select>
</div>
</td>
<td class="center">
<div class="sel_box" id="">
<select class="wide" id="" name="entityName">
<option value="">엔티티 타입을 먼저 선택하세요.</option>
</select>
</div>
</td>
<td class="center">
<button type="button" class="btn btn-lg disabled" data-role="addParameter" disabled>+ 추가</button>
</td>
</tr>
</tbody>
</table>
</div>
<div class="title-sm mt-5">파라미터 목록</div>
<!-- 내용 있을때 -->
<div class="content-scroll" style="height: 350px; min-height: auto;">
<div class="tbl">
<table class="table-fixed paramList" border="1" cellspacing="0" id=tableID>
<colgroup>
<col>
<col>
<col>
<col style="width: 10%">
</colgroup>
<thead>
<tr>
<th class="center">
<em class="">파라미터ID</em>
</th>
<th class="center">
<em class="">엔티티 타입</em>
</th>
<th class="center">
<em class="">엔티티명</em>
</th>
<th class="center">추가</th>
</tr>
</thead>
<tbody>
<tr class="noData"><td colspan="4">
<div style="text-align:center;">등록된 파라미터가 없습니다.</div>
</td></tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
<div class="modal_footer">
<div class="btn_wrap fr">
<a href="#" onclick="initmytable(this)" class="btn grey close">취소</a>
<!-- <a href="#" data-role="enroll" class="btn">저장</a> -->
</div>
</div>
<div class="modal_controller">
<a href="#" onclick="initmytable(this)" class="close">close</a>
</div>
</div>
</div>
<!-- modal :: 슬롯 생성 팝업 end -->
<!-- modal :: 슬롯 수정 팝업-->
<div class="modal" id="slot_update_modal" tabindex="-1" style="">
<div class="modal-dialog modal-lg">
<div class="modal_header">
<h3>슬롯 수정</h3>
</div>
<div class="modal_body">
<input type="hidden" name="seq" value="">
<input type="hidden" name="originalName" value="">
<div class="modal_cont">
<dl>
<dt>
<h4>
<em class="important">슬롯 그룹명</em>
</h4>
</dt>
<dd>
<div class="ipt_box">
<input type="hidden" name="groupNameOrigin">
<input type="text" placeholder="슬롯 그룹명을 입력하세요" name="groupName">
</div>
<div class="text-danger err-text" style="display: none;">중복된 슬롯 그룹명 명입니다.</div>
</dd>
</dl>
<dl class="">
<dt>
<h4>
<em class="important">인텐트명</em>
</h4>
</dt>
<dd>
<!-- 2022.06.28 변경
<div class="sel_box" id="">
<select class="wide" id="" name="intentName">
<option value="">인텐트를 선택하세요.</option>
</select>
</div>
-->
<div class="d-flex no-gutters justify-content-between">
<div class="sel_box" id="">
<select class="wide" id="" name="intentName">
<option value="">인텐트를 선택하세요.</option>
</select>
</div>
<button type="button" class="btn btn-lg insert_step1" data-role="update">저장</button>
</div>
</dd>
</dl>
<dl>
<dt>
<h4>
<em class="important">파라미터 추가</em>
</h4>
</dt>
</dl>
<div class="tbl">
<table class="table-fixed" class="addParameter">
<colgroup>
<col>
<col>
<col>
<col style="width: 10%">
</colgroup>
<thead>
<tr>
<th class="center">
<em class="important">파라미터ID</em>
</th>
<th class="center">
<em class="important">엔티티 타입</em>
</th>
<th class="center">
<em class="important">엔티티명</em>
</th>
<th class="center">추가</th>
</tr>
</thead>
<tbody>
<tr>
<td class="center">
<div class="ipt_box">
<input type="text" placeholder="파라미터ID를 입력하세요" name="addParamId" id="">
</div>
</td>
<td class="center">
<div class="sel_box" id="">
<select class="wide" id="" name="entityType" onchange='initEntityName(this)'>
<option value="">선택</option>
<option value="A">시스템엔티티</option>
<option value="B">일반</option>
</select>
</div>
</td>
<td class="center">
<div class="sel_box" id="">
<select class="wide" id="" name="entityName">
<option value="">엔티티 타입을 먼저 선택하세요.</option>
</select>
</div>
</td>
<td class="center">
<button type="button" class="btn btn-lg disabled" data-role="addParameter" disabled>+ 추가</button>
</td>
</tr>
</tbody>
</table>
</div>
<div class="title-sm mt-5">파라미터 목록</div>
<!-- 내용 있을때 -->
<div class="content-scroll" style="height: 350px; min-height: auto;">
<div class="tbl">
<table class="table-fixed paramList" border="1" cellspacing="0">
<colgroup>
<col>
<col>
<col>
<col style="width: 10%">
</colgroup>
<thead>
<tr>
<th class="center">
<em class="">파라미터ID+</em>
</th>
<th class="center">
<em class="">엔티티 타입</em>
</th>
<th class="center">
<em class="">엔티티명</em>
</th>
<th class="center">추가</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
</div>
</div>
</div>
</div>
<div class="modal_footer">
<div class="btn_wrap fr">
<a href="#" onclick="initmytable(this)" class="btn grey close">취소</a>
<!-- <a href="#" data-role="update" class="btn">저장</a> -->
</div>
</div>
<div class="modal_controller">
<a href="#" class="close">close</a>
</div>
</div>
</div>
<!-- modal :: 슬롯 수정 팝업 end -->
<ul class="vakata-context"></ul>
<div id="jstree-marker" style="display: none;">&nbsp;</div>
<%-- 컨텐츠 E --%>
</body>
</html>

@ -0,0 +1,266 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>동의어 관리</title>
<%@ include file="/WEB-INF/jsp/adm/include/topLinkTag.jsp" %>
</head>
<body>
<h1>ICOMSYS ADMIN</h1>
<div class="skip_navigation">
<ul>
<li>
<a href="#Content" class="go_content">본문 바로가기</a>
</li>
<li>
<a href="#Gnb">메뉴 바로가기</a>
</li>
</ul>
</div>
<header id="header">
<%@ include file="/WEB-INF/jsp/adm/include/header.jsp" %>
</header>
<c:import url="/adm/menu/getLnbMenu.do"/>
<%-- 업로드 결과 --%>
<script>
<c:if test="${not empty message}">
<c:if test="${result}">
$.utils.success('${message}');
</c:if>
<c:if test="${!result}">
$.utils.error('${message}');
</c:if>
</c:if>
</script>
<script type="text/javascript" src="<c:url value='/aajs/synonym.js' />"></script>
<!-- 컨텐트 시작 -->
<section id="Content" class="conversation">
<div class="cont_top">
<div class="location">
<ul>
<li class="home">
<a href="#">HOME</a>
</li>
<li>
<a href="#">대화관리</a>
</li>
<li>
<a href="#">동의어 관리</a>
</li>
</ul>
</div>
</div>
<div class="sub_cont">
<div class="cont_box">
<div class="box_title">
<div class="fl">
<h2 class="mt12">동의어 관리</h2>
</div>
<div class="fr">
<%-- <dl class="customer fl">--%>
<%-- <dt class="fl">--%>
<%-- <c:if test="${'SYS_ADMIN'==LoginVO.authCode}">--%>
<%-- 고객사 :--%>
<%-- </c:if>--%>
<%-- </dt>--%>
<%-- <dd class="fl">--%>
<%-- <div class="sel_box">--%>
<%-- <c:choose>--%>
<%-- <c:when test="${'SYS_ADMIN'==LoginVO.authCode}">--%>
<%-- <select class="top" name="custCode" id="custCode">--%>
<%-- <c:forEach var="siteInfo" items="${siteLists}"--%>
<%-- varStatus="status">--%>
<%-- <option value="<c:out value="${siteInfo.custCode}"/>"><c:out--%>
<%-- value="${siteInfo.custName}"/></option>--%>
<%-- </c:forEach>--%>
<%-- </select>--%>
<%-- </c:when>--%>
<%-- <c:otherwise>--%>
<%-- <input name="custCode" id="custCode" type="hidden"--%>
<%-- value="${LoginVO.siteCode}"/>--%>
<%-- </c:otherwise>--%>
<%-- </c:choose>--%>
<%-- </div>--%>
<%-- </dd>--%>
<%-- </dl>--%>
<%-- <dl class="customer fl">
<dt class="fl">고객사 :</dt>
<dd class="fl">
<div class="sel_box">
<select onchange="fncServiceList(this)" class="top" id="selectCustName" name="selectCustName" title="검색조건-고객사">
<option value="">고객사 선택</option>
<c:forEach var="siteInfo" items="${siteLists}" varStatus="status">
<option value="<c:out value="${siteInfo.custCode}"/>"><c:out value="${siteInfo.custName}" /></option>
</c:forEach>
</select>
</div>
</dd>
</dl> --%>
<div class="btn_wrap fl">
<a href="#" class="btn" onclick="fncSendData();">조회</a>
</div>
</div>
</div>
<input type="hidden" id="custCode">
<div class="tbl">
<form id="searchInfo">
<table class="search table-fixed">
<colgroup>
<col width="130px">
<col>
<col width="130px">
<col>
</colgroup>
<tbody>
<tr>
<th class="tl">시나리오 그룹</th>
<td class="tl">
<div class="sel_box">
<select class="wide" id="serviceGroup" name="serviceGroup">
</select>
</div>
</td>
<th class="tl">대표어</th>
<td class="tl">
<input type="text" placeholder="대표어" id="oprMngName1" class="form-control">
</td>
</tr>
</tbody>
</table>
</form>
</div>
</div>
<div class="cont_box">
<div class="box_title">
<div class="fl">
<h2 class="mt12">동의어 리스트</h2>
</div>
<div class="btn_wrap fr">
<a id="btnSave" href="#" class="btn line" onclick="fncAdd();">등록</a>
<a href="#" rel="synonym_upload_modal" id="btnExcelUp" class="btn excel modalLoad">업로드</a>
<a href="#" class="btn excel" id="btnExcelDown" onclick="fnSynonymExcelDown();">다운로드</a>
</div>
</div>
<div id="resultTable_wrapper" class="tbl">
<table id="resultTable" class="table-fixed" aria-describedby="resultTable_info" role="grid">
<colgroup>
<col>
<col>
<col width="60%">
</colgroup>
<thead>
<tr>
<th>개체어</th>
<th>대표어</th>
<th>동의어</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
</div>
<div class="btn-side">
<div class="btn_wrap fr">
<!-- <a id="btnSave" href="#" class="btn blue" onclick="fncSaveList();">저장</a> -->
</div>
</div>
</div>
</div>
</section>
<!-- 컨텐트 끝 -->
<!-- modal :: 동의어 업로드 안내 팝업-->
<div class="modal" id="synonym_upload_modal" tabindex="-1">
<div class="modal-dialog modal-lg">
<div class="modal_header">
<h3>동의어 업로드 안내</h3>
</div>
<div class="modal_body">
<div class="modal_cont">
<div class="text-right">
<a href="/document/synonym.xls" class="btn excel" download="동의어 업로드 샘플">샘플 다운로드</a>
</div>
<div class="my-5">
<ul class="dot-list">
<li>업로드는 Excel 파일만 가능합니다.</li>
<li>파일 작성 방법은 [샘플 다운로드] 버튼을 선택하시고 샘플 파일을 다운받아 [작성방법] sheet를 참고해주세요.</li>
<li>파일 당 최대 3MB까지 업로드 할 수 있습니다.</li>
<li>파일명은 최대 70자까지 허용합니다.</li>
<li>파일 내 개체어는 50개, 개체어당 동의어는 200개까지 허용합니다.</li>
</ul>
</div>
<div class="title-sm">동의어 파일 업로드</div>
<div class="tbl">
<form id="fileUploadForm" name="fileUploadForm" enctype="multipart/form-data" method="POST"
action="<c:url value='/admin/rcp/conversation/synonym/uploadSynonym.do'/>">
<table class="search">
<colgroup>
<col width="130px">
<col>
</colgroup>
<tbody>
<tr>
<th class="tl">파일선택</th>
<td class="tl">
<div class="file_upload">
<!-- view input -->
<input class="upload_name" value="파일을 선택해주세요" disabled="disabled">
<!-- upload input -->
<input type="file" name="csvFile" id="file" class="upload_hidden"
accept="application/vnd.ms-excel, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
multiple onchange="uploadFileChange(this);">
<input type="hidden" name="serviceGroup">
<input type="hidden" name="custCode">
<label for="file" class="btn line">파일선택</label>
<button type="reset" class="btn ml-1">삭제</button>
</div>
</td>
</tr>
</tbody>
</table>
</form>
</div>
</div>
</div>
<div class="modal_footer">
<div class="btn_wrap fr">
<a href="#" onclick="" class="btn grey close">취소</a>
<a href="javascript:fncUploadFile();" class="btn">
<span>저장</span>
<img class="loading-img" alt="loading" src="/images/loading.gif" style="display: none;">
</a>
</div>
</div>
<div class="modal_controller">
<a href="#" class="close">close</a>
</div>
</div>
</div>
<!-- modal :: 동의어 업로드 안내 end -->
<ul class="vakata-context"></ul>
<div id="jstree-marker" style="display: none;">&nbsp;</div>
</body>
</html>

@ -0,0 +1,204 @@
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html>
<html lang="ko">
<head>
<title>시스템 엔티티</title>
<%@ include file="/WEB-INF/jsp/adm/include/topLinkTag.jsp"%>
</head>
<body>
<h1>ICOMSYS ADMIN</h1>
<div class="skip_navigation">
<ul>
<li><a href="#Content" class="go_content">본문 바로가기</a></li>
<li><a href="#Gnb">메뉴 바로가기</a></li>
</ul>
</div>
<header id="header">
<%@ include file="/WEB-INF/jsp/adm/include/header.jsp"%>
</header>
<c:import url="/adm/menu/getLnbMenu.do" />
<script>
$(document).ready(function () {
// getOpr($("#custCode"));
// $("#custCode").on('change', function() {
// getOpr($(this));
// });
if (!checkPermissionPolicy("rcpconversationsystemEntitymanageFull")) {
$("#btnSystemEntitySynchronize").hide();
}
var opts = {
columns: [
{data: ""},
{data: "entityName"}
],
columnDefs: [
{
"defaultContent": "-",
"targets": "_all",
"className": "center"
},
{
targets: 0,
/*render: function (data) {
return '<a style="display: block;text-align: center;">' + data + '</a>';
}*/
render: function (data, type, row, meta) {
return meta.row + meta.settings._iDisplayStart + 1;
}
},
{
targets: 1,
render: function (data) {
return '<a style="display: block;text-align: center;">' + data + '</a>';
}
}
],
}
<%--$.utils.dataTable.init('<c:url value="/admin/rcp/conversation/systemEntity/search.do"/>', opts);--%>
$.utils.dataTable.init('<c:url value="/admin/rcp/conversation/scenario/systemEntity/search"/>', opts);
<%--// 초기 리스트 조회--%>
search();
$("[data-role=synchronize]").click(function() {
synchronize();
});
});
function fncKeyPresshandler(e) {
if (event.keyCode == 13) {
fncSendData();
return false;
}
}
// 리스트 검색
function search() {
$.utils.dataTable.getListData({
// oprMngCode: $("#custCode").val() + "_RCP_" + $("select[name=serviceGroup]").val(),
// entityName: $("input[name=entityName]").val()
}, function(d) {
//console.log('result', d)
$("#resultTable").renderTable(d.list);
});
}
function synchronize() {
$.ajax({
url: '<c:url value="/admin/rcp/conversation/systemEntity/synchronize.do"/>',
type: "POST",
datatype: "JSON",
async: false,
contentType: "application/json",
success: function(d) {
// console.log(d);
if (d.result) {
$.utils.success(d.message);
$("#resultTable").renderTable(d.list);
} else {
$.utils.error(d.message);
$("#resultTable").renderTable(d.list);
}
}
});
}
</script>
<!-- 컨텐트 시작 -->
<section id="Content" class="conversation">
<div class="cont_top">
<div class="location">
<ul>
<li class="home"><a href="#">HOME</a></li>
<li><a href="#">대화관리</a></li>
<li><a href="#">시스템 엔티티</a></li>
</ul>
</div>
</div>
<div class="sub_cont">
<div class="cont_box">
<div class="box_title">
<div class="fl">
<h2 class="mt12">시스템 엔티티</h2>
</div>
<div class="fr">
<dl class="customer fl">
<dt class="fl">
<c:if test="${'SYS_ADMIN'==LoginVO.authCode}">
고객사 :
</c:if>
</dt>
<dd class="fl">
<div class="sel_box">
<c:choose>
<c:when test="${'SYS_ADMIN'==LoginVO.authCode}">
<select class="top" name="custCode" id="custCode">
<c:forEach var="siteInfo" items="${siteLists}" varStatus="status">
<option value="<c:out value="${siteInfo.custCode}"/>"><c:out value="${siteInfo.custName}"/></option>
</c:forEach>
</select>
</c:when>
<c:otherwise>
<input name="custCode" id="custCode" type="hidden" value="${LoginVO.siteCode}"/>
</c:otherwise>
</c:choose>
</div>
</dd>
</dl>
<div class="btn_wrap fr">
<a id="btnSystemEntitySynchronize" href="#" class="btn" data-role="synchronize">동기화</a>
</div>
</div>
</div>
</div>
<div class="cont_box">
<%-- <div class="box_title">--%>
<%-- <div class="fl">--%>
<%-- <h2 class="mt12">시스템 엔티티 리스트</h2>--%>
<%-- </div>--%>
<%-- </div>--%>
<div class="tbl">
<div id="resultTable_wrapper" class="dataTables_wrapper form-inline dt-bootstrap no-footer">
<table id="resultTable" class="click dataTable no-footer table-fixed" aria-describedby="resultTable_info" role="grid">
<colgroup>
<col width="10%">
<col width="90%">
</colgroup>
<thead>
<tr role="row">
<th class="center sorting_disabled" rowspan="1" colspan="1">순번</th>
<th class="center sorting_disabled" rowspan="1" colspan="1">시스템 엔티티명</th>
</tr>
</thead>
<tbody>
<!-- 내용 없을 경우 -->
<tr>
<td valign="middle" colspan="2" class="dataTables_empty">No data available in table</td>
</tr>
</tbody>
</table>
<div class="bottom"></div>
<div class="clear"></div>
</div>
</div>
</div>
</div>
</section>
<!-- 컨텐트 끝 -->
<ul class="vakata-context"></ul>
<div id="jstree-marker" style="display: none;">&nbsp;</div>
</body>
</html>

@ -0,0 +1,204 @@
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html>
<html lang="ko">
<head>
<title>시스템 엔티티</title>
<%@ include file="/WEB-INF/jsp/adm/include/topLinkTag.jsp"%>
</head>
<body>
<h1>ICOMSYS ADMIN</h1>
<div class="skip_navigation">
<ul>
<li><a href="#Content" class="go_content">본문 바로가기</a></li>
<li><a href="#Gnb">메뉴 바로가기</a></li>
</ul>
</div>
<header id="header">
<%@ include file="/WEB-INF/jsp/adm/include/header.jsp"%>
</header>
<c:import url="/adm/menu/getLnbMenu.do" />
<script>
$(document).ready(function () {
// getOpr($("#custCode"));
// $("#custCode").on('change', function() {
// getOpr($(this));
// });
if (!checkPermissionPolicy("rcpconversationsystemEntitymanageFull")) {
$("#btnSystemEntitySynchronize").hide();
}
var opts = {
columns: [
{data: ""},
{data: "entityName"}
],
columnDefs: [
{
"defaultContent": "-",
"targets": "_all",
"className": "center"
},
{
targets: 0,
/*render: function (data) {
return '<a style="display: block;text-align: center;">' + data + '</a>';
}*/
render: function (data, type, row, meta) {
return meta.row + meta.settings._iDisplayStart + 1;
}
},
{
targets: 1,
render: function (data) {
return '<a style="display: block;text-align: center;">' + data + '</a>';
}
}
],
}
<%--$.utils.dataTable.init('<c:url value="/admin/rcp/conversation/systemEntity/search.do"/>', opts);--%>
$.utils.dataTable.init('<c:url value="/admin/rcp/conversation/scenario/systemEntity/search"/>', opts);
<%--// 초기 리스트 조회--%>
search();
$("[data-role=synchronize]").click(function() {
synchronize();
});
});
function fncKeyPresshandler(e) {
if (event.keyCode == 13) {
fncSendData();
return false;
}
}
// 리스트 검색
function search() {
$.utils.dataTable.getListData({
// oprMngCode: $("#custCode").val() + "_RCP_" + $("select[name=serviceGroup]").val(),
// entityName: $("input[name=entityName]").val()
}, function(d) {
//console.log('result', d)
$("#resultTable").renderTable(d.list);
});
}
function synchronize() {
$.ajax({
url: '<c:url value="/admin/rcp/conversation/systemEntity/synchronize.do"/>',
type: "POST",
datatype: "JSON",
async: false,
contentType: "application/json",
success: function(d) {
// console.log(d);
if (d.result) {
$.utils.success(d.message);
$("#resultTable").renderTable(d.list);
} else {
$.utils.error(d.message);
$("#resultTable").renderTable(d.list);
}
}
});
}
</script>
<!-- 컨텐트 시작 -->
<section id="Content" class="conversation">
<div class="cont_top">
<div class="location">
<ul>
<li class="home"><a href="#">HOME</a></li>
<li><a href="#">대화관리</a></li>
<li><a href="#">사용자 엔티티</a></li>
</ul>
</div>
</div>
<div class="sub_cont">
<div class="cont_box">
<div class="box_title">
<div class="fl">
<h2 class="mt12">시스템 엔티티</h2>
</div>
<div class="fr">
<dl class="customer fl">
<dt class="fl">
<c:if test="${'SYS_ADMIN'==LoginVO.authCode}">
고객사 :
</c:if>
</dt>
<dd class="fl">
<div class="sel_box">
<c:choose>
<c:when test="${'SYS_ADMIN'==LoginVO.authCode}">
<select class="top" name="custCode" id="custCode">
<c:forEach var="siteInfo" items="${siteLists}" varStatus="status">
<option value="<c:out value="${siteInfo.custCode}"/>"><c:out value="${siteInfo.custName}"/></option>
</c:forEach>
</select>
</c:when>
<c:otherwise>
<input name="custCode" id="custCode" type="hidden" value="${LoginVO.siteCode}"/>
</c:otherwise>
</c:choose>
</div>
</dd>
</dl>
<div class="btn_wrap fr">
<a id="btnSystemEntitySynchronize" href="#" class="btn" data-role="synchronize">동기화</a>
</div>
</div>
</div>
</div>
<div class="cont_box">
<%-- <div class="box_title">--%>
<%-- <div class="fl">--%>
<%-- <h2 class="mt12">시스템 엔티티 리스트</h2>--%>
<%-- </div>--%>
<%-- </div>--%>
<div class="tbl">
<div id="resultTable_wrapper" class="dataTables_wrapper form-inline dt-bootstrap no-footer">
<table id="resultTable" class="click dataTable no-footer table-fixed" aria-describedby="resultTable_info" role="grid">
<colgroup>
<col width="10%">
<col width="90%">
</colgroup>
<thead>
<tr role="row">
<th class="center sorting_disabled" rowspan="1" colspan="1">순번</th>
<th class="center sorting_disabled" rowspan="1" colspan="1">시스템 엔티티명</th>
</tr>
</thead>
<tbody>
<!-- 내용 없을 경우 -->
<tr>
<td valign="middle" colspan="2" class="dataTables_empty">No data available in table</td>
</tr>
</tbody>
</table>
<div class="bottom"></div>
<div class="clear"></div>
</div>
</div>
</div>
</div>
</section>
<!-- 컨텐트 끝 -->
<ul class="vakata-context"></ul>
<div id="jstree-marker" style="display: none;">&nbsp;</div>
</body>
</html>

@ -0,0 +1,12 @@
<html xmlns:th="http://www.thymeleaf.org">
<section id="Content" class="system_management">
<br>
<br>
<br>
<br>
<br>
<p> bgm</p>
</section>
</html>

@ -0,0 +1,12 @@
<html xmlns:th="http://www.thymeleaf.org">
<section id="Content" class="system_management">
<br>
<br>
<br>
<br>
<br>
<p> 인사말</p>
</section>
</html>

@ -0,0 +1,12 @@
<html xmlns:th="http://www.thymeleaf.org">
<section id="Content" class="system_management">
<br>
<br>
<br>
<br>
<br>
<p> 공휴일</p>
</section>
</html>

@ -0,0 +1,12 @@
<html xmlns:th="http://www.thymeleaf.org">
<section id="Content" class="system_management">
<br>
<br>
<br>
<br>
<br>
<p> nlp</p>
</section>
</html>

@ -0,0 +1,12 @@
<html xmlns:th="http://www.thymeleaf.org">
<section id="Content" class="system_management">
<br>
<br>
<br>
<br>
<br>
<p> tts</p>
</section>
</html>

@ -0,0 +1,12 @@
<html xmlns:th="http://www.thymeleaf.org">
<section id="Content" class="system_management">
<br>
<br>
<br>
<br>
<br>
<p> 트레픽모니터링</p>
</section>
</html>

@ -0,0 +1,12 @@
<html xmlns:th="http://www.thymeleaf.org">
<section id="Content" class="system_management">
<br>
<br>
<br>
<br>
<br>
<p> 캠페인유형별</p>
</section>
</html>

@ -0,0 +1,12 @@
<html xmlns:th="http://www.thymeleaf.org">
<section id="Content" class="system_management">
<br>
<br>
<br>
<br>
<br>
<p> 캠페인 날짜별</p>
</section>
</html>

@ -0,0 +1,12 @@
<html xmlns:th="http://www.thymeleaf.org">
<section id="Content" class="system_management">
<br>
<br>
<br>
<br>
<br>
<p> TBD</p>
</section>
</html>

@ -0,0 +1,12 @@
<html xmlns:th="http://www.thymeleaf.org">
<section id="Content" class="system_management">
<br>
<br>
<br>
<br>
<br>
<p> AI통계</p>
</section>
</html>

@ -0,0 +1,12 @@
<html xmlns:th="http://www.thymeleaf.org">
<section id="Content" class="system_management">
<br>
<br>
<br>
<br>
<br>
<p> 콜통계</p>
</section>
</html>

@ -0,0 +1,12 @@
<html xmlns:th="http://www.thymeleaf.org">
<section id="Content" class="system_management">
<br>
<br>
<br>
<br>
<br>
<p> 인텐트날짜별현황</p>
</section>
</html>

@ -0,0 +1,12 @@
<html xmlns:th="http://www.thymeleaf.org">
<section id="Content" class="system_management">
<br>
<br>
<br>
<br>
<br>
<p> 인텐트항목별현황</p>
</section>
</html>

@ -0,0 +1,12 @@
<html xmlns:th="http://www.thymeleaf.org">
<section id="Content" class="system_management">
<br>
<br>
<br>
<br>
<br>
<p> 시나리오날짜별현황</p>
</section>
</html>

@ -0,0 +1,12 @@
<html xmlns:th="http://www.thymeleaf.org">
<section id="Content" class="system_management">
<br>
<br>
<br>
<br>
<br>
<p> 시나리오 항목별현황</p>
</section>
</html>

@ -0,0 +1,12 @@
<html xmlns:th="http://www.thymeleaf.org">
<section id="Content" class="system_management">
<br>
<br>
<br>
<br>
<br>
<p> 일자별현황</p>
</section>
</html>

@ -0,0 +1,12 @@
<html xmlns:th="http://www.thymeleaf.org">
<section id="Content" class="system_management">
<br>
<br>
<br>
<br>
<br>
<p> 월별현황</p>
</section>
</html>

@ -0,0 +1,12 @@
<html xmlns:th="http://www.thymeleaf.org">
<section id="Content" class="system_management">
<br>
<br>
<br>
<br>
<br>
<p> ai상담 시뮬레이션</p>
</section>
</html>

@ -0,0 +1,12 @@
<html xmlns:th="http://www.thymeleaf.org">
<section id="Content" class="system_management">
<br>
<br>
<br>
<br>
<br>
<p> 의도추론테스트</p>
</section>
</html>

@ -0,0 +1,12 @@
<html xmlns:th="http://www.thymeleaf.org">
<section id="Content" class="system_management">
<br>
<br>
<br>
<br>
<br>
<p> stt</p>
</section>
</html>

@ -0,0 +1,12 @@
<html xmlns:th="http://www.thymeleaf.org">
<section id="Content" class="system_management">
<br>
<br>
<br>
<br>
<br>
<p> tts</p>
</section>
</html>

@ -0,0 +1,12 @@
<html xmlns:th="http://www.thymeleaf.org">
<section id="Content" class="system_management">
<br>
<br>
<br>
<br>
<br>
<p> 컨텐츠등록관리</p>
</section>
</html>

@ -0,0 +1,12 @@
<html xmlns:th="http://www.thymeleaf.org">
<section id="Content" class="system_management">
<br>
<br>
<br>
<br>
<br>
<p> 상담이력</p>
</section>
</html>

@ -0,0 +1,12 @@
<html xmlns:th="http://www.thymeleaf.org">
<section id="Content" class="system_management">
<br>
<br>
<br>
<br>
<br>
<p> 영상상담</p>
</section>
</html>

@ -0,0 +1,12 @@
<html xmlns:th="http://www.thymeleaf.org">
<section id="Content" class="system_management">
<br>
<br>
<br>
<br>
<br>
<p> vg관리</p>
</section>
</html>

@ -0,0 +1,12 @@
<html xmlns:th="http://www.thymeleaf.org">
<section id="Content" class="system_management">
<br>
<br>
<br>
<br>
<br>
<p> vg모니터링</p>
</section>
</html>
Loading…
Cancel
Save