Initial commit

This commit is contained in:
jade
2026-07-03 17:47:03 +09:00
commit 1bebb681fe
103 changed files with 5225 additions and 0 deletions

View File

@@ -0,0 +1,14 @@
package io.shinhanlife;
import io.shinhanlife.glow.GlowMybatisMapper;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
@MapperScan(basePackages = "io.shinhanlife", annotationClass = GlowMybatisMapper.class) // @GlowMybatisMapper 어노테이션이 있는 인터페이스만 스캔
public class AxHubAdminApplication {
public static void main(String[] args) {
SpringApplication.run(AxHubAdminApplication.class, args);
}
}

View File

@@ -0,0 +1,19 @@
package io.shinhanlife.axhub.biz.sm.mmg.converter;
import io.shinhanlife.axhub.biz.sm.mmg.dto.MenuInDto;
import io.shinhanlife.axhub.biz.sm.mmg.dto.MenuListDto;
import io.shinhanlife.axhub.biz.sm.mmg.presentation.io.SmMmg0000M01RRequest;
import io.shinhanlife.axhub.biz.sm.mmg.presentation.io.SmMmg0000M01RResponse;
import org.mapstruct.Mapper;
@Mapper(componentModel = "spring")
public abstract class MenuConverter {
public abstract MenuInDto smMmg0000M01RRequestToMenuInDto(SmMmg0000M01RRequest req);
public abstract MenuListDto smMmg0000M01RResponseToMenuListDto(SmMmg0000M01RResponse res);
public abstract SmMmg0000M01RResponse menuListDtoeToSmMmg0000M01RResponse(MenuListDto res);
}

View File

@@ -0,0 +1,61 @@
package io.shinhanlife.axhub.biz.sm.mmg.domain.model;
import io.shinhanlife.glow.db.dto.AuditInfo;
import lombok.AccessLevel;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
/**
* ZtMenu은 ZT_MENU 테이블을 매핑하는 Entity 클래스입니다.
* 이 클래스는 테이블의 컬럼을 Java 필드로 매핑합니다.
*
* @Data: Lombok을 통해 getter, setter 등을 자동 생성.
*/
@Getter
@Builder
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@AllArgsConstructor
public class ZtMenu extends AuditInfo {
// 메뉴 ID (PK)
private Integer menuId;
// 부모 메뉴 ID (FK)
private Integer parentMenuId;
// 컴포넌트 이름
private String name;
// 라우트 경로
private String path;
// 메뉴 이름
private String title;
// 메뉴 아이콘
private String icon;
// 메뉴 숨김 여부 (Y/N)
private String isHide;
// 탭 숨김 여부 (Y/N)
private String isHideTab;
// 링크
private String link;
// iframe 여부 (Y/N)
private String isIframe;
// 캐시 여부 (Y/N)
private String keepAlive;
// 메뉴 표시 순서
private Integer orderSeq;
// 활성 여부 (Y/N)
private String isActive;
}

View File

@@ -0,0 +1,25 @@
package io.shinhanlife.axhub.biz.sm.mmg.domain.repository;
import io.shinhanlife.axhub.biz.sm.mmg.dto.MenuInDto;
import io.shinhanlife.axhub.biz.sm.mmg.dto.MenuOutDto;
import io.shinhanlife.axhub.biz.sm.mmg.dto.MenuSaveInDto;
import io.shinhanlife.glow.GlowMybatisMapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@GlowMybatisMapper
public interface MenuRepository {
List<MenuOutDto> selectMenu(MenuInDto dto);
MenuOutDto selectMenuById(@Param("menuId") Integer menuId);
void insertMenu(MenuSaveInDto dto);
void updateMenu(MenuSaveInDto dto);
void deleteMenu(@Param("menuId") Integer menuId);
}

View File

@@ -0,0 +1,20 @@
package io.shinhanlife.axhub.biz.sm.mmg.domain.service.impl;
import io.shinhanlife.axhub.biz.sm.mmg.dto.MenuInDto;
import io.shinhanlife.axhub.biz.sm.mmg.dto.MenuListDto;
import io.shinhanlife.axhub.biz.sm.mmg.dto.MenuOutDto;
import io.shinhanlife.axhub.biz.sm.mmg.dto.MenuSaveInDto;
import java.util.List;
public interface MenuService {
List<MenuListDto> selectMenu(MenuInDto dto);
MenuOutDto findById(Integer menuId);
Integer save(MenuSaveInDto dto);
void delete(Integer menuId);
}

View File

@@ -0,0 +1,117 @@
package io.shinhanlife.axhub.biz.sm.mmg.domain.service.impl;
import io.shinhanlife.axhub.biz.sm.mmg.domain.repository.MenuRepository;
import io.shinhanlife.axhub.biz.sm.mmg.dto.MenuInDto;
import io.shinhanlife.axhub.biz.sm.mmg.dto.MenuListDto;
import io.shinhanlife.axhub.biz.sm.mmg.dto.MenuOutDto;
import io.shinhanlife.axhub.biz.sm.mmg.dto.MenuSaveInDto;
import io.shinhanlife.axhub.common.util.SessionUtil;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@Service
@RequiredArgsConstructor
public class MenuServiceImpl implements MenuService {
private final MenuRepository menuRepository;
@Override
public List<MenuListDto> selectMenu(MenuInDto dto) {
List<MenuOutDto> allMenus = menuRepository.selectMenu(dto);
// 비루트 메뉴(부모 ID가 null이 아닌)만 그룹핑하여 맵 생성
Map<Integer, List<MenuOutDto>> menuMap = allMenus.stream()
.filter(menu -> menu.getParentMenuId() != null)
.collect(Collectors.groupingBy(MenuOutDto::getParentMenuId));
// 루트 메뉴 (parentMenuId == null)
List<MenuOutDto> roots = allMenus.stream()
.filter(menu -> menu.getParentMenuId() == null)
.collect(Collectors.toList());
// 트리 빌드
List<MenuListDto> menuList = buildTree(roots, menuMap);
return menuList;
}
private List<MenuListDto> buildTree(List<MenuOutDto> menus, Map<Integer, List<MenuOutDto>> menuMap) {
List<MenuListDto> dtos = new ArrayList<>();
for (MenuOutDto menu : menus) {
MenuListDto dto = convertToDto(menu);
List<MenuOutDto> children = menuMap.getOrDefault(menu.getMenuId(), new ArrayList<>());
if (!children.isEmpty()) {
dto.setChildren(buildTree(children, menuMap));
}
dtos.add(dto);
}
return dtos;
}
@Override
public MenuOutDto findById(Integer menuId) {
return menuRepository.selectMenuById(menuId);
}
@Override
@Transactional
public Integer save(MenuSaveInDto dto) {
Date now = new Date();
String prafNo = SessionUtil.getPrafNo();
String ognzNo = SessionUtil.getOgnzNo();
if (dto.getIsActive() == null) dto.setIsActive("Y");
if (dto.getIsHide() == null) dto.setIsHide("N");
if (dto.getIsHideTab() == null) dto.setIsHideTab("N");
if (dto.getIsIframe() == null) dto.setIsIframe("N");
if (dto.getKeepAlive() == null) dto.setKeepAlive("N");
if (dto.getOrderSeq() == null) dto.setOrderSeq(0);
dto.setSystChgDt(now);
dto.setSystChgPrafNo(prafNo);
dto.setSystChgOgnzNo(ognzNo);
dto.setSystChgSystCd("AXH");
dto.setSystChgPrgrId("SMNMG0100M");
if (dto.getMenuId() == null) {
dto.setSystRgiDt(now);
dto.setSystRgiPrafNo(prafNo);
dto.setSystRgiOgnzNo(ognzNo);
dto.setSystRgiSystCd("AXH");
dto.setSystRgiPrgrId("SMNMG0100M");
menuRepository.insertMenu(dto);
} else {
menuRepository.updateMenu(dto);
}
return dto.getMenuId();
}
@Override
@Transactional
public void delete(Integer menuId) {
menuRepository.deleteMenu(menuId);
}
private MenuListDto convertToDto(MenuOutDto menu) {
MenuListDto.Meta meta = new MenuListDto.Meta();
meta.setTitle(menu.getTitle());
meta.setIcon(menu.getIcon());
meta.setHide("Y".equals(menu.getIsHide()));
meta.setHideTab("Y".equals(menu.getIsHideTab()));
meta.setLink(menu.getLink());
meta.setIframe("Y".equals(menu.getIsIframe()));
meta.setKeepAlive("Y".equals(menu.getKeepAlive()));
meta.setOrderSeq(menu.getOrderSeq());
meta.setActive("Y".equals(menu.getIsActive()));
return MenuListDto.builder().id(menu.getMenuId()).name(menu.getName()).path(menu.getPath()).meta(meta).build();
}
}

View File

@@ -0,0 +1,22 @@
package io.shinhanlife.axhub.biz.sm.mmg.dto;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
@Builder
@AllArgsConstructor
public class MenuInDto {
public MenuInDto() {
setIsActive("Y");
}
private String isActive; // 기본 활성 메뉴만
private String path; // 라우트 경로
private String title; // 기본 활성 메뉴만
}

View File

@@ -0,0 +1,90 @@
package io.shinhanlife.axhub.biz.sm.mmg.dto;
import com.fasterxml.jackson.annotation.JsonProperty;
import java.util.List;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
/**
* MenuDto는 Vue의 MenuListType에 맞춘 DTO입니다.
* 트리 구조를 지원하며, meta 객체 포함.
* @Data: Lombok을 통해 getter, setter 등을 자동 생성.
*/
@Getter
@Setter
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class MenuListDto {
private Integer id;
private Integer parentMenuId;
private String name;
private String path;
private Meta meta;
private List<MenuListDto> children;
@Getter
@Setter
@Builder
@NoArgsConstructor
@AllArgsConstructor
public static class Meta {
private String title;
private String icon;
private boolean showBadge;
private String showTextBadge;
private boolean hide;
private boolean hideTab;
private String link;
private boolean iframe;
private boolean keepAlive;
// 메뉴 표시 순서
private Integer orderSeq;
// 활성 여부
private boolean isActive;
@JsonProperty("isHide")
public boolean isHide() {
return hide;
}
@JsonProperty("isHide")
public void setHide(boolean hide) {
this.hide = hide;
}
@JsonProperty("isHideTab")
public boolean isHideTab() {
return hideTab;
}
@JsonProperty("isHideTab")
public void setHideTab(boolean hideTab) {
this.hideTab = hideTab;
}
@JsonProperty("isIframe")
public boolean isIframe() {
return iframe;
}
@JsonProperty("isIframe")
public void setIframe(boolean iframe) {
this.iframe = iframe;
}
@JsonProperty("isActive")
public boolean isActive() {
return isActive;
}
@JsonProperty("isActive")
public void setActive(boolean isActive) {
this.isActive = isActive;
}
}
}

View File

@@ -0,0 +1,53 @@
package io.shinhanlife.axhub.biz.sm.mmg.dto;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
@Builder
@AllArgsConstructor
public class MenuOutDto {
// 메뉴 ID (PK)
private Integer menuId;
// 부모 메뉴 ID (FK)
private Integer parentMenuId;
// 컴포넌트 이름
private String name;
// 라우트 경로
private String path;
// 메뉴 이름
private String title;
// 메뉴 아이콘
private String icon;
// 메뉴 숨김 여부 (Y/N)
private String isHide;
// 탭 숨김 여부 (Y/N)
private String isHideTab;
// 링크
private String link;
// iframe 여부 (Y/N)
private String isIframe;
// 캐시 여부 (Y/N)
private String keepAlive;
// 메뉴 표시 순서
private Integer orderSeq;
// 활성 여부 (Y/N)
private String isActive;
}

View File

@@ -0,0 +1,39 @@
package io.shinhanlife.axhub.biz.sm.mmg.dto;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import java.util.Date;
@Getter
@Setter
@NoArgsConstructor
public class MenuSaveInDto {
private Integer menuId;
private Integer parentMenuId;
private String name;
private String path;
private String title;
private String icon;
private String isHide;
private String isHideTab;
private String link;
private String isIframe;
private String keepAlive;
private Integer orderSeq;
private String isActive;
private Date systRgiDt;
private String systRgiPrafNo;
private String systRgiOgnzNo;
private String systRgiSystCd;
private String systRgiPrgrId;
private Date systChgDt;
private String systChgPrafNo;
private String systChgOgnzNo;
private String systChgSystCd;
private String systChgPrgrId;
}

View File

@@ -0,0 +1,30 @@
package io.shinhanlife.axhub.biz.sm.mmg.presentation;
import io.shinhanlife.axhub.biz.sm.mmg.presentation.io.SmMmg0000M01RRequest;
import io.shinhanlife.axhub.biz.sm.mmg.presentation.io.SmMmg0000M01RResponse;
import io.shinhanlife.axhub.biz.sm.mmg.usecase.SmMmg0000MUseCase;
import io.shinhanlife.glow.BaseResponse;
import io.shinhanlife.glow.GlowControllerId;
import java.util.List;
import io.shinhanlife.glow.ResponseUtil;
import lombok.RequiredArgsConstructor;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequiredArgsConstructor
public class SmMmg0000MController {
private final SmMmg0000MUseCase smMmg0000MUseCase;
@PostMapping("SMMMG0000M01R")
@GlowControllerId("SMMMG0000M01R")
public ResponseEntity<BaseResponse<List<SmMmg0000M01RResponse>>> SMMMG0000M01R(@RequestBody SmMmg0000M01RRequest req) {
return ResponseUtil.ok(smMmg0000MUseCase.selectMenu(req));
}
}

View File

@@ -0,0 +1,47 @@
package io.shinhanlife.axhub.biz.sm.mmg.presentation;
import io.shinhanlife.axhub.biz.sm.mmg.presentation.io.SmNmg0100M01DRequest;
import io.shinhanlife.axhub.biz.sm.mmg.presentation.io.SmNmg0100M01RRequest;
import io.shinhanlife.axhub.biz.sm.mmg.presentation.io.SmNmg0100M01RResponse;
import io.shinhanlife.axhub.biz.sm.mmg.presentation.io.SmNmg0100M01SRequest;
import io.shinhanlife.axhub.biz.sm.mmg.presentation.io.SmNmg0100M01SResponse;
import io.shinhanlife.axhub.biz.sm.mmg.usecase.SmNmg0100MUseCase;
import io.shinhanlife.glow.BaseResponse;
import io.shinhanlife.glow.GlowControllerId;
import io.shinhanlife.glow.ResponseUtil;
import lombok.RequiredArgsConstructor;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@RestController
@RequiredArgsConstructor
public class SmNmg0100MController {
private final SmNmg0100MUseCase useCase;
@PostMapping("SMNMG0100M01R")
@GlowControllerId("SMNMG0100M01R")
public ResponseEntity<BaseResponse<List<SmNmg0100M01RResponse>>> SMNMG0100M01R(
@RequestBody SmNmg0100M01RRequest req) {
return ResponseUtil.ok(useCase.selectMenu(req));
}
@PostMapping("SMNMG0100M01S")
@GlowControllerId("SMNMG0100M01S")
public ResponseEntity<BaseResponse<SmNmg0100M01SResponse>> SMNMG0100M01S(
@RequestBody SmNmg0100M01SRequest req) {
return ResponseUtil.ok(useCase.saveMenu(req));
}
@PostMapping("SMNMG0100M01D")
@GlowControllerId("SMNMG0100M01D")
public ResponseEntity<BaseResponse<Void>> SMNMG0100M01D(
@RequestBody SmNmg0100M01DRequest req) {
useCase.deleteMenu(req);
return ResponseUtil.ok(null);
}
}

View File

@@ -0,0 +1,19 @@
package io.shinhanlife.axhub.biz.sm.mmg.presentation.io;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
@Getter
@Builder
@AllArgsConstructor
public class SmMmg0000M01RRequest {
public SmMmg0000M01RRequest() {
this.isActive = "Y";
}
private String isActive; // 기본 활성 메뉴만
private String path; // 라우트 경로
private String title; // 기본 활성 메뉴만
}

View File

@@ -0,0 +1,87 @@
package io.shinhanlife.axhub.biz.sm.mmg.presentation.io;
import com.fasterxml.jackson.annotation.JsonProperty;
import io.shinhanlife.axhub.biz.sm.mmg.dto.MenuListDto;
import java.util.List;
import lombok.AccessLevel;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
@Getter
@Builder
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@AllArgsConstructor
public class SmMmg0000M01RResponse {
private Integer id;
private Integer parentMenuId;
private String name;
private String path;
private MenuListDto.Meta meta;
private List<MenuListDto> children;
@Getter
@Setter
@Builder
@NoArgsConstructor
@AllArgsConstructor
public static class Meta {
private String title;
private String icon;
private boolean showBadge;
private String showTextBadge;
private boolean hide;
private boolean hideTab;
private String link;
private boolean iframe;
private boolean keepAlive;
// 메뉴 표시 순서
private Integer orderSeq;
// 활성 여부
private boolean isActive;
@JsonProperty("isHide")
public boolean isHide() {
return hide;
}
@JsonProperty("isHide")
public void setHide(boolean hide) {
this.hide = hide;
}
@JsonProperty("isHideTab")
public boolean isHideTab() {
return hideTab;
}
@JsonProperty("isHideTab")
public void setHideTab(boolean hideTab) {
this.hideTab = hideTab;
}
@JsonProperty("isIframe")
public boolean isIframe() {
return iframe;
}
@JsonProperty("isIframe")
public void setIframe(boolean iframe) {
this.iframe = iframe;
}
@JsonProperty("isActive")
public boolean isActive() {
return isActive;
}
@JsonProperty("isActive")
public void setActive(boolean isActive) {
this.isActive = isActive;
}
}
}

View File

@@ -0,0 +1,11 @@
package io.shinhanlife.axhub.biz.sm.mmg.presentation.io;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class SmNmg0100M01DRequest {
private Integer menuId;
}

View File

@@ -0,0 +1,13 @@
package io.shinhanlife.axhub.biz.sm.mmg.presentation.io;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class SmNmg0100M01RRequest {
private String isActive;
private String path;
private String title;
}

View File

@@ -0,0 +1,70 @@
package io.shinhanlife.axhub.biz.sm.mmg.presentation.io;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import java.util.List;
@Getter
@Setter
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class SmNmg0100M01RResponse {
private Integer id;
private Integer parentMenuId;
private String name;
private String path;
private Meta meta;
private List<SmNmg0100M01RResponse> children;
@Getter
@Setter
@Builder
@NoArgsConstructor
@AllArgsConstructor
public static class Meta {
private String title;
private String icon;
private String link;
private Integer orderSeq;
private boolean hide;
private boolean hideTab;
private boolean iframe;
private boolean keepAlive;
private boolean active;
@JsonProperty("isHide")
public boolean isHide() { return hide; }
@JsonProperty("isHide")
public void setHide(boolean hide) { this.hide = hide; }
@JsonProperty("isHideTab")
public boolean isHideTab() { return hideTab; }
@JsonProperty("isHideTab")
public void setHideTab(boolean hideTab) { this.hideTab = hideTab; }
@JsonProperty("isIframe")
public boolean isIframe() { return iframe; }
@JsonProperty("isIframe")
public void setIframe(boolean iframe) { this.iframe = iframe; }
@JsonProperty("keepAlive")
public boolean isKeepAlive() { return keepAlive; }
@JsonProperty("isActive")
public boolean isActive() { return active; }
@JsonProperty("isActive")
public void setActive(boolean active) { this.active = active; }
}
}

View File

@@ -0,0 +1,23 @@
package io.shinhanlife.axhub.biz.sm.mmg.presentation.io;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class SmNmg0100M01SRequest {
private Integer menuId;
private Integer parentMenuId;
private String name;
private String path;
private String title;
private String icon;
private String isHide;
private String isHideTab;
private String link;
private String isIframe;
private String keepAlive;
private Integer orderSeq;
private String isActive;
}

View File

@@ -0,0 +1,15 @@
package io.shinhanlife.axhub.biz.sm.mmg.presentation.io;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
@Getter
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class SmNmg0100M01SResponse {
private Integer menuId;
}

View File

@@ -0,0 +1,12 @@
package io.shinhanlife.axhub.biz.sm.mmg.usecase;
import io.shinhanlife.axhub.biz.sm.mmg.presentation.io.SmMmg0000M01RRequest;
import io.shinhanlife.axhub.biz.sm.mmg.presentation.io.SmMmg0000M01RResponse;
import java.util.List;
public interface SmMmg0000MUseCase {
public List<SmMmg0000M01RResponse> selectMenu(SmMmg0000M01RRequest req);
}

View File

@@ -0,0 +1,18 @@
package io.shinhanlife.axhub.biz.sm.mmg.usecase;
import io.shinhanlife.axhub.biz.sm.mmg.presentation.io.SmNmg0100M01DRequest;
import io.shinhanlife.axhub.biz.sm.mmg.presentation.io.SmNmg0100M01RRequest;
import io.shinhanlife.axhub.biz.sm.mmg.presentation.io.SmNmg0100M01RResponse;
import io.shinhanlife.axhub.biz.sm.mmg.presentation.io.SmNmg0100M01SRequest;
import io.shinhanlife.axhub.biz.sm.mmg.presentation.io.SmNmg0100M01SResponse;
import java.util.List;
public interface SmNmg0100MUseCase {
List<SmNmg0100M01RResponse> selectMenu(SmNmg0100M01RRequest req);
SmNmg0100M01SResponse saveMenu(SmNmg0100M01SRequest req);
void deleteMenu(SmNmg0100M01DRequest req);
}

View File

@@ -0,0 +1,38 @@
package io.shinhanlife.axhub.biz.sm.mmg.usecase.impl;
import java.util.ArrayList;
import java.util.List;
import io.shinhanlife.axhub.biz.sm.mmg.converter.MenuConverter;
import io.shinhanlife.axhub.biz.sm.mmg.domain.service.impl.MenuService;
import io.shinhanlife.axhub.biz.sm.mmg.dto.MenuInDto;
import io.shinhanlife.axhub.biz.sm.mmg.dto.MenuListDto;
import io.shinhanlife.axhub.biz.sm.mmg.presentation.io.SmMmg0000M01RRequest;
import io.shinhanlife.axhub.biz.sm.mmg.presentation.io.SmMmg0000M01RResponse;
import io.shinhanlife.axhub.biz.sm.mmg.usecase.SmMmg0000MUseCase;
import io.shinhanlife.glow.GlowServiceGroupId;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
@Service
@RequiredArgsConstructor
@GlowServiceGroupId(value = "SmMmgc", description="SmMmg")
public class SmMmg0000MUseCaseImpl implements SmMmg0000MUseCase {
private final MenuService menuService;
private final MenuConverter converter;
@Override
public List<SmMmg0000M01RResponse> selectMenu(SmMmg0000M01RRequest req) {
List<SmMmg0000M01RResponse> result = new ArrayList<>();
MenuInDto dto = converter.smMmg0000M01RRequestToMenuInDto(req);
List<MenuListDto> menuListDtos = menuService.selectMenu(dto);
for (MenuListDto menuListDto : menuListDtos) {
result.add(converter.menuListDtoeToSmMmg0000M01RResponse(menuListDto));
}
return result;
}
}

View File

@@ -0,0 +1,93 @@
package io.shinhanlife.axhub.biz.sm.mmg.usecase.impl;
import io.shinhanlife.axhub.biz.sm.mmg.domain.service.impl.MenuService;
import io.shinhanlife.axhub.biz.sm.mmg.dto.MenuInDto;
import io.shinhanlife.axhub.biz.sm.mmg.dto.MenuListDto;
import io.shinhanlife.axhub.biz.sm.mmg.dto.MenuSaveInDto;
import io.shinhanlife.axhub.biz.sm.mmg.presentation.io.SmNmg0100M01DRequest;
import io.shinhanlife.axhub.biz.sm.mmg.presentation.io.SmNmg0100M01RRequest;
import io.shinhanlife.axhub.biz.sm.mmg.presentation.io.SmNmg0100M01RResponse;
import io.shinhanlife.axhub.biz.sm.mmg.presentation.io.SmNmg0100M01SRequest;
import io.shinhanlife.axhub.biz.sm.mmg.presentation.io.SmNmg0100M01SResponse;
import io.shinhanlife.axhub.biz.sm.mmg.usecase.SmNmg0100MUseCase;
import io.shinhanlife.glow.GlowServiceGroupId;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;
@Service
@RequiredArgsConstructor
@GlowServiceGroupId(value = "SmNmgc", description = "SmNmg")
public class SmNmg0100MUseCaseImpl implements SmNmg0100MUseCase {
private final MenuService menuService;
@Override
public List<SmNmg0100M01RResponse> selectMenu(SmNmg0100M01RRequest req) {
MenuInDto inDto = new MenuInDto();
inDto.setIsActive(req.getIsActive());
inDto.setPath(req.getPath());
inDto.setTitle(req.getTitle());
List<MenuListDto> tree = menuService.selectMenu(inDto);
return tree.stream().map(this::toResponse).collect(Collectors.toList());
}
@Override
public SmNmg0100M01SResponse saveMenu(SmNmg0100M01SRequest req) {
MenuSaveInDto dto = new MenuSaveInDto();
dto.setMenuId(req.getMenuId());
dto.setParentMenuId(req.getParentMenuId());
dto.setName(req.getName());
dto.setPath(req.getPath());
dto.setTitle(req.getTitle());
dto.setIcon(req.getIcon());
dto.setIsHide(req.getIsHide());
dto.setIsHideTab(req.getIsHideTab());
dto.setLink(req.getLink());
dto.setIsIframe(req.getIsIframe());
dto.setKeepAlive(req.getKeepAlive());
dto.setOrderSeq(req.getOrderSeq());
dto.setIsActive(req.getIsActive());
Integer savedId = menuService.save(dto);
return SmNmg0100M01SResponse.builder().menuId(savedId).build();
}
@Override
public void deleteMenu(SmNmg0100M01DRequest req) {
menuService.delete(req.getMenuId());
}
private SmNmg0100M01RResponse toResponse(MenuListDto dto) {
MenuListDto.Meta m = dto.getMeta();
SmNmg0100M01RResponse.Meta meta = SmNmg0100M01RResponse.Meta.builder()
.title(m != null ? m.getTitle() : null)
.icon(m != null ? m.getIcon() : null)
.hide(m != null && m.isHide())
.hideTab(m != null && m.isHideTab())
.link(m != null ? m.getLink() : null)
.iframe(m != null && m.isIframe())
.keepAlive(m != null && m.isKeepAlive())
.orderSeq(m != null ? m.getOrderSeq() : 0)
.active(m != null && m.isActive())
.build();
List<SmNmg0100M01RResponse> children = (dto.getChildren() == null || dto.getChildren().isEmpty())
? Collections.emptyList()
: dto.getChildren().stream().map(this::toResponse).collect(Collectors.toList());
return SmNmg0100M01RResponse.builder()
.id(dto.getId())
.parentMenuId(dto.getParentMenuId())
.name(dto.getName())
.path(dto.getPath())
.meta(meta)
.children(children)
.build();
}
}

View File

@@ -0,0 +1,23 @@
package io.shinhanlife.axhub.biz.so.atm.converter;
import io.shinhanlife.axhub.biz.so.atm.dto.AthrOutDto;
import io.shinhanlife.axhub.biz.so.atm.dto.AthrSaveInDto;
import io.shinhanlife.axhub.biz.so.atm.dto.AthrSearchInDto;
import io.shinhanlife.axhub.biz.so.atm.dto.RoleListInDto;
import io.shinhanlife.axhub.biz.so.atm.presentation.io.AthrSaveRequest;
import io.shinhanlife.axhub.biz.so.atm.presentation.io.AthrSearchRequest;
import io.shinhanlife.axhub.biz.so.atm.presentation.io.AthrSearchResponse;
import io.shinhanlife.axhub.biz.so.atm.presentation.io.RoleListRequest;
import org.mapstruct.Mapper;
@Mapper(componentModel = "spring")
public abstract class AccessMgmtConverter {
public abstract RoleListInDto toInDto(RoleListRequest request);
public abstract AthrSearchInDto toInDto(AthrSearchRequest request);
public abstract AthrSaveInDto toInDto(AthrSaveRequest request);
public abstract AthrSearchResponse toResponse(AthrOutDto outDto);
}

View File

@@ -0,0 +1,34 @@
package io.shinhanlife.axhub.biz.so.atm.domain.repository;
import io.shinhanlife.axhub.biz.so.atm.dto.AthrItemOutDto;
import io.shinhanlife.axhub.biz.so.atm.dto.AthrSearchInDto;
import io.shinhanlife.axhub.biz.so.atm.dto.RoleKnwlAthrInDto;
import io.shinhanlife.axhub.biz.so.atm.dto.RoleListInDto;
import io.shinhanlife.axhub.biz.so.atm.dto.RoleListOutDto;
import io.shinhanlife.axhub.biz.so.atm.dto.RoleToolAthrInDto;
import io.shinhanlife.glow.GlowMybatisMapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@GlowMybatisMapper
public interface AccessMgmtMapper {
List<RoleListOutDto> selectRoles(RoleListInDto inDto);
List<AthrItemOutDto> selectAllTools();
List<AthrItemOutDto> selectAllKnwls();
List<String> selectGrantedToolIds(AthrSearchInDto inDto);
List<String> selectGrantedKnwlIds(AthrSearchInDto inDto);
void deleteToolAthr(@Param("systId") String systId, @Param("roleNo") String roleNo);
void insertToolAthr(RoleToolAthrInDto inDto);
void deleteKnwlAthr(@Param("systId") String systId, @Param("roleNo") String roleNo);
void insertKnwlAthr(RoleKnwlAthrInDto inDto);
}

View File

@@ -0,0 +1,18 @@
package io.shinhanlife.axhub.biz.so.atm.domain.service;
import io.shinhanlife.axhub.biz.so.atm.dto.AthrOutDto;
import io.shinhanlife.axhub.biz.so.atm.dto.AthrSaveInDto;
import io.shinhanlife.axhub.biz.so.atm.dto.AthrSearchInDto;
import io.shinhanlife.axhub.biz.so.atm.dto.RoleListInDto;
import io.shinhanlife.axhub.biz.so.atm.dto.RoleListOutDto;
import java.util.List;
public interface AccessMgmtService {
List<RoleListOutDto> getRoles(RoleListInDto inDto);
AthrOutDto getAthr(AthrSearchInDto inDto);
void saveAthr(AthrSaveInDto inDto);
}

View File

@@ -0,0 +1,128 @@
package io.shinhanlife.axhub.biz.so.atm.domain.service.impl;
import io.shinhanlife.axhub.biz.so.atm.domain.repository.AccessMgmtMapper;
import io.shinhanlife.axhub.biz.so.atm.domain.service.AccessMgmtService;
import io.shinhanlife.axhub.biz.so.atm.dto.AthrItemOutDto;
import io.shinhanlife.axhub.biz.so.atm.dto.AthrOutDto;
import io.shinhanlife.axhub.biz.so.atm.dto.AthrSaveInDto;
import io.shinhanlife.axhub.biz.so.atm.dto.AthrSearchInDto;
import io.shinhanlife.axhub.biz.so.atm.dto.RoleKnwlAthrInDto;
import io.shinhanlife.axhub.biz.so.atm.dto.RoleListInDto;
import io.shinhanlife.axhub.biz.so.atm.dto.RoleListOutDto;
import io.shinhanlife.axhub.biz.so.atm.dto.RoleToolAthrInDto;
import io.shinhanlife.axhub.common.util.SessionUtil;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Date;
import java.util.List;
import java.util.Set;
import java.util.UUID;
import java.util.stream.Collectors;
@Service
@RequiredArgsConstructor
public class AccessMgmtServiceImpl implements AccessMgmtService {
private final AccessMgmtMapper accessMgmtMapper;
private static final String SYSTEM_CD = "AXH";
private static final String SYSTEM_PRG = "SOATM0100";
@Override
public List<RoleListOutDto> getRoles(RoleListInDto inDto) {
return accessMgmtMapper.selectRoles(inDto);
}
@Override
public AthrOutDto getAthr(AthrSearchInDto inDto) {
Set<String> grantedToolIds = accessMgmtMapper.selectGrantedToolIds(inDto)
.stream().collect(Collectors.toSet());
Set<String> grantedKnwlIds = accessMgmtMapper.selectGrantedKnwlIds(inDto)
.stream().collect(Collectors.toSet());
List<AthrItemOutDto> tools = accessMgmtMapper.selectAllTools()
.stream()
.peek(item -> item.setGranted(grantedToolIds.contains(item.getResourceId())))
.collect(Collectors.toList());
List<AthrItemOutDto> knwls = accessMgmtMapper.selectAllKnwls()
.stream()
.peek(item -> item.setGranted(grantedKnwlIds.contains(item.getResourceId())))
.collect(Collectors.toList());
return new AthrOutDto(tools, knwls);
}
@Override
@Transactional
public void saveAthr(AthrSaveInDto inDto) {
Date now = new Date();
String systId = inDto.getSystId();
String roleNo = inDto.getRoleNo();
accessMgmtMapper.deleteToolAthr(systId, roleNo);
if (inDto.getGrantedToolIds() != null) {
for (String toolId : inDto.getGrantedToolIds()) {
accessMgmtMapper.insertToolAthr(buildToolAthrInDto(systId, roleNo, toolId, now));
}
}
accessMgmtMapper.deleteKnwlAthr(systId, roleNo);
if (inDto.getGrantedKnwlIds() != null) {
for (String knwlId : inDto.getGrantedKnwlIds()) {
accessMgmtMapper.insertKnwlAthr(buildKnwlAthrInDto(systId, roleNo, knwlId, now));
}
}
}
private RoleToolAthrInDto buildToolAthrInDto(String systId, String roleNo, String toolId, Date now) {
RoleToolAthrInDto dto = new RoleToolAthrInDto();
dto.setRoleToolAthrId("RTA-" + shortUuid());
dto.setSystId(systId);
dto.setRoleNo(roleNo);
dto.setToolId(toolId);
dto.setPuseYn("Y");
fillAudit(dto, now);
return dto;
}
private RoleKnwlAthrInDto buildKnwlAthrInDto(String systId, String roleNo, String knwlId, Date now) {
RoleKnwlAthrInDto dto = new RoleKnwlAthrInDto();
dto.setRoleKnwlAthrId("RKA-" + shortUuid());
dto.setSystId(systId);
dto.setRoleNo(roleNo);
dto.setKnwlId(knwlId);
dto.setPuseYn("Y");
fillAudit(dto, now);
return dto;
}
private void fillAudit(RoleToolAthrInDto dto, Date now) {
String prafNo = SessionUtil.getPrafNo();
String ognzNo = SessionUtil.getOgnzNo();
dto.setSystRgiDt(now); dto.setSystRgiPrafNo(prafNo);
dto.setSystRgiOgnzNo(ognzNo); dto.setSystRgiSystCd(SYSTEM_CD);
dto.setSystRgiPrgrId(SYSTEM_PRG);
dto.setSystChgDt(now); dto.setSystChgPrafNo(prafNo);
dto.setSystChgOgnzNo(ognzNo); dto.setSystChgSystCd(SYSTEM_CD);
dto.setSystChgPrgrId(SYSTEM_PRG);
}
private void fillAudit(RoleKnwlAthrInDto dto, Date now) {
String prafNo = SessionUtil.getPrafNo();
String ognzNo = SessionUtil.getOgnzNo();
dto.setSystRgiDt(now); dto.setSystRgiPrafNo(prafNo);
dto.setSystRgiOgnzNo(ognzNo); dto.setSystRgiSystCd(SYSTEM_CD);
dto.setSystRgiPrgrId(SYSTEM_PRG);
dto.setSystChgDt(now); dto.setSystChgPrafNo(prafNo);
dto.setSystChgOgnzNo(ognzNo); dto.setSystChgSystCd(SYSTEM_CD);
dto.setSystChgPrgrId(SYSTEM_PRG);
}
private String shortUuid() {
return UUID.randomUUID().toString().replace("-", "").substring(0, 12).toUpperCase();
}
}

View File

@@ -0,0 +1,14 @@
package io.shinhanlife.axhub.biz.so.atm.dto;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class AthrItemOutDto {
private String resourceId;
private String resourceNm;
private String resourceDs;
private String typeCode;
private boolean granted;
}

View File

@@ -0,0 +1,13 @@
package io.shinhanlife.axhub.biz.so.atm.dto;
import lombok.AllArgsConstructor;
import lombok.Getter;
import java.util.List;
@Getter
@AllArgsConstructor
public class AthrOutDto {
private List<AthrItemOutDto> tools;
private List<AthrItemOutDto> knwls;
}

View File

@@ -0,0 +1,15 @@
package io.shinhanlife.axhub.biz.so.atm.dto;
import lombok.Getter;
import lombok.Setter;
import java.util.List;
@Getter
@Setter
public class AthrSaveInDto {
private String systId;
private String roleNo;
private List<String> grantedToolIds;
private List<String> grantedKnwlIds;
}

View File

@@ -0,0 +1,11 @@
package io.shinhanlife.axhub.biz.so.atm.dto;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class AthrSearchInDto {
private String systId;
private String roleNo;
}

View File

@@ -0,0 +1,27 @@
package io.shinhanlife.axhub.biz.so.atm.dto;
import lombok.Getter;
import lombok.Setter;
import java.util.Date;
@Getter
@Setter
public class RoleKnwlAthrInDto {
private String roleKnwlAthrId;
private String systId;
private String roleNo;
private String knwlId;
private String puseYn;
private Date systRgiDt;
private String systRgiPrafNo;
private String systRgiOgnzNo;
private String systRgiSystCd;
private String systRgiPrgrId;
private Date systChgDt;
private String systChgPrafNo;
private String systChgOgnzNo;
private String systChgSystCd;
private String systChgPrgrId;
}

View File

@@ -0,0 +1,12 @@
package io.shinhanlife.axhub.biz.so.atm.dto;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class RoleListInDto {
private String systId;
private String puseYn;
private String keyword;
}

View File

@@ -0,0 +1,14 @@
package io.shinhanlife.axhub.biz.so.atm.dto;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class RoleListOutDto {
private String systId;
private String roleNo;
private String roleNm;
private String roleDs;
private String puseYn;
}

View File

@@ -0,0 +1,27 @@
package io.shinhanlife.axhub.biz.so.atm.dto;
import lombok.Getter;
import lombok.Setter;
import java.util.Date;
@Getter
@Setter
public class RoleToolAthrInDto {
private String roleToolAthrId;
private String systId;
private String roleNo;
private String toolId;
private String puseYn;
private Date systRgiDt;
private String systRgiPrafNo;
private String systRgiOgnzNo;
private String systRgiSystCd;
private String systRgiPrgrId;
private Date systChgDt;
private String systChgPrafNo;
private String systChgOgnzNo;
private String systChgSystCd;
private String systChgPrgrId;
}

View File

@@ -0,0 +1,45 @@
package io.shinhanlife.axhub.biz.so.atm.presentation;
import io.shinhanlife.axhub.biz.so.atm.dto.RoleListOutDto;
import io.shinhanlife.axhub.biz.so.atm.presentation.io.AthrSaveRequest;
import io.shinhanlife.axhub.biz.so.atm.presentation.io.AthrSearchRequest;
import io.shinhanlife.axhub.biz.so.atm.presentation.io.AthrSearchResponse;
import io.shinhanlife.axhub.biz.so.atm.presentation.io.RoleListRequest;
import io.shinhanlife.axhub.biz.so.atm.usecase.AccessMgmtUseCase;
import io.shinhanlife.glow.BaseResponse;
import io.shinhanlife.glow.ResponseUtil;
import lombok.RequiredArgsConstructor;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@RestController
@RequestMapping("/so/atm")
@RequiredArgsConstructor
public class SOATM0100Controller {
private final AccessMgmtUseCase accessMgmtUseCase;
@PostMapping("/SOATM0100R")
public ResponseEntity<BaseResponse<List<RoleListOutDto>>> getRoles(
@RequestBody RoleListRequest request) {
return ResponseUtil.ok(accessMgmtUseCase.getRoles(request));
}
@PostMapping("/SOATM0101R")
public ResponseEntity<BaseResponse<AthrSearchResponse>> getAthr(
@RequestBody AthrSearchRequest request) {
return ResponseUtil.ok(accessMgmtUseCase.getAthr(request));
}
@PostMapping("/SOATM0100U")
public ResponseEntity<BaseResponse<Void>> saveAthr(
@RequestBody AthrSaveRequest request) {
accessMgmtUseCase.saveAthr(request);
return ResponseUtil.ok();
}
}

View File

@@ -0,0 +1,15 @@
package io.shinhanlife.axhub.biz.so.atm.presentation.io;
import lombok.Getter;
import lombok.Setter;
import java.util.List;
@Getter
@Setter
public class AthrSaveRequest {
private String systId;
private String roleNo;
private List<String> grantedToolIds;
private List<String> grantedKnwlIds;
}

View File

@@ -0,0 +1,11 @@
package io.shinhanlife.axhub.biz.so.atm.presentation.io;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class AthrSearchRequest {
private String systId;
private String roleNo;
}

View File

@@ -0,0 +1,14 @@
package io.shinhanlife.axhub.biz.so.atm.presentation.io;
import io.shinhanlife.axhub.biz.so.atm.dto.AthrItemOutDto;
import lombok.AllArgsConstructor;
import lombok.Getter;
import java.util.List;
@Getter
@AllArgsConstructor
public class AthrSearchResponse {
private List<AthrItemOutDto> tools;
private List<AthrItemOutDto> knwls;
}

View File

@@ -0,0 +1,12 @@
package io.shinhanlife.axhub.biz.so.atm.presentation.io;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class RoleListRequest {
private String systId;
private String puseYn;
private String keyword;
}

View File

@@ -0,0 +1,18 @@
package io.shinhanlife.axhub.biz.so.atm.usecase;
import io.shinhanlife.axhub.biz.so.atm.dto.RoleListOutDto;
import io.shinhanlife.axhub.biz.so.atm.presentation.io.AthrSaveRequest;
import io.shinhanlife.axhub.biz.so.atm.presentation.io.AthrSearchRequest;
import io.shinhanlife.axhub.biz.so.atm.presentation.io.AthrSearchResponse;
import io.shinhanlife.axhub.biz.so.atm.presentation.io.RoleListRequest;
import java.util.List;
public interface AccessMgmtUseCase {
List<RoleListOutDto> getRoles(RoleListRequest request);
AthrSearchResponse getAthr(AthrSearchRequest request);
void saveAthr(AthrSaveRequest request);
}

View File

@@ -0,0 +1,37 @@
package io.shinhanlife.axhub.biz.so.atm.usecase.impl;
import io.shinhanlife.axhub.biz.so.atm.converter.AccessMgmtConverter;
import io.shinhanlife.axhub.biz.so.atm.domain.service.AccessMgmtService;
import io.shinhanlife.axhub.biz.so.atm.dto.RoleListOutDto;
import io.shinhanlife.axhub.biz.so.atm.presentation.io.AthrSaveRequest;
import io.shinhanlife.axhub.biz.so.atm.presentation.io.AthrSearchRequest;
import io.shinhanlife.axhub.biz.so.atm.presentation.io.AthrSearchResponse;
import io.shinhanlife.axhub.biz.so.atm.presentation.io.RoleListRequest;
import io.shinhanlife.axhub.biz.so.atm.usecase.AccessMgmtUseCase;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
@RequiredArgsConstructor
public class AccessMgmtUseCaseImpl implements AccessMgmtUseCase {
private final AccessMgmtService accessMgmtService;
private final AccessMgmtConverter converter;
@Override
public List<RoleListOutDto> getRoles(RoleListRequest request) {
return accessMgmtService.getRoles(converter.toInDto(request));
}
@Override
public AthrSearchResponse getAthr(AthrSearchRequest request) {
return converter.toResponse(accessMgmtService.getAthr(converter.toInDto(request)));
}
@Override
public void saveAthr(AthrSaveRequest request) {
accessMgmtService.saveAthr(converter.toInDto(request));
}
}

View File

@@ -0,0 +1,19 @@
package io.shinhanlife.axhub.common.config;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
public class CorsConfig implements WebMvcConfigurer {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**") // 모든 엔드포인트에 대해 CORS 허용
.allowedOrigins("http://localhost:3006") // Vue 앱의 오리진 허용 (필요 시 여러 오리진 추가: .allowedOrigins("http://localhost:3006", "https://example.com"))
.allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS") // 허용할 HTTP 메서드
.allowedHeaders("*") // 모든 헤더 허용
.allowCredentials(true) // 쿠키/인증 정보 허용 (필요 시)
.maxAge(3600); // preflight 요청 캐시 시간 (초 단위)
}
}

View File

@@ -0,0 +1,40 @@
package io.shinhanlife.axhub.common.config;
import com.p6spy.engine.logging.Category;
import com.p6spy.engine.spy.appender.MessageFormattingStrategy;
public class P6SpySqlFormatter implements MessageFormattingStrategy {
@Override
public String formatMessage(int connectionId, String now, long elapsed,
String category, String prepared, String sql, String url) {
if (sql == null || sql.isBlank()) return "";
if (Category.STATEMENT.getName().equals(category)) {
String prettySQL = sql
.replaceAll("(?i)\\bSELECT\\b", "\nSELECT")
.replaceAll("(?i)\\bFROM\\b", "\n FROM")
.replaceAll("(?i)\\bWHERE\\b", "\n WHERE")
.replaceAll("(?i)\\bAND\\b", "\n AND")
.replaceAll("(?i)\\bOR\\b", "\n OR")
.replaceAll("(?i)\\bINNER JOIN\\b", "\n INNER JOIN")
.replaceAll("(?i)\\bLEFT JOIN\\b", "\n LEFT JOIN")
.replaceAll("(?i)\\bORDER BY\\b", "\n ORDER BY")
.replaceAll("(?i)\\bGROUP BY\\b", "\n GROUP BY")
.replaceAll("(?i)\\bINSERT INTO\\b", "\nINSERT INTO")
.replaceAll("(?i)\\bVALUES\\b", "\n VALUES")
.replaceAll("(?i)\\bUPDATE\\b", "\nUPDATE")
.replaceAll("(?i)\\bSET\\b", "\n SET")
.replaceAll("(?i)\\bDELETE FROM\\b", "\nDELETE FROM");
return String.format("""
\n┌─────────────────────────────────────────
│ SQL [%dms]
│%s
└─────────────────────────────────────────
""", elapsed, prettySQL.indent(2).stripTrailing());
}
return "";
}
}

View File

@@ -0,0 +1,15 @@
package io.shinhanlife.axhub.common.session.converter;
import io.shinhanlife.axhub.common.session.dto.SessionDto;
import io.shinhanlife.axhub.common.session.dto.ZtUsacOutDto;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
@Mapper(componentModel = "spring")
public abstract class ZtUsacConverter {
@Mapping(target = "loginDtm", ignore = true)
@Mapping(target = "isManager", ignore = true)
public abstract SessionDto toSessionDto(ZtUsacOutDto dto);
}

View File

@@ -0,0 +1,37 @@
package io.shinhanlife.axhub.common.session.domain.model;
import io.shinhanlife.glow.db.dto.AuditInfo;
import lombok.AccessLevel;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
@Getter
@Builder
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@AllArgsConstructor
public class ZtUsacModel extends AuditInfo {
/* 인사번호 */
private String prafNo;
/* 인사명 */
private String prafNm;
/* 조직번호 */
private String ognzNo;
/* 이메일주소 */
private String addre;
/* 인사직무코드 */
private String prafOfduCd;
/* 인사직무명 */
private String prafOfduNm;
/* 인사직급코드 */
private String prafOfleCd;
/* 인사직급명 */
private String prafOfleNm;
/* 인사직책코드 */
private String prafDutyCd;
/* 인사직책명 */
private String prafDutyNm;
}

View File

@@ -0,0 +1,19 @@
package io.shinhanlife.axhub.common.session.domain.repository;
import io.shinhanlife.glow.GlowMybatisMapper;
import io.shinhanlife.axhub.common.session.dto.ZtUsacInDto;
import io.shinhanlife.axhub.common.session.dto.ZtUsacOutDto;
@GlowMybatisMapper
public interface ZtUsacRepository {
/**
* 사용자 조회 (단건)
*
* @param dto 사번
* @return 인사정보
*/
ZtUsacOutDto selectZtUsac(ZtUsacInDto dto);
}

View File

@@ -0,0 +1,15 @@
package io.shinhanlife.axhub.common.session.domain.service;
import io.shinhanlife.axhub.common.session.dto.ZtUsacInDto;
import io.shinhanlife.axhub.common.session.dto.ZtUsacOutDto;
public interface ZtUsacService {
/**
* 사용자 조회 (단건)
*
* @param dto 사번
* @return 인사정보
*/
ZtUsacOutDto selectZtUsac(ZtUsacInDto dto);
}

View File

@@ -0,0 +1,28 @@
package io.shinhanlife.axhub.common.session.domain.service.impl;
import io.shinhanlife.axhub.common.session.domain.repository.ZtUsacRepository;
import io.shinhanlife.axhub.common.session.domain.service.ZtUsacService;
import io.shinhanlife.axhub.common.session.dto.ZtUsacInDto;
import io.shinhanlife.axhub.common.session.dto.ZtUsacOutDto;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
@Service
@RequiredArgsConstructor
public class ZtUsacServiceImpl implements ZtUsacService {
private final ZtUsacRepository ztUsacRepository;
/**
* 사용자 조회 (단건)
*
* @param dto 사번
* @return 인사정보
*/
@Override
public ZtUsacOutDto selectZtUsac(ZtUsacInDto dto) {
ZtUsacOutDto result = ztUsacRepository.selectZtUsac(dto);
result.initLists();
return result;
}
}

View File

@@ -0,0 +1,62 @@
package io.shinhanlife.axhub.common.session.dto;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.List;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
@Builder
@AllArgsConstructor
public class SessionDto {
/* 인사번호 */
private String prafNo;
/* 인사명 */
private String prafNm;
/* 조직번호 */
private String ognzNo;
/* 조직번호 */
private String ognzNm;
/* 이메일주소 */
private String addre;
/* 인사직무코드 */
private String prafOfduCd;
/* 인사직무명 */
private String prafOfduNm;
/* 인사직급코드 */
private String prafOfleCd;
/* 인사직급명 */
private String prafOfleNm;
/* 인사직책코드 */
private String prafDutyCd;
/* 인사직책명 */
private String prafDutyNm;
private List<String> roleNoList;
private List<String> roleNmList;
private List<String> tgtrPrafNoList;
private List<String> tgtrOgnzNoList;
// 유틸성
private String loginDtm; // 로그인일시
private String isManager; // 관리자여부
public void setLoginDtm() {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMddHHmmssSSS");
this.loginDtm = LocalDateTime.now().format(formatter);
}
public void setIsManager(String isManager) {
// TODO 역할 필터링 후 관리자 여부 체크
this.isManager = "Y";
}
}

View File

@@ -0,0 +1,24 @@
package io.shinhanlife.axhub.common.session.dto;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
@Builder
@AllArgsConstructor
public class ZtUsacInDto {
public ZtUsacInDto() {
setPuseYn("Y");
}
/* 인사번호 */
private String prafNo;
/* 사용여부 */
private String puseYn;
}

View File

@@ -0,0 +1,68 @@
package io.shinhanlife.axhub.common.session.dto;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import lombok.AccessLevel;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
@Getter
@Builder
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@AllArgsConstructor
public class ZtUsacOutDto {
/* 인사번호 */
private String prafNo;
/* 인사명 */
private String prafNm;
/* 조직번호 */
private String ognzNo;
/* 조직명 */
private String ognzNm;
/* 이메일주소 */
// @GlowSecureField(type = DataSecureType.DECRYPT_DB, direction = SafeDBType.COMM) TODO 방화벽 뚫리면 확인
private String addre;
/* 인사직무코드 */
private String prafOfduCd;
/* 인사직무명 */
private String prafOfduNm;
/* 인사직급코드 */
private String prafOfleCd;
/* 인사직급명 */
private String prafOfleNm;
/* 인사직책코드 */
private String prafDutyCd;
/* 인사직책명 */
private String prafDutyNm;
/* 사용여부 */
private String puseYn;
private String roleNoStrList;
private String roleNmStrList;
private String tgtrPrafNoStrList;
private String tgtrOgnzNoStrList;
private List<String> roleNoList;
private List<String> roleNmList;
private List<String> tgtrPrafNoList;
private List<String> tgtrOgnzNoList;
public void initLists() {
this.roleNoList = convertStrToList(roleNoStrList);
this.roleNmList = convertStrToList(roleNmStrList);
this.tgtrPrafNoList = convertStrToList(tgtrPrafNoStrList);
this.tgtrOgnzNoList = convertStrToList(tgtrOgnzNoStrList);
}
private List<String> convertStrToList(String str) {
if (str == null || str.isEmpty()) {
return new ArrayList<>();
}
return Arrays.asList(str.split(","));
}
}

View File

@@ -0,0 +1,77 @@
package io.shinhanlife.axhub.common.session.presentation;
import io.micrometer.common.util.StringUtils;
import io.shinhanlife.glow.BaseResponse;
import io.shinhanlife.glow.BizException;
import io.shinhanlife.glow.GlowControllerId;
import io.shinhanlife.glow.ResponseUtil;
import io.shinhanlife.axhub.common.session.converter.ZtUsacConverter;
import io.shinhanlife.axhub.common.session.domain.service.ZtUsacService;
import io.shinhanlife.axhub.common.session.dto.SessionDto;
import io.shinhanlife.axhub.common.session.dto.ZtUsacInDto;
import io.shinhanlife.axhub.common.session.dto.ZtUsacOutDto;
import io.shinhanlife.axhub.common.session.presentation.io.SsoResponse;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.servlet.http.HttpSession;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.javassist.NotFoundException;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.Objects;
@RestController
@RequiredArgsConstructor
@Slf4j
@RequestMapping("/sso")
public class SsoRestController {
private static final String NLS_LOGIN_URL = "";
private final ZtUsacService ztUsacService;
private final ZtUsacConverter ztUsacConverter;
/**
* sso 연동 전 임시 로그인
*
* @param request
* @param response
* @param session
* @param <T>
* @return
*/
@GlowControllerId("tempLogin")
@PostMapping("/tempLogin")
public <T> ResponseEntity<BaseResponse<SsoResponse>> tempLogin(HttpServletRequest request, HttpServletResponse response,
HttpSession session, @RequestBody SessionDto requestDto) {
try {
if (StringUtils.isEmpty(requestDto.getPrafNo())) {
throw new NotFoundException("SSO >> not found sso id");
}
// DB 유저 가져오기
ZtUsacOutDto ztUsacOutDto = ztUsacService.selectZtUsac(ZtUsacInDto.builder().prafNo(requestDto.getPrafNo()).puseYn("Y")
.build());
if (Objects.isNull(ztUsacOutDto) || StringUtils.isEmpty(ztUsacOutDto.getPrafNo())) {
throw new BizException("SSO >> not found UserInfo >> retCode:");
}
SessionDto sessionDto = ztUsacConverter.toSessionDto(ztUsacOutDto);
sessionDto.setLoginDtm(); // 로그인 시점 세팅
session.setAttribute("userInfo", sessionDto);
return ResponseUtil.ok(SsoResponse.builder().retCode("0").userInfo(sessionDto).build());
} catch (Exception e) {
log.error("로그인 실패", e);
session.invalidate();
}
return ResponseUtil.ok(SsoResponse.builder().redirectUrl(NLS_LOGIN_URL).build());
}
}

View File

@@ -0,0 +1,21 @@
package io.shinhanlife.axhub.common.session.presentation.io;
import io.shinhanlife.axhub.common.session.dto.SessionDto;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
@Getter
@Setter
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class SsoResponse {
private String retCode;
private SessionDto userInfo;
private String redirectUrl;
}

View File

@@ -0,0 +1,31 @@
package io.shinhanlife.axhub.common.util;
import io.shinhanlife.axhub.common.session.dto.SessionDto;
import jakarta.servlet.http.HttpSession;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
public class SessionUtil {
private static final String SESSION_KEY = "userInfo";
private SessionUtil() {}
public static SessionDto getSession() {
ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
if (attributes == null) return null;
HttpSession session = attributes.getRequest().getSession(false);
if (session == null) return null;
return (SessionDto) session.getAttribute(SESSION_KEY);
}
public static String getPrafNo() {
SessionDto session = getSession();
return session != null ? session.getPrafNo() : null;
}
public static String getOgnzNo() {
SessionDto session = getSession();
return session != null ? session.getOgnzNo() : null;
}
}

View File

@@ -0,0 +1,23 @@
package io.shinhanlife.axhub.sample.converter;
import io.shinhanlife.axhub.sample.domain.model.AppliSystNtfyPatiModel;
import io.shinhanlife.axhub.sample.dto.AppliSystNtfyRgiInDTO;
import io.shinhanlife.axhub.sample.dto.StrnTermListInDTO;
import io.shinhanlife.axhub.sample.dto.StrnTermListOutDTO;
import io.shinhanlife.axhub.sample.presentation.io.AppliSystNtfyPatiRequest;
import io.shinhanlife.axhub.sample.presentation.io.StrnTermRequest;
import io.shinhanlife.axhub.sample.presentation.io.StrnTermResponse;
import org.mapstruct.Mapper;
@Mapper(componentModel = "spring")
public abstract class SampleConverter {
public abstract StrnTermListInDTO convertRequestToDto(StrnTermRequest req);
public abstract StrnTermResponse convertDtoToResponse(StrnTermListOutDTO outDto);
public abstract AppliSystNtfyPatiModel convertDtoToModel(AppliSystNtfyRgiInDTO inDto);
public abstract AppliSystNtfyRgiInDTO convertAppliRequestToDto(AppliSystNtfyPatiRequest request);
}

View File

@@ -0,0 +1,21 @@
package io.shinhanlife.axhub.sample.domain.model;
import io.shinhanlife.glow.db.dto.AuditInfo;
import lombok.*;
@Getter
@Builder
@AllArgsConstructor
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class AppliSystNtfyPatiModel extends AuditInfo {
private String appliSystNtfyPatiId;
private String appliSystNtfyKdCd;
private String appliDutjCd;
private String appliDutjPrjcCd;
private String ntfyMsgCt;
private String ntfyOccDt;
private String ntfyCfmDt;
private String ntfyTrgtPrafNo;
private String shmsPmlYn;
private String ntfyCfmYn;
}

View File

@@ -0,0 +1,20 @@
package io.shinhanlife.axhub.sample.domain.repository;
import io.shinhanlife.axhub.sample.domain.model.AppliSystNtfyPatiModel;
import io.shinhanlife.axhub.sample.dto.StrnTermListInDTO;
import io.shinhanlife.axhub.sample.dto.StrnTermListOutDTO;
import io.shinhanlife.glow.GlowIndexPaging;
import io.shinhanlife.glow.GlowMybatisMapper;
import io.shinhanlife.glow.PageInfo;
import java.util.List;
@GlowMybatisMapper
public interface GlowSampleRepository {
@GlowIndexPaging
List<StrnTermListOutDTO.StrnTerm> selectStrnTerm(StrnTermListInDTO inDto, PageInfo pageInfo);
int insertAppliSystNtfyPati(AppliSystNtfyPatiModel appliSystNtfyPatiModel);
}

View File

@@ -0,0 +1,11 @@
package io.shinhanlife.axhub.sample.domain.service;
import io.shinhanlife.axhub.sample.dto.AppliSystNtfyRgiInDTO;
import io.shinhanlife.axhub.sample.dto.StrnTermListInDTO;
import io.shinhanlife.axhub.sample.dto.StrnTermListOutDTO;
import io.shinhanlife.glow.PageInfo;
public interface GlowSampleService {
StrnTermListOutDTO getStrnTerms(StrnTermListInDTO inDto, PageInfo pageInfo);
int insertAppliSystNtfyPati(AppliSystNtfyRgiInDTO inDto);
}

View File

@@ -0,0 +1,41 @@
package io.shinhanlife.axhub.sample.domain.service.impl;
import io.shinhanlife.axhub.sample.converter.SampleConverter;
import io.shinhanlife.axhub.sample.domain.model.AppliSystNtfyPatiModel;
import io.shinhanlife.axhub.sample.domain.repository.GlowSampleRepository;
import io.shinhanlife.axhub.sample.domain.service.GlowSampleService;
import io.shinhanlife.axhub.sample.dto.AppliSystNtfyRgiInDTO;
import io.shinhanlife.axhub.sample.dto.StrnTermListInDTO;
import io.shinhanlife.axhub.sample.dto.StrnTermListOutDTO;
import io.shinhanlife.glow.GlowLogger;
import io.shinhanlife.glow.GlowLogTarget;
import io.shinhanlife.glow.PageInfo;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
@RequiredArgsConstructor
public class GlowSampleServiceImpl implements GlowSampleService {
@GlowLogTarget(GlowLogTarget.Target.FILE)
private final GlowLogger log;
private final GlowSampleRepository glowSampleRepository;
private final SampleConverter sampleConverter;
@Override
public StrnTermListOutDTO getStrnTerms(StrnTermListInDTO inDto, PageInfo pageInfo) {
List<StrnTermListOutDTO.StrnTerm> out = glowSampleRepository.selectStrnTerm(inDto, pageInfo);
return StrnTermListOutDTO.builder()
.strnTerms(out)
.pageInfo(pageInfo)
.build();
}
@Override
public int insertAppliSystNtfyPati(AppliSystNtfyRgiInDTO inDto) {
AppliSystNtfyPatiModel appliSystNtfyPatiModel = sampleConverter.convertDtoToModel(inDto);
return glowSampleRepository.insertAppliSystNtfyPati(appliSystNtfyPatiModel);
}
}

View File

@@ -0,0 +1,21 @@
package io.shinhanlife.axhub.sample.dto;
import lombok.*;
@Getter
@Setter
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class AppliSystNtfyRgiInDTO {
private String appliSystNtfyPatiId;
private String appliSystNtfyKdCd;
private String appliDutjCd;
private String appliDutjPrjcCd;
private String ntfyMsgCt;
private String ntfyOccDt;
private String ntfyCfmDt;
private String ntfyTrgtPrafNo;
private String shmsPmlYn;
private String ntfyCfmYn;
}

View File

@@ -0,0 +1,12 @@
package io.shinhanlife.axhub.sample.dto;
import lombok.Builder;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
@Builder
public class StrnTermListInDTO {
private String strnTermHanNm;
}

View File

@@ -0,0 +1,27 @@
package io.shinhanlife.axhub.sample.dto;
import io.shinhanlife.glow.PageInfo;
import lombok.Builder;
import lombok.Getter;
import lombok.Setter;
import java.util.List;
@Builder
@Getter
@Setter
public class StrnTermListOutDTO {
private List<StrnTerm> strnTerms;
private PageInfo pageInfo;
@Builder
@Getter
@Setter
public static class StrnTerm{
private String strnTermHanNm;
private String strnTermEngcAbrNm;
private String strnTermEngNm;
private String strnTermScrnTermNm;
}
}

View File

@@ -0,0 +1,40 @@
package io.shinhanlife.axhub.sample.presentation;
import io.shinhanlife.glow.BaseResponse;
import io.shinhanlife.glow.GlowControllerId;
import io.shinhanlife.glow.GlowLogTarget;
import io.shinhanlife.glow.GlowLogger;
import io.shinhanlife.glow.ResponseUtil;
import io.shinhanlife.axhub.sample.presentation.io.AppliSystNtfyPatiRequest;
import io.shinhanlife.axhub.sample.presentation.io.AppliSystNtfyPatiResponse;
import io.shinhanlife.axhub.sample.presentation.io.StrnTermRequest;
import io.shinhanlife.axhub.sample.presentation.io.StrnTermResponse;
import io.shinhanlife.axhub.sample.usecase.GlowSampleUseCase;
import lombok.RequiredArgsConstructor;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequiredArgsConstructor
public class GlowSampleController {
@GlowLogTarget({GlowLogTarget.Target.CONSOLE, GlowLogTarget.Target.FILE})
private final GlowLogger log;
private final GlowSampleUseCase glowSampleUseCase;
@GlowControllerId(value = "selectStrnTerm")
@PostMapping("/selectStrnTerm")
public ResponseEntity<BaseResponse<StrnTermResponse>> getStrnTerms(@RequestBody StrnTermRequest request) {
return ResponseUtil.ok(glowSampleUseCase.getStrnTerms(request));
}
@GlowControllerId(value = "insertAp")
@PostMapping("/insertAppliSystNtfyPati")
public ResponseEntity<BaseResponse<AppliSystNtfyPatiResponse>> insertAppliSystNtfyPati(@RequestBody AppliSystNtfyPatiRequest request) {
return ResponseUtil.ok(glowSampleUseCase.insertAppliSystNtfyPati(request));
}
}

View File

@@ -0,0 +1,20 @@
package io.shinhanlife.axhub.sample.presentation.io;
import lombok.*;
@Getter
@Builder
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@AllArgsConstructor
public class AppliSystNtfyPatiRequest {
private String appliSystNtfyPatiId;
private String appliSystNtfyKdCd;
private String appliDutjCd;
private String appliDutjPrjcCd;
private String ntfyMsgCt;
private String ntfyOccDt;
private String ntfyCfmDt;
private String ntfyTrgtPrafNo;
private String shmsPmlYn;
private String ntfyCfmYn;
}

View File

@@ -0,0 +1,12 @@
package io.shinhanlife.axhub.sample.presentation.io;
import lombok.*;
@Getter
@Builder
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@AllArgsConstructor
public class AppliSystNtfyPatiResponse {
private String successYn;
private String msg;
}

View File

@@ -0,0 +1,14 @@
package io.shinhanlife.axhub.sample.presentation.io;
import io.shinhanlife.glow.PageInfo;
import lombok.*;
@Getter
@Builder
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@AllArgsConstructor
public class StrnTermRequest {
private PageInfo pageInfo;
private String strnTermHanNm;
}

View File

@@ -0,0 +1,27 @@
package io.shinhanlife.axhub.sample.presentation.io;
import io.shinhanlife.glow.PageInfo;
import lombok.*;
import java.util.List;
@Getter
@Builder
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@AllArgsConstructor
public class StrnTermResponse {
private List<StrnTerm> strnTerms;
private PageInfo pageInfo;
@Builder
@Getter
@NoArgsConstructor
@AllArgsConstructor
public static class StrnTerm{
private String strnTermHanNm;
private String strnTermEngcAbrNm;
private String strnTermEngNm;
private String strnTermScrnTermNm;
}
}

View File

@@ -0,0 +1,11 @@
package io.shinhanlife.axhub.sample.usecase;
import io.shinhanlife.axhub.sample.presentation.io.AppliSystNtfyPatiRequest;
import io.shinhanlife.axhub.sample.presentation.io.AppliSystNtfyPatiResponse;
import io.shinhanlife.axhub.sample.presentation.io.StrnTermRequest;
import io.shinhanlife.axhub.sample.presentation.io.StrnTermResponse;
public interface GlowSampleUseCase {
StrnTermResponse getStrnTerms(StrnTermRequest req);
AppliSystNtfyPatiResponse insertAppliSystNtfyPati(AppliSystNtfyPatiRequest req);
}

View File

@@ -0,0 +1,43 @@
package io.shinhanlife.axhub.sample.usecase.impl;
import io.shinhanlife.axhub.sample.converter.SampleConverter;
import io.shinhanlife.axhub.sample.domain.service.GlowSampleService;
import io.shinhanlife.axhub.sample.dto.StrnTermListOutDTO;
import io.shinhanlife.axhub.sample.presentation.io.AppliSystNtfyPatiRequest;
import io.shinhanlife.axhub.sample.presentation.io.AppliSystNtfyPatiResponse;
import io.shinhanlife.axhub.sample.presentation.io.StrnTermRequest;
import io.shinhanlife.axhub.sample.presentation.io.StrnTermResponse;
import io.shinhanlife.axhub.sample.usecase.GlowSampleUseCase;
import io.shinhanlife.glow.GlowAppServiceId;
import io.shinhanlife.glow.GlowLogTarget;
import io.shinhanlife.glow.GlowLogger;
import io.shinhanlife.glow.GlowServiceGroupId;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
@Service
@RequiredArgsConstructor
@GlowServiceGroupId(value = "GlowSample", description="GlowSampleUseCase")
public class GlowSampleUseCaseImpl implements GlowSampleUseCase {
@GlowLogTarget(GlowLogTarget.Target.FILE)
private final GlowLogger log;
private final GlowSampleService glowSampleService;
private final SampleConverter converter;
@GlowAppServiceId(value = "SAMPLE-DB-0001", description = "표준용어조회(DB)")
public StrnTermResponse getStrnTerms(StrnTermRequest req) {
StrnTermListOutDTO outDto = glowSampleService.getStrnTerms(converter.convertRequestToDto(req), req.getPageInfo());
return converter.convertDtoToResponse(outDto);
}
@GlowAppServiceId(value = "SAMPLE-DB-0002", description = "어플리케이션시스템알림내역등록")
public AppliSystNtfyPatiResponse insertAppliSystNtfyPati(AppliSystNtfyPatiRequest req) {
int rtn = glowSampleService.insertAppliSystNtfyPati(converter.convertAppliRequestToDto(req));
return AppliSystNtfyPatiResponse.builder()
.successYn(rtn > 0 ? "Y" : "N")
.msg(rtn > 0 ? "성공적으로 처리 되었습니다." : "처리중 오류발생!!")
.build();
}
}

View File

@@ -0,0 +1,29 @@
package io.shinhanlife.glow;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
@Getter
@Builder
@NoArgsConstructor
@AllArgsConstructor
//@Schema(description = "응답 에러 객체. 성공 케이스일 경우 null. 실제 에러가 발생할 경우에만 예외명, 예외 메시지 필드 세팅 예정.")
public class BaseException {
// @Schema(description = "Error 코드 Meta 참조 운영. (예) 20001, 50001 등", shinhanlife = "20001")
String code;
// @Schema(description = "메시지")
String message;
// @Schema(description = "예외명.", shinhanlife = "NullPointerException")
@Builder.Default
String exceptionName = "";
// @Schema(description = "예외상세", shinhanlife = "StackTrace")
@Builder.Default
String exceptionDetail = "";
}

View File

@@ -0,0 +1,25 @@
package io.shinhanlife.glow;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.ToString;
@ToString
@Getter
@Builder
@AllArgsConstructor
public class BaseResponse<T> {
// @Schema(description = "응답 코드 HTTP STATUS 오류 - 실제 Header 는 200 으로 내려감", shinhanlife = "200")
private int code;
// @Schema(description = "응답 메시지. 응답 코드와 매핑된 메시지.", shinhanlife = "데이터 생성 성공")
private String message;
// @Schema(description = "응답 본문 데이터. 실제 비즈니스 데이터.")
private T data;
private BaseException error;
}

View File

@@ -0,0 +1,6 @@
package io.shinhanlife.glow;
public class BizException extends RuntimeException {
public BizException(String s) {
}
}

View File

@@ -0,0 +1,13 @@
package io.shinhanlife.glow;
import java.lang.annotation.*;
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface GlowAppServiceId {
String value();
String description() default "";
}

View File

@@ -0,0 +1,5 @@
package io.shinhanlife.glow;
public @interface GlowControllerId {
String value();
}

View File

@@ -0,0 +1,9 @@
package io.shinhanlife.glow;
import java.lang.annotation.*;
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface GlowIndexPaging {
}

View File

@@ -0,0 +1,15 @@
package io.shinhanlife.glow;
import java.lang.annotation.*;
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface GlowLogTarget {
Target[] value() default {};
enum Target {
FILE, CONSOLE
}
}

View File

@@ -0,0 +1,19 @@
package io.shinhanlife.glow;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;
@Component
@Scope("prototype")
public class GlowLogger {
private Logger log = LoggerFactory.getLogger(GlowLogger.class);
public void debug(String message, Object... args) { log.debug(message, args); }
public void info(String message, Object... args) { log.info(message, args); }
public void warn(String message, Object... args) { log.warn(message, args); }
public void error(String message, Object... args) { log.error(message, args); }
public void error(String message, Throwable t) { log.error(message, t); }
}

View File

@@ -0,0 +1,18 @@
package io.shinhanlife.glow;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Component;
import java.lang.annotation.*;
/**
* MyBatis Mapper 인터페이스를 나타내는 어노테이션
* MyBatis Mapper와 동일한 기능을 제공합니다.
*/
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Mapper
@Component
public @interface GlowMybatisMapper {
}

View File

@@ -0,0 +1,7 @@
package io.shinhanlife.glow;
public @interface GlowServiceGroupId {
String value();
String description();
}

View File

@@ -0,0 +1,25 @@
package io.shinhanlife.glow;
import java.lang.annotation.*;
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface GlowTrgmField {
/**
* 필드 순서
*/
int order();
/**
* 필드 길이
*/
int length();
/**
* 필드 설명
*/
String description() default "";
}

View File

@@ -0,0 +1,68 @@
package io.shinhanlife.glow;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.Setter;
import org.apache.ibatis.session.RowBounds;
import java.io.Serial;
import java.io.Serializable;
@Getter
@Setter
@JsonIgnoreProperties(ignoreUnknown = true)
@EqualsAndHashCode(callSuper = true)
public class PageInfo extends RowBounds implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 페이지번호 ( 입력값 )
*/
@GlowTrgmField(order = 1, length = 5, description = "페이지번호")
private int pageNo;
/**
* 페이지 데이터 건수 ( 열 건수, 입력값 )
*/
@GlowTrgmField(order = 2, length = 5, description = "페이지데이터건수")
private int pageDataCc;
/**
* 총페이지 수 ( 리턴값 )
*/
@GlowTrgmField(order = 3, length = 10, description = "총페이지수")
private int totaPageCn;
/**
* 총 페이지 데이터 건수 ( 리턴값 )
*/
@GlowTrgmField(order = 4, length = 10, description = "총페이지데이터건수")
private int totaPageDataCc;
public PageInfo(int pageNo, int pageDataCc) {
super(((pageNo <= 0 ? 1 : pageNo) - 1) * pageDataCc, pageDataCc);
this.pageNo = pageNo;
this.pageDataCc = pageDataCc;
}
public PageInfo() {
}
@JsonIgnore
@Override
public int getOffset() {
return super.getOffset();
}
@JsonIgnore
@Override
public int getLimit() {
return super.getLimit();
}
}

View File

@@ -0,0 +1,31 @@
package io.shinhanlife.glow;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
import org.springframework.http.HttpStatus;
@Getter
@RequiredArgsConstructor
public enum ResponseCode {
/* ===================== 성공 ===================== */
SUCCESS(HttpStatus.OK, "정상 처리되었습니다."),
CREATED(HttpStatus.CREATED, "데이터 생성 성공"),
/* ===================== 클라이언트 오류 (4xx) ===================== */
BAD_REQUEST(HttpStatus.BAD_REQUEST, "잘못된 요청입니다."),
INVALID_PARAMETER(HttpStatus.BAD_REQUEST, "유효하지 않은 파라미터입니다."),
UNAUTHORIZED(HttpStatus.UNAUTHORIZED, "인증이 필요합니다."),
FORBIDDEN(HttpStatus.FORBIDDEN, "접근 권한이 없습니다."),
NOT_FOUND(HttpStatus.NOT_FOUND, "요청한 리소스를 찾을 수 없습니다."),
METHOD_NOT_ALLOWED(HttpStatus.METHOD_NOT_ALLOWED, "허용되지 않은 HTTP 메서드입니다."),
CONFLICT(HttpStatus.CONFLICT, "이미 존재하는 데이터입니다."),
/* ===================== 서버 오류 (5xx) ===================== */
INTERNAL_SERVER_ERROR(HttpStatus.INTERNAL_SERVER_ERROR, "서버 내부 오류가 발생했습니다."),
SERVICE_UNAVAILABLE(HttpStatus.SERVICE_UNAVAILABLE, "서비스를 사용할 수 없습니다.");
private final HttpStatus status;
private final String message;
}

View File

@@ -0,0 +1,111 @@
package io.shinhanlife.glow;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
public final class ResponseUtil {
private ResponseUtil() {
}
public static <T> ResponseEntity<BaseResponse<T>> ok() {
return ResponseEntity.ok(
BaseResponse.<T>builder()
.code(ResponseCode.SUCCESS.getStatus().value())
.message(ResponseCode.SUCCESS.getMessage())
.build()
);
}
public static <T> ResponseEntity<BaseResponse<T>> ok(T data) {
return ResponseEntity.ok(
BaseResponse.<T>builder()
.code(ResponseCode.SUCCESS.getStatus().value())
.message(ResponseCode.SUCCESS.getMessage())
.data(data)
.build()
);
}
public static <T> ResponseEntity<BaseResponse<T>> ok(T data, ResponseCode responseCode) {
return ResponseEntity.ok(
BaseResponse.<T>builder()
.code(responseCode.getStatus().value())
.message(responseCode.getMessage())
.data(data)
.build()
);
}
public static <T> ResponseEntity<BaseResponse<T>> error(
HttpStatus status, String code, String message
) {
return ResponseEntity.status(status)
.body(
BaseResponse.<T>builder()
.code(status.value())
.error(
BaseException.builder()
.code(code)
.message(message)
.build()
)
.build()
);
}
public static <T> ResponseEntity<BaseResponse<T>> error(
HttpStatus status, String code, String message, String exceptionName, String stackTrace
) {
return ResponseEntity.status(status)
.body(
BaseResponse.<T>builder()
.code(status.value())
.error(
BaseException.builder()
.code(code)
.message(message)
.exceptionName(exceptionName)
.exceptionDetail(stackTrace)
.build()
)
.build()
);
}
public static <T> ResponseEntity<BaseResponse<T>> okError(
HttpStatus status, String code, String message
) {
return ResponseEntity.ok(
BaseResponse.<T>builder()
.code(status.value())
.error(
BaseException.builder()
.code(code)
.message(message)
.build()
)
.build()
);
}
public static <T> ResponseEntity<BaseResponse<T>> okError(
HttpStatus status, String code, String message, String exceptionName, String stackTrace
) {
return ResponseEntity.ok(
BaseResponse.<T>builder()
.code(status.value())
.error(
BaseException.builder()
.code(code)
.message(message)
.exceptionName(exceptionName)
.exceptionDetail(stackTrace)
.build()
)
.build()
);
}
}

View File

@@ -0,0 +1,16 @@
package io.shinhanlife.glow.db.dto;
import java.util.Date;
public class AuditInfo {
private Date systRgiDt; // 시스템등록일시
private String systRgiPrafNo; // 시스템등록인사번호
private String systRgiOgnzNo; // 시스템등록조직번호
private String systRgiSystCd; // 시스템등록시스템코드
private String systRgiPrgrId; // 시스템등록프로그램ID
private Date systChgDt; // 시스템변경일시
private String systChgPrafNo; // 시스템변경인사번호
private String systChgOgnzNo; // 시스템변경조직번호
private String systChgSystCd; // 시스템변경시스템코드
private String systChgPrgrId; // 시스템변경프로그램ID
}

View File

@@ -0,0 +1,160 @@
-- ============================================================
-- AX HUB 역할-Tool/지식 권한 관리 DDL
-- 대상 스키마 : 프로젝트 AP 스키마 (S_EIAM_TIS 는 읽기전용 참조)
-- 작성일 : 2026-06-25
-- ============================================================
-- ① Tool 마스터
CREATE TABLE AX_TOOL_MST (
TOOL_ID VARCHAR(20) NOT NULL, -- Tool ID (PK)
TOOL_NM VARCHAR(100) NOT NULL, -- Tool명
TOOL_DS VARCHAR(500), -- Tool설명
TOOL_TYPE_CD VARCHAR(20), -- Tool유형코드 (MCP / FUNC / EXT)
PUSE_YN VARCHAR(1) DEFAULT 'Y',-- 사용여부
SYST_RGI_DT DATE,
SYST_RGI_PRAF_NO VARCHAR(8),
SYST_RGI_OGNZ_NO VARCHAR(7),
SYST_RGI_SYST_CD VARCHAR(3),
SYST_RGI_PRGR_ID VARCHAR(100),
SYST_CHG_DT DATE,
SYST_CHG_PRAF_NO VARCHAR(8),
SYST_CHG_OGNZ_NO VARCHAR(7),
SYST_CHG_SYST_CD VARCHAR(3),
SYST_CHG_PRGR_ID VARCHAR(100),
CONSTRAINT PK_AX_TOOL_MST PRIMARY KEY (TOOL_ID)
);
COMMENT ON TABLE AX_TOOL_MST IS 'AX HUB Tool 마스터';
COMMENT ON COLUMN AX_TOOL_MST.TOOL_ID IS 'Tool ID (PK)';
COMMENT ON COLUMN AX_TOOL_MST.TOOL_NM IS 'Tool명';
COMMENT ON COLUMN AX_TOOL_MST.TOOL_DS IS 'Tool설명';
COMMENT ON COLUMN AX_TOOL_MST.TOOL_TYPE_CD IS 'Tool유형코드 (MCP/FUNC/EXT)';
COMMENT ON COLUMN AX_TOOL_MST.PUSE_YN IS '사용여부 (Y/N)';
-- ② 지식(Knowledge) 마스터
CREATE TABLE AX_KNWL_MST (
KNWL_ID VARCHAR(20) NOT NULL, -- 지식 ID (PK)
KNWL_NM VARCHAR(100) NOT NULL, -- 지식명
KNWL_DS VARCHAR(500), -- 지식설명
KNWL_TYPE_CD VARCHAR(20), -- 지식유형코드 (PRODUCT/MANUAL/LEGAL 등)
PUSE_YN VARCHAR(1) DEFAULT 'Y',
SYST_RGI_DT DATE,
SYST_RGI_PRAF_NO VARCHAR(8),
SYST_RGI_OGNZ_NO VARCHAR(7),
SYST_RGI_SYST_CD VARCHAR(3),
SYST_RGI_PRGR_ID VARCHAR(100),
SYST_CHG_DT DATE,
SYST_CHG_PRAF_NO VARCHAR(8),
SYST_CHG_OGNZ_NO VARCHAR(7),
SYST_CHG_SYST_CD VARCHAR(3),
SYST_CHG_PRGR_ID VARCHAR(100),
CONSTRAINT PK_AX_KNWL_MST PRIMARY KEY (KNWL_ID)
);
COMMENT ON TABLE AX_KNWL_MST IS 'AX HUB 지식 마스터';
COMMENT ON COLUMN AX_KNWL_MST.KNWL_ID IS '지식 ID (PK)';
COMMENT ON COLUMN AX_KNWL_MST.KNWL_NM IS '지식명';
COMMENT ON COLUMN AX_KNWL_MST.KNWL_DS IS '지식설명';
COMMENT ON COLUMN AX_KNWL_MST.KNWL_TYPE_CD IS '지식유형코드 (PRODUCT/MANUAL/LEGAL/REPORT)';
COMMENT ON COLUMN AX_KNWL_MST.PUSE_YN IS '사용여부 (Y/N)';
-- ③ 역할-Tool 권한 매핑
-- SYST_ID + ROLE_NO → S_EIAM_TIS.AA_ROLE 참조 (FK 미설정: 스키마 분리 환경)
CREATE TABLE AX_ROLE_TOOL_ATHR (
ROLE_TOOL_ATHR_ID VARCHAR(20) NOT NULL, -- 역할Tool권한ID (PK)
SYST_ID VARCHAR(10) NOT NULL, -- 시스템ID (EIAM 연동 키)
ROLE_NO VARCHAR(50) NOT NULL, -- 역할번호 (EIAM AA_ROLE.ROLE_NO)
TOOL_ID VARCHAR(20) NOT NULL, -- Tool ID
PUSE_YN VARCHAR(1) DEFAULT 'Y',
SYST_RGI_DT DATE,
SYST_RGI_PRAF_NO VARCHAR(8),
SYST_RGI_OGNZ_NO VARCHAR(7),
SYST_RGI_SYST_CD VARCHAR(3),
SYST_RGI_PRGR_ID VARCHAR(100),
SYST_CHG_DT DATE,
SYST_CHG_PRAF_NO VARCHAR(8),
SYST_CHG_OGNZ_NO VARCHAR(7),
SYST_CHG_SYST_CD VARCHAR(3),
SYST_CHG_PRGR_ID VARCHAR(100),
CONSTRAINT PK_AX_ROLE_TOOL_ATHR PRIMARY KEY (ROLE_TOOL_ATHR_ID)
);
-- (SYST_ID, ROLE_NO, TOOL_ID) 중복 방지
CREATE UNIQUE INDEX UK_AX_ROLE_TOOL_ATHR
ON AX_ROLE_TOOL_ATHR (SYST_ID, ROLE_NO, TOOL_ID);
COMMENT ON TABLE AX_ROLE_TOOL_ATHR IS '역할-Tool 권한 매핑';
COMMENT ON COLUMN AX_ROLE_TOOL_ATHR.ROLE_TOOL_ATHR_ID IS '역할Tool권한ID (PK)';
COMMENT ON COLUMN AX_ROLE_TOOL_ATHR.SYST_ID IS '시스템ID';
COMMENT ON COLUMN AX_ROLE_TOOL_ATHR.ROLE_NO IS '역할번호 (EIAM)';
COMMENT ON COLUMN AX_ROLE_TOOL_ATHR.TOOL_ID IS 'Tool ID';
COMMENT ON COLUMN AX_ROLE_TOOL_ATHR.PUSE_YN IS '사용여부';
-- ④ 역할-지식 권한 매핑
CREATE TABLE AX_ROLE_KNWL_ATHR (
ROLE_KNWL_ATHR_ID VARCHAR(20) NOT NULL, -- 역할지식권한ID (PK)
SYST_ID VARCHAR(10) NOT NULL,
ROLE_NO VARCHAR(50) NOT NULL,
KNWL_ID VARCHAR(20) NOT NULL,
PUSE_YN VARCHAR(1) DEFAULT 'Y',
SYST_RGI_DT DATE,
SYST_RGI_PRAF_NO VARCHAR(8),
SYST_RGI_OGNZ_NO VARCHAR(7),
SYST_RGI_SYST_CD VARCHAR(3),
SYST_RGI_PRGR_ID VARCHAR(100),
SYST_CHG_DT DATE,
SYST_CHG_PRAF_NO VARCHAR(8),
SYST_CHG_OGNZ_NO VARCHAR(7),
SYST_CHG_SYST_CD VARCHAR(3),
SYST_CHG_PRGR_ID VARCHAR(100),
CONSTRAINT PK_AX_ROLE_KNWL_ATHR PRIMARY KEY (ROLE_KNWL_ATHR_ID)
);
CREATE UNIQUE INDEX UK_AX_ROLE_KNWL_ATHR
ON AX_ROLE_KNWL_ATHR (SYST_ID, ROLE_NO, KNWL_ID);
COMMENT ON TABLE AX_ROLE_KNWL_ATHR IS '역할-지식 권한 매핑';
COMMENT ON COLUMN AX_ROLE_KNWL_ATHR.ROLE_KNWL_ATHR_ID IS '역할지식권한ID (PK)';
COMMENT ON COLUMN AX_ROLE_KNWL_ATHR.SYST_ID IS '시스템ID';
COMMENT ON COLUMN AX_ROLE_KNWL_ATHR.ROLE_NO IS '역할번호 (EIAM)';
COMMENT ON COLUMN AX_ROLE_KNWL_ATHR.KNWL_ID IS '지식ID';
COMMENT ON COLUMN AX_ROLE_KNWL_ATHR.PUSE_YN IS '사용여부';
-- ============================================================
-- 샘플 데이터 (개발용)
-- ============================================================
INSERT INTO AX_TOOL_MST
(TOOL_ID, TOOL_NM, TOOL_DS, TOOL_TYPE_CD, PUSE_YN,
SYST_RGI_DT, SYST_RGI_PRAF_NO, SYST_RGI_OGNZ_NO, SYST_RGI_SYST_CD, SYST_RGI_PRGR_ID,
SYST_CHG_DT, SYST_CHG_PRAF_NO, SYST_CHG_OGNZ_NO, SYST_CHG_SYST_CD, SYST_CHG_PRGR_ID)
VALUES
('TOOL_A', '지식 검색', '지식베이스 내 문서 의미 기반 검색', 'MCP', 'Y',
CURRENT_DATE, 'SYSTEM', 'SYSTEM', 'AXH', 'SOATM0100',
CURRENT_DATE, 'SYSTEM', 'SYSTEM', 'AXH', 'SOATM0100'),
('TOOL_B', 'DB 조회', '사내 데이터베이스 직접 조회 (GLOW)', 'MCP', 'Y',
CURRENT_DATE, 'SYSTEM', 'SYSTEM', 'AXH', 'SOATM0100',
CURRENT_DATE, 'SYSTEM', 'SYSTEM', 'AXH', 'SOATM0100'),
('TOOL_C', '문서 생성', 'AI 기반 문서 초안 자동 생성', 'FUNC', 'Y',
CURRENT_DATE, 'SYSTEM', 'SYSTEM', 'AXH', 'SOATM0100',
CURRENT_DATE, 'SYSTEM', 'SYSTEM', 'AXH', 'SOATM0100');
INSERT INTO AX_KNWL_MST
(KNWL_ID, KNWL_NM, KNWL_DS, KNWL_TYPE_CD, PUSE_YN,
SYST_RGI_DT, SYST_RGI_PRAF_NO, SYST_RGI_OGNZ_NO, SYST_RGI_SYST_CD, SYST_RGI_PRGR_ID,
SYST_CHG_DT, SYST_CHG_PRAF_NO, SYST_CHG_OGNZ_NO, SYST_CHG_SYST_CD, SYST_CHG_PRGR_ID)
VALUES
('KNWL_Q', '상품기초서류', '보험 상품 기초서류 약 8만건', 'PRODUCT', 'Y',
CURRENT_DATE, 'SYSTEM', 'SYSTEM', 'AXH', 'SOATM0100',
CURRENT_DATE, 'SYSTEM', 'SYSTEM', 'AXH', 'SOATM0100'),
('KNWL_W', '업무매뉴얼', '내부 업무 매뉴얼 및 프로세스 가이드', 'MANUAL', 'Y',
CURRENT_DATE, 'SYSTEM', 'SYSTEM', 'AXH', 'SOATM0100',
CURRENT_DATE, 'SYSTEM', 'SYSTEM', 'AXH', 'SOATM0100'),
('KNWL_E', '법률/규정', '보험업법 및 금융당국 규정', 'LEGAL', 'Y',
CURRENT_DATE, 'SYSTEM', 'SYSTEM', 'AXH', 'SOATM0100',
CURRENT_DATE, 'SYSTEM', 'SYSTEM', 'AXH', 'SOATM0100');
COMMIT;

View File

@@ -0,0 +1,18 @@
spring.application.name=axhub-admin
# application.properties (?? ??, Redis ? ??)
server.port=8080
spring.datasource.url=jdbc:p6spy:h2:mem:testdb;DB_CLOSE_DELAY=-1;
spring.datasource.driverClassName=com.p6spy.engine.spy.P6SpyDriver
spring.datasource.username=sa
spring.datasource.password=password
spring.h2.console.enabled=true
mybatis.mapper-locations=classpath:mapper/**/*.xml
mybatis.type-aliases-package=
spring.sql.init.mode=always
mybatis.configuration.map-underscore-to-camel-case=true
logging.level.com.corundumstudio.socketio=DEBUG

258
src/main/resources/data.sql Normal file
View File

@@ -0,0 +1,258 @@
SET SCHEMA S_TIS;
-- INSERT 문 재정렬: 부모부터 삽입 (루트 -> 자식 순)
-- 루트 메뉴 먼저 (11: 샘플 화면, 10: AX HUB)
INSERT INTO ZT_MENU (MENU_ID, PARENT_MENU_ID, NAME, PATH, TITLE, ICON, SHOW_BADGE, SHOW_TEXT_BADGE, IS_HIDE, IS_HIDE_TAB, LINK, IS_IFRAME, KEEP_ALIVE, ORDER_SEQ, IS_ACTIVE, SYST_RGI_DT, SYST_RGI_PRAF_NO, SYST_RGI_OGNZ_NO, SYST_RGI_SYST_CD, SYST_RGI_PRGR_ID, SYST_CHG_DT, SYST_CHG_PRAF_NO, SYST_CHG_OGNZ_NO, SYST_CHG_SYST_CD, SYST_CHG_PRGR_ID) VALUES (11, NULL, 'Sample', '/sample', '샘플 화면', '&#xe8d2;', 'N', NULL, 'N', 'N', NULL, 'N', 'N', 0, 'Y', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
INSERT INTO ZT_MENU (MENU_ID, PARENT_MENU_ID, NAME, PATH, TITLE, ICON, SHOW_BADGE, SHOW_TEXT_BADGE, IS_HIDE, IS_HIDE_TAB, LINK, IS_IFRAME, KEEP_ALIVE, ORDER_SEQ, IS_ACTIVE, SYST_RGI_DT, SYST_RGI_PRAF_NO, SYST_RGI_OGNZ_NO, SYST_RGI_SYST_CD, SYST_RGI_PRGR_ID, SYST_CHG_DT, SYST_CHG_PRAF_NO, SYST_CHG_OGNZ_NO, SYST_CHG_SYST_CD, SYST_CHG_PRGR_ID) VALUES (10, NULL, 'AxHub', '/axhub', 'AX HUB', '&#xe7b9;', 'N', NULL, 'N', 'N', NULL, 'N', 'N', 1, 'Y', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
-- 샘플 화면(11번) 자식 메뉴
INSERT INTO ZT_MENU (MENU_ID, PARENT_MENU_ID, NAME, PATH, TITLE, ICON, SHOW_BADGE, SHOW_TEXT_BADGE, IS_HIDE, IS_HIDE_TAB, LINK, IS_IFRAME, KEEP_ALIVE, ORDER_SEQ, IS_ACTIVE, SYST_RGI_DT, SYST_RGI_PRAF_NO, SYST_RGI_OGNZ_NO, SYST_RGI_SYST_CD, SYST_RGI_PRGR_ID, SYST_CHG_DT, SYST_CHG_PRAF_NO, SYST_CHG_OGNZ_NO, SYST_CHG_SYST_CD, SYST_CHG_PRGR_ID) VALUES (1, 11, 'Dashboard', '/dashboard', '대시보드', '&#xe721;', 'N', NULL, 'N', 'N', NULL, 'N', 'N', 0, 'Y', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
INSERT INTO ZT_MENU (MENU_ID, PARENT_MENU_ID, NAME, PATH, TITLE, ICON, SHOW_BADGE, SHOW_TEXT_BADGE, IS_HIDE, IS_HIDE_TAB, LINK, IS_IFRAME, KEEP_ALIVE, ORDER_SEQ, IS_ACTIVE, SYST_RGI_DT, SYST_RGI_PRAF_NO, SYST_RGI_OGNZ_NO, SYST_RGI_SYST_CD, SYST_RGI_PRGR_ID, SYST_CHG_DT, SYST_CHG_PRAF_NO, SYST_CHG_OGNZ_NO, SYST_CHG_SYST_CD, SYST_CHG_PRGR_ID) VALUES (5, 11, 'Widgets', '/widgets', '컴포넌트 모음', '&#xe81a;', 'N', NULL, 'N', 'N', NULL, 'N', 'N', 1, 'Y', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
INSERT INTO ZT_MENU (MENU_ID, PARENT_MENU_ID, NAME, PATH, TITLE, ICON, SHOW_BADGE, SHOW_TEXT_BADGE, IS_HIDE, IS_HIDE_TAB, LINK, IS_IFRAME, KEEP_ALIVE, ORDER_SEQ, IS_ACTIVE, SYST_RGI_DT, SYST_RGI_PRAF_NO, SYST_RGI_OGNZ_NO, SYST_RGI_SYST_CD, SYST_RGI_PRGR_ID, SYST_CHG_DT, SYST_CHG_PRAF_NO, SYST_CHG_OGNZ_NO, SYST_CHG_SYST_CD, SYST_CHG_PRGR_ID) VALUES (126, 11, 'Template', '/template', '템플릿 센터', '&#xe860;', 'N', NULL, 'N', 'N', NULL, 'N', 'N', 2, 'Y', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
INSERT INTO ZT_MENU (MENU_ID, PARENT_MENU_ID, NAME, PATH, TITLE, ICON, SHOW_BADGE, SHOW_TEXT_BADGE, IS_HIDE, IS_HIDE_TAB, LINK, IS_IFRAME, KEEP_ALIVE, ORDER_SEQ, IS_ACTIVE, SYST_RGI_DT, SYST_RGI_PRAF_NO, SYST_RGI_OGNZ_NO, SYST_RGI_SYST_CD, SYST_RGI_PRGR_ID, SYST_CHG_DT, SYST_CHG_PRAF_NO, SYST_CHG_OGNZ_NO, SYST_CHG_SYST_CD, SYST_CHG_PRGR_ID) VALUES (4, 11, 'Article', '/article', '기사 관리', '&#xe7ae;', 'N', NULL, 'N', 'N', NULL, 'N', 'N', 3, 'Y', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
INSERT INTO ZT_MENU (MENU_ID, PARENT_MENU_ID, NAME, PATH, TITLE, ICON, SHOW_BADGE, SHOW_TEXT_BADGE, IS_HIDE, IS_HIDE_TAB, LINK, IS_IFRAME, KEEP_ALIVE, ORDER_SEQ, IS_ACTIVE, SYST_RGI_DT, SYST_RGI_PRAF_NO, SYST_RGI_OGNZ_NO, SYST_RGI_SYST_CD, SYST_RGI_PRGR_ID, SYST_CHG_DT, SYST_CHG_PRAF_NO, SYST_CHG_OGNZ_NO, SYST_CHG_SYST_CD, SYST_CHG_PRGR_ID) VALUES (2, 11, 'User', '/user', '사용자 관리', '&#xe86e;', 'N', NULL, 'N', 'N', NULL, 'N', 'N', 4, 'Y', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
INSERT INTO ZT_MENU (MENU_ID, PARENT_MENU_ID, NAME, PATH, TITLE, ICON, SHOW_BADGE, SHOW_TEXT_BADGE, IS_HIDE, IS_HIDE_TAB, LINK, IS_IFRAME, KEEP_ALIVE, ORDER_SEQ, IS_ACTIVE, SYST_RGI_DT, SYST_RGI_PRAF_NO, SYST_RGI_OGNZ_NO, SYST_RGI_SYST_CD, SYST_RGI_PRGR_ID, SYST_CHG_DT, SYST_CHG_PRAF_NO, SYST_CHG_OGNZ_NO, SYST_CHG_SYST_CD, SYST_CHG_PRGR_ID) VALUES (3, 11, 'Menu', '/menu', '메뉴 관리', '&#xe8a4;', 'N', NULL, 'N', 'N', NULL, 'N', 'N', 5, 'Y', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
INSERT INTO ZT_MENU (MENU_ID, PARENT_MENU_ID, NAME, PATH, TITLE, ICON, SHOW_BADGE, SHOW_TEXT_BADGE, IS_HIDE, IS_HIDE_TAB, LINK, IS_IFRAME, KEEP_ALIVE, ORDER_SEQ, IS_ACTIVE, SYST_RGI_DT, SYST_RGI_PRAF_NO, SYST_RGI_OGNZ_NO, SYST_RGI_SYST_CD, SYST_RGI_PRGR_ID, SYST_CHG_DT, SYST_CHG_PRAF_NO, SYST_CHG_OGNZ_NO, SYST_CHG_SYST_CD, SYST_CHG_PRGR_ID) VALUES (18, 11, 'Result', '/result', '결과 페이지', '&#xe715;', 'N', NULL, 'N', 'N', NULL, 'N', 'N', 6, 'Y', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
INSERT INTO ZT_MENU (MENU_ID, PARENT_MENU_ID, NAME, PATH, TITLE, ICON, SHOW_BADGE, SHOW_TEXT_BADGE, IS_HIDE, IS_HIDE_TAB, LINK, IS_IFRAME, KEEP_ALIVE, ORDER_SEQ, IS_ACTIVE, SYST_RGI_DT, SYST_RGI_PRAF_NO, SYST_RGI_OGNZ_NO, SYST_RGI_SYST_CD, SYST_RGI_PRGR_ID, SYST_CHG_DT, SYST_CHG_PRAF_NO, SYST_CHG_OGNZ_NO, SYST_CHG_SYST_CD, SYST_CHG_PRGR_ID) VALUES (8, 11, 'Exception', '/exception', '예외 페이지', '&#xe820;', 'N', NULL, 'N', 'N', NULL, 'N', 'N', 7, 'Y', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
INSERT INTO ZT_MENU (MENU_ID, PARENT_MENU_ID, NAME, PATH, TITLE, ICON, SHOW_BADGE, SHOW_TEXT_BADGE, IS_HIDE, IS_HIDE_TAB, LINK, IS_IFRAME, KEEP_ALIVE, ORDER_SEQ, IS_ACTIVE, SYST_RGI_DT, SYST_RGI_PRAF_NO, SYST_RGI_OGNZ_NO, SYST_RGI_SYST_CD, SYST_RGI_PRGR_ID, SYST_CHG_DT, SYST_CHG_PRAF_NO, SYST_CHG_OGNZ_NO, SYST_CHG_SYST_CD, SYST_CHG_PRGR_ID) VALUES (9, 11, 'System', '/system', '시스템 설정', '&#xe7b9;', 'N', NULL, 'N', 'N', NULL, 'N', 'N', 8, 'Y', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
-- 1번 자식
INSERT INTO ZT_MENU (MENU_ID, PARENT_MENU_ID, NAME, PATH, TITLE, ICON, SHOW_BADGE, SHOW_TEXT_BADGE, IS_HIDE, IS_HIDE_TAB, LINK, IS_IFRAME, KEEP_ALIVE, ORDER_SEQ, IS_ACTIVE, SYST_RGI_DT, SYST_RGI_PRAF_NO, SYST_RGI_OGNZ_NO, SYST_RGI_SYST_CD, SYST_RGI_PRGR_ID, SYST_CHG_DT, SYST_CHG_PRAF_NO, SYST_CHG_OGNZ_NO, SYST_CHG_SYST_CD, SYST_CHG_PRGR_ID) VALUES (101, 1, NULL, '/dashboard/console', '콘솔', NULL, 'N', NULL, 'N', 'N', NULL, 'N', 'Y', 0, 'Y', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
INSERT INTO ZT_MENU (MENU_ID, PARENT_MENU_ID, NAME, PATH, TITLE, ICON, SHOW_BADGE, SHOW_TEXT_BADGE, IS_HIDE, IS_HIDE_TAB, LINK, IS_IFRAME, KEEP_ALIVE, ORDER_SEQ, IS_ACTIVE, SYST_RGI_DT, SYST_RGI_PRAF_NO, SYST_RGI_OGNZ_NO, SYST_RGI_SYST_CD, SYST_RGI_PRGR_ID, SYST_CHG_DT, SYST_CHG_PRAF_NO, SYST_CHG_OGNZ_NO, SYST_CHG_SYST_CD, SYST_CHG_PRGR_ID) VALUES (102, 1, NULL, '/dashboard/analysis', '분석 페이지', NULL, 'N', NULL, 'N', 'N', NULL, 'N', 'Y', 1, 'Y', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
INSERT INTO ZT_MENU (MENU_ID, PARENT_MENU_ID, NAME, PATH, TITLE, ICON, SHOW_BADGE, SHOW_TEXT_BADGE, IS_HIDE, IS_HIDE_TAB, LINK, IS_IFRAME, KEEP_ALIVE, ORDER_SEQ, IS_ACTIVE, SYST_RGI_DT, SYST_RGI_PRAF_NO, SYST_RGI_OGNZ_NO, SYST_RGI_SYST_CD, SYST_RGI_PRGR_ID, SYST_CHG_DT, SYST_CHG_PRAF_NO, SYST_CHG_OGNZ_NO, SYST_CHG_SYST_CD, SYST_CHG_PRGR_ID) VALUES (103, 1, NULL, '/dashboard/kanban', '칸반보드', NULL, 'N', NULL, 'N', 'N', NULL, 'N', 'Y', 2, 'Y', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
-- 5번 자식
INSERT INTO ZT_MENU (MENU_ID, PARENT_MENU_ID, NAME, PATH, TITLE, ICON, SHOW_BADGE, SHOW_TEXT_BADGE, IS_HIDE, IS_HIDE_TAB, LINK, IS_IFRAME, KEEP_ALIVE, ORDER_SEQ, IS_ACTIVE, SYST_RGI_DT, SYST_RGI_PRAF_NO, SYST_RGI_OGNZ_NO, SYST_RGI_SYST_CD, SYST_RGI_PRGR_ID, SYST_CHG_DT, SYST_CHG_PRAF_NO, SYST_CHG_OGNZ_NO, SYST_CHG_SYST_CD, SYST_CHG_PRGR_ID) VALUES (503, 5, NULL, '/widgets/icon-list', '아이콘 목록', NULL, 'N', NULL, 'N', 'N', NULL, 'N', 'Y', 0, 'Y', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
INSERT INTO ZT_MENU (MENU_ID, PARENT_MENU_ID, NAME, PATH, TITLE, ICON, SHOW_BADGE, SHOW_TEXT_BADGE, IS_HIDE, IS_HIDE_TAB, LINK, IS_IFRAME, KEEP_ALIVE, ORDER_SEQ, IS_ACTIVE, SYST_RGI_DT, SYST_RGI_PRAF_NO, SYST_RGI_OGNZ_NO, SYST_RGI_SYST_CD, SYST_RGI_PRGR_ID, SYST_CHG_DT, SYST_CHG_PRAF_NO, SYST_CHG_OGNZ_NO, SYST_CHG_SYST_CD, SYST_CHG_PRGR_ID) VALUES (504, 5, NULL, '/widgets/icon-selector', '아이콘 선택기', NULL, 'N', NULL, 'N', 'N', NULL, 'N', 'Y', 1, 'Y', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
INSERT INTO ZT_MENU (MENU_ID, PARENT_MENU_ID, NAME, PATH, TITLE, ICON, SHOW_BADGE, SHOW_TEXT_BADGE, IS_HIDE, IS_HIDE_TAB, LINK, IS_IFRAME, KEEP_ALIVE, ORDER_SEQ, IS_ACTIVE, SYST_RGI_DT, SYST_RGI_PRAF_NO, SYST_RGI_OGNZ_NO, SYST_RGI_SYST_CD, SYST_RGI_PRGR_ID, SYST_CHG_DT, SYST_CHG_PRAF_NO, SYST_CHG_OGNZ_NO, SYST_CHG_SYST_CD, SYST_CHG_PRGR_ID) VALUES (506, 5, NULL, '/widgets/excel', 'Excel 가져오기 내보내기', NULL, 'N', NULL, 'N', 'N', NULL, 'N', 'Y', 2, 'Y', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
INSERT INTO ZT_MENU (MENU_ID, PARENT_MENU_ID, NAME, PATH, TITLE, ICON, SHOW_BADGE, SHOW_TEXT_BADGE, IS_HIDE, IS_HIDE_TAB, LINK, IS_IFRAME, KEEP_ALIVE, ORDER_SEQ, IS_ACTIVE, SYST_RGI_DT, SYST_RGI_PRAF_NO, SYST_RGI_OGNZ_NO, SYST_RGI_SYST_CD, SYST_RGI_PRGR_ID, SYST_CHG_DT, SYST_CHG_PRAF_NO, SYST_CHG_OGNZ_NO, SYST_CHG_SYST_CD, SYST_CHG_PRGR_ID) VALUES (508, 5, NULL, '/widgets/count-to', '숫자 롤링', NULL, 'N', NULL, 'N', 'N', NULL, 'N', 'N', 3, 'Y', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
INSERT INTO ZT_MENU (MENU_ID, PARENT_MENU_ID, NAME, PATH, TITLE, ICON, SHOW_BADGE, SHOW_TEXT_BADGE, IS_HIDE, IS_HIDE_TAB, LINK, IS_IFRAME, KEEP_ALIVE, ORDER_SEQ, IS_ACTIVE, SYST_RGI_DT, SYST_RGI_PRAF_NO, SYST_RGI_OGNZ_NO, SYST_RGI_SYST_CD, SYST_RGI_PRGR_ID, SYST_CHG_DT, SYST_CHG_PRAF_NO, SYST_CHG_OGNZ_NO, SYST_CHG_SYST_CD, SYST_CHG_PRGR_ID) VALUES (509, 5, NULL, '/widgets/toastUI', 'ToastUI 에디터', NULL, 'N', NULL, 'N', 'N', NULL, 'N', 'Y', 4, 'Y', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
INSERT INTO ZT_MENU (MENU_ID, PARENT_MENU_ID, NAME, PATH, TITLE, ICON, SHOW_BADGE, SHOW_TEXT_BADGE, IS_HIDE, IS_HIDE_TAB, LINK, IS_IFRAME, KEEP_ALIVE, ORDER_SEQ, IS_ACTIVE, SYST_RGI_DT, SYST_RGI_PRAF_NO, SYST_RGI_OGNZ_NO, SYST_RGI_SYST_CD, SYST_RGI_PRGR_ID, SYST_CHG_DT, SYST_CHG_PRAF_NO, SYST_CHG_OGNZ_NO, SYST_CHG_SYST_CD, SYST_CHG_PRGR_ID) VALUES (511, 5, NULL, '/widgets/context-menu', '오른쪽 클릭 메뉴', NULL, 'N', NULL, 'N', 'N', NULL, 'N', 'Y', 5, 'Y', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
INSERT INTO ZT_MENU (MENU_ID, PARENT_MENU_ID, NAME, PATH, TITLE, ICON, SHOW_BADGE, SHOW_TEXT_BADGE, IS_HIDE, IS_HIDE_TAB, LINK, IS_IFRAME, KEEP_ALIVE, ORDER_SEQ, IS_ACTIVE, SYST_RGI_DT, SYST_RGI_PRAF_NO, SYST_RGI_OGNZ_NO, SYST_RGI_SYST_CD, SYST_RGI_PRGR_ID, SYST_CHG_DT, SYST_CHG_PRAF_NO, SYST_CHG_OGNZ_NO, SYST_CHG_SYST_CD, SYST_CHG_PRGR_ID) VALUES (513, 5, NULL, '/widgets/drag', '드래그', NULL, 'N', NULL, 'N', 'N', NULL, 'N', 'Y', 6, 'Y', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
-- 126번 자식
INSERT INTO ZT_MENU (MENU_ID, PARENT_MENU_ID, NAME, PATH, TITLE, ICON, SHOW_BADGE, SHOW_TEXT_BADGE, IS_HIDE, IS_HIDE_TAB, LINK, IS_IFRAME, KEEP_ALIVE, ORDER_SEQ, IS_ACTIVE, SYST_RGI_DT, SYST_RGI_PRAF_NO, SYST_RGI_OGNZ_NO, SYST_RGI_SYST_CD, SYST_RGI_PRGR_ID, SYST_CHG_DT, SYST_CHG_PRAF_NO, SYST_CHG_OGNZ_NO, SYST_CHG_SYST_CD, SYST_CHG_PRGR_ID) VALUES (12601, 126, NULL, '/template/chat', '채팅', NULL, 'N', NULL, 'N', 'N', NULL, 'N', 'Y', 0, 'Y', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
INSERT INTO ZT_MENU (MENU_ID, PARENT_MENU_ID, NAME, PATH, TITLE, ICON, SHOW_BADGE, SHOW_TEXT_BADGE, IS_HIDE, IS_HIDE_TAB, LINK, IS_IFRAME, KEEP_ALIVE, ORDER_SEQ, IS_ACTIVE, SYST_RGI_DT, SYST_RGI_PRAF_NO, SYST_RGI_OGNZ_NO, SYST_RGI_SYST_CD, SYST_RGI_PRGR_ID, SYST_CHG_DT, SYST_CHG_PRAF_NO, SYST_CHG_OGNZ_NO, SYST_CHG_SYST_CD, SYST_CHG_PRGR_ID) VALUES (12602, 126, NULL, '/template/cards', '카드', NULL, 'N', NULL, 'N', 'N', NULL, 'N', 'N', 1, 'Y', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
INSERT INTO ZT_MENU (MENU_ID, PARENT_MENU_ID, NAME, PATH, TITLE, ICON, SHOW_BADGE, SHOW_TEXT_BADGE, IS_HIDE, IS_HIDE_TAB, LINK, IS_IFRAME, KEEP_ALIVE, ORDER_SEQ, IS_ACTIVE, SYST_RGI_DT, SYST_RGI_PRAF_NO, SYST_RGI_OGNZ_NO, SYST_RGI_SYST_CD, SYST_RGI_PRGR_ID, SYST_CHG_DT, SYST_CHG_PRAF_NO, SYST_CHG_OGNZ_NO, SYST_CHG_SYST_CD, SYST_CHG_PRGR_ID) VALUES (12603, 126, NULL, '/template/banners', '배너', NULL, 'N', NULL, 'N', 'N', NULL, 'N', 'N', 2, 'Y', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
INSERT INTO ZT_MENU (MENU_ID, PARENT_MENU_ID, NAME, PATH, TITLE, ICON, SHOW_BADGE, SHOW_TEXT_BADGE, IS_HIDE, IS_HIDE_TAB, LINK, IS_IFRAME, KEEP_ALIVE, ORDER_SEQ, IS_ACTIVE, SYST_RGI_DT, SYST_RGI_PRAF_NO, SYST_RGI_OGNZ_NO, SYST_RGI_SYST_CD, SYST_RGI_PRGR_ID, SYST_CHG_DT, SYST_CHG_PRAF_NO, SYST_CHG_OGNZ_NO, SYST_CHG_SYST_CD, SYST_CHG_PRGR_ID) VALUES (12604, 126, NULL, '/template/charts', '차트', NULL, 'N', NULL, 'N', 'N', NULL, 'N', 'N', 3, 'Y', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
INSERT INTO ZT_MENU (MENU_ID, PARENT_MENU_ID, NAME, PATH, TITLE, ICON, SHOW_BADGE, SHOW_TEXT_BADGE, IS_HIDE, IS_HIDE_TAB, LINK, IS_IFRAME, KEEP_ALIVE, ORDER_SEQ, IS_ACTIVE, SYST_RGI_DT, SYST_RGI_PRAF_NO, SYST_RGI_OGNZ_NO, SYST_RGI_SYST_CD, SYST_RGI_PRGR_ID, SYST_CHG_DT, SYST_CHG_PRAF_NO, SYST_CHG_OGNZ_NO, SYST_CHG_SYST_CD, SYST_CHG_PRGR_ID) VALUES (12605, 126, NULL, '/template/calendar', '캘린더', NULL, 'N', NULL, 'N', 'N', NULL, 'N', 'Y', 4, 'Y', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
-- 4번 자식
INSERT INTO ZT_MENU (MENU_ID, PARENT_MENU_ID, NAME, PATH, TITLE, ICON, SHOW_BADGE, SHOW_TEXT_BADGE, IS_HIDE, IS_HIDE_TAB, LINK, IS_IFRAME, KEEP_ALIVE, ORDER_SEQ, IS_ACTIVE, SYST_RGI_DT, SYST_RGI_PRAF_NO, SYST_RGI_OGNZ_NO, SYST_RGI_SYST_CD, SYST_RGI_PRGR_ID, SYST_CHG_DT, SYST_CHG_PRAF_NO, SYST_CHG_OGNZ_NO, SYST_CHG_SYST_CD, SYST_CHG_PRGR_ID) VALUES (202, 4, NULL, '/article/article-list', '기사 목록', NULL, 'N', NULL, 'N', 'N', NULL, 'N', 'Y', 0, 'Y', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
INSERT INTO ZT_MENU (MENU_ID, PARENT_MENU_ID, NAME, PATH, TITLE, ICON, SHOW_BADGE, SHOW_TEXT_BADGE, IS_HIDE, IS_HIDE_TAB, LINK, IS_IFRAME, KEEP_ALIVE, ORDER_SEQ, IS_ACTIVE, SYST_RGI_DT, SYST_RGI_PRAF_NO, SYST_RGI_OGNZ_NO, SYST_RGI_SYST_CD, SYST_RGI_PRGR_ID, SYST_CHG_DT, SYST_CHG_PRAF_NO, SYST_CHG_OGNZ_NO, SYST_CHG_SYST_CD, SYST_CHG_PRGR_ID) VALUES (204, 4, NULL, '/article/detail', '기사 상세', NULL, 'N', NULL, 'Y', 'N', NULL, 'N', 'Y', 1, 'Y', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
INSERT INTO ZT_MENU (MENU_ID, PARENT_MENU_ID, NAME, PATH, TITLE, ICON, SHOW_BADGE, SHOW_TEXT_BADGE, IS_HIDE, IS_HIDE_TAB, LINK, IS_IFRAME, KEEP_ALIVE, ORDER_SEQ, IS_ACTIVE, SYST_RGI_DT, SYST_RGI_PRAF_NO, SYST_RGI_OGNZ_NO, SYST_RGI_SYST_CD, SYST_RGI_PRGR_ID, SYST_CHG_DT, SYST_CHG_PRAF_NO, SYST_CHG_OGNZ_NO, SYST_CHG_SYST_CD, SYST_CHG_PRGR_ID) VALUES (205, 4, NULL, '/article/comment', '댓글 관리', NULL, 'N', NULL, 'N', 'N', NULL, 'N', 'Y', 2, 'Y', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
INSERT INTO ZT_MENU (MENU_ID, PARENT_MENU_ID, NAME, PATH, TITLE, ICON, SHOW_BADGE, SHOW_TEXT_BADGE, IS_HIDE, IS_HIDE_TAB, LINK, IS_IFRAME, KEEP_ALIVE, ORDER_SEQ, IS_ACTIVE, SYST_RGI_DT, SYST_RGI_PRAF_NO, SYST_RGI_OGNZ_NO, SYST_RGI_SYST_CD, SYST_RGI_PRGR_ID, SYST_CHG_DT, SYST_CHG_PRAF_NO, SYST_CHG_OGNZ_NO, SYST_CHG_SYST_CD, SYST_CHG_PRGR_ID) VALUES (201, 4, NULL, '/article/article-publish', '기사 게시', NULL, 'N', NULL, 'N', 'N', NULL, 'N', 'Y', 3, 'Y', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
-- 2번 자식
INSERT INTO ZT_MENU (MENU_ID, PARENT_MENU_ID, NAME, PATH, TITLE, ICON, SHOW_BADGE, SHOW_TEXT_BADGE, IS_HIDE, IS_HIDE_TAB, LINK, IS_IFRAME, KEEP_ALIVE, ORDER_SEQ, IS_ACTIVE, SYST_RGI_DT, SYST_RGI_PRAF_NO, SYST_RGI_OGNZ_NO, SYST_RGI_SYST_CD, SYST_RGI_PRGR_ID, SYST_CHG_DT, SYST_CHG_PRAF_NO, SYST_CHG_OGNZ_NO, SYST_CHG_SYST_CD, SYST_CHG_PRGR_ID) VALUES (301, 2, NULL, '/user/account', '계정 관리', NULL, 'N', NULL, 'N', 'N', NULL, 'N', 'Y', 0, 'Y', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
INSERT INTO ZT_MENU (MENU_ID, PARENT_MENU_ID, NAME, PATH, TITLE, ICON, SHOW_BADGE, SHOW_TEXT_BADGE, IS_HIDE, IS_HIDE_TAB, LINK, IS_IFRAME, KEEP_ALIVE, ORDER_SEQ, IS_ACTIVE, SYST_RGI_DT, SYST_RGI_PRAF_NO, SYST_RGI_OGNZ_NO, SYST_RGI_SYST_CD, SYST_RGI_PRGR_ID, SYST_CHG_DT, SYST_CHG_PRAF_NO, SYST_CHG_OGNZ_NO, SYST_CHG_SYST_CD, SYST_CHG_PRGR_ID) VALUES (302, 2, NULL, '/user/department', '부서 관리', NULL, 'N', NULL, 'N', 'N', NULL, 'N', 'Y', 1, 'Y', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
INSERT INTO ZT_MENU (MENU_ID, PARENT_MENU_ID, NAME, PATH, TITLE, ICON, SHOW_BADGE, SHOW_TEXT_BADGE, IS_HIDE, IS_HIDE_TAB, LINK, IS_IFRAME, KEEP_ALIVE, ORDER_SEQ, IS_ACTIVE, SYST_RGI_DT, SYST_RGI_PRAF_NO, SYST_RGI_OGNZ_NO, SYST_RGI_SYST_CD, SYST_RGI_PRGR_ID, SYST_CHG_DT, SYST_CHG_PRAF_NO, SYST_CHG_OGNZ_NO, SYST_CHG_SYST_CD, SYST_CHG_PRGR_ID) VALUES (303, 2, NULL, '/user/role', '역할 권한', NULL, 'N', NULL, 'N', 'N', NULL, 'N', 'Y', 2, 'Y', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
INSERT INTO ZT_MENU (MENU_ID, PARENT_MENU_ID, NAME, PATH, TITLE, ICON, SHOW_BADGE, SHOW_TEXT_BADGE, IS_HIDE, IS_HIDE_TAB, LINK, IS_IFRAME, KEEP_ALIVE, ORDER_SEQ, IS_ACTIVE, SYST_RGI_DT, SYST_RGI_PRAF_NO, SYST_RGI_OGNZ_NO, SYST_RGI_SYST_CD, SYST_RGI_PRGR_ID, SYST_CHG_DT, SYST_CHG_PRAF_NO, SYST_CHG_OGNZ_NO, SYST_CHG_SYST_CD, SYST_CHG_PRGR_ID) VALUES (304, 2, NULL, '/user/user', '마이페이지', NULL, 'N', NULL, 'Y', 'Y', NULL, 'N', 'Y', 3, 'Y', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
-- 3번 자식 (중첩 메뉴 부모 ID 402로 수정)
INSERT INTO ZT_MENU (MENU_ID, PARENT_MENU_ID, NAME, PATH, TITLE, ICON, SHOW_BADGE, SHOW_TEXT_BADGE, IS_HIDE, IS_HIDE_TAB, LINK, IS_IFRAME, KEEP_ALIVE, ORDER_SEQ, IS_ACTIVE, SYST_RGI_DT, SYST_RGI_PRAF_NO, SYST_RGI_OGNZ_NO, SYST_RGI_SYST_CD, SYST_RGI_PRGR_ID, SYST_CHG_DT, SYST_CHG_PRAF_NO, SYST_CHG_OGNZ_NO, SYST_CHG_SYST_CD, SYST_CHG_PRGR_ID) VALUES (401, 3, NULL, '/menu/menu', '메뉴 권한', '&#xe8a4;', 'N', NULL, 'N', 'N', NULL, 'N', 'Y', 0, 'Y', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
INSERT INTO ZT_MENU (MENU_ID, PARENT_MENU_ID, NAME, PATH, TITLE, ICON, SHOW_BADGE, SHOW_TEXT_BADGE, IS_HIDE, IS_HIDE_TAB, LINK, IS_IFRAME, KEEP_ALIVE, ORDER_SEQ, IS_ACTIVE, SYST_RGI_DT, SYST_RGI_PRAF_NO, SYST_RGI_OGNZ_NO, SYST_RGI_SYST_CD, SYST_RGI_PRGR_ID, SYST_CHG_DT, SYST_CHG_PRAF_NO, SYST_CHG_OGNZ_NO, SYST_CHG_SYST_CD, SYST_CHG_PRGR_ID) VALUES (411, 3, NULL, '/menu/permission', '권한 제어', '&#xe831;', 'N', 'new', 'N', 'N', NULL, 'N', 'Y', 1, 'Y', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
INSERT INTO ZT_MENU (MENU_ID, PARENT_MENU_ID, NAME, PATH, TITLE, ICON, SHOW_BADGE, SHOW_TEXT_BADGE, IS_HIDE, IS_HIDE_TAB, LINK, IS_IFRAME, KEEP_ALIVE, ORDER_SEQ, IS_ACTIVE, SYST_RGI_DT, SYST_RGI_PRAF_NO, SYST_RGI_OGNZ_NO, SYST_RGI_SYST_CD, SYST_RGI_PRGR_ID, SYST_CHG_DT, SYST_CHG_PRAF_NO, SYST_CHG_OGNZ_NO, SYST_CHG_SYST_CD, SYST_CHG_PRGR_ID) VALUES (402, 3, NULL, '/menu/nested', '중첩 메뉴', '&#xe676;', 'N', NULL, 'N', 'N', NULL, 'N', 'Y', 2, 'Y', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
-- 402번 자식 (중첩 메뉴)
INSERT INTO ZT_MENU (MENU_ID, PARENT_MENU_ID, NAME, PATH, TITLE, ICON, SHOW_BADGE, SHOW_TEXT_BADGE, IS_HIDE, IS_HIDE_TAB, LINK, IS_IFRAME, KEEP_ALIVE, ORDER_SEQ, IS_ACTIVE, SYST_RGI_DT, SYST_RGI_PRAF_NO, SYST_RGI_OGNZ_NO, SYST_RGI_SYST_CD, SYST_RGI_PRGR_ID, SYST_CHG_DT, SYST_CHG_PRAF_NO, SYST_CHG_OGNZ_NO, SYST_CHG_SYST_CD, SYST_CHG_PRGR_ID) VALUES (40201, 402, NULL, '/menu/nested/menu1', '메뉴1', '&#xe676;', 'N', NULL, 'N', 'N', NULL, 'N', 'Y', 0, 'Y', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
INSERT INTO ZT_MENU (MENU_ID, PARENT_MENU_ID, NAME, PATH, TITLE, ICON, SHOW_BADGE, SHOW_TEXT_BADGE, IS_HIDE, IS_HIDE_TAB, LINK, IS_IFRAME, KEEP_ALIVE, ORDER_SEQ, IS_ACTIVE, SYST_RGI_DT, SYST_RGI_PRAF_NO, SYST_RGI_OGNZ_NO, SYST_RGI_SYST_CD, SYST_RGI_PRGR_ID, SYST_CHG_DT, SYST_CHG_PRAF_NO, SYST_CHG_OGNZ_NO, SYST_CHG_SYST_CD, SYST_CHG_PRGR_ID) VALUES (40202, 402, NULL, '/menu/nested/menu2', '메뉴2', '&#xe676;', 'N', NULL, 'N', 'N', NULL, 'N', 'Y', 1, 'Y', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
INSERT INTO ZT_MENU (MENU_ID, PARENT_MENU_ID, NAME, PATH, TITLE, ICON, SHOW_BADGE, SHOW_TEXT_BADGE, IS_HIDE, IS_HIDE_TAB, LINK, IS_IFRAME, KEEP_ALIVE, ORDER_SEQ, IS_ACTIVE, SYST_RGI_DT, SYST_RGI_PRAF_NO, SYST_RGI_OGNZ_NO, SYST_RGI_SYST_CD, SYST_RGI_PRGR_ID, SYST_CHG_DT, SYST_CHG_PRAF_NO, SYST_CHG_OGNZ_NO, SYST_CHG_SYST_CD, SYST_CHG_PRGR_ID) VALUES (40203, 402, NULL, '/menu/nested/menu3', '메뉴3', '&#xe676;', 'N', NULL, 'N', 'N', NULL, 'N', 'Y', 2, 'Y', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
-- 40202 자식
INSERT INTO ZT_MENU (MENU_ID, PARENT_MENU_ID, NAME, PATH, TITLE, ICON, SHOW_BADGE, SHOW_TEXT_BADGE, IS_HIDE, IS_HIDE_TAB, LINK, IS_IFRAME, KEEP_ALIVE, ORDER_SEQ, IS_ACTIVE, SYST_RGI_DT, SYST_RGI_PRAF_NO, SYST_RGI_OGNZ_NO, SYST_RGI_SYST_CD, SYST_RGI_PRGR_ID, SYST_CHG_DT, SYST_CHG_PRAF_NO, SYST_CHG_OGNZ_NO, SYST_CHG_SYST_CD, SYST_CHG_PRGR_ID) VALUES (4020201, 40202, NULL, '/menu/nested/menu2/menu2-1', '메뉴2-1', '&#xe676;', 'N', NULL, 'N', 'N', NULL, 'N', 'Y', 0, 'Y', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
-- 40203 자식
INSERT INTO ZT_MENU (MENU_ID, PARENT_MENU_ID, NAME, PATH, TITLE, ICON, SHOW_BADGE, SHOW_TEXT_BADGE, IS_HIDE, IS_HIDE_TAB, LINK, IS_IFRAME, KEEP_ALIVE, ORDER_SEQ, IS_ACTIVE, SYST_RGI_DT, SYST_RGI_PRAF_NO, SYST_RGI_OGNZ_NO, SYST_RGI_SYST_CD, SYST_RGI_PRGR_ID, SYST_CHG_DT, SYST_CHG_PRAF_NO, SYST_CHG_OGNZ_NO, SYST_CHG_SYST_CD, SYST_CHG_PRGR_ID) VALUES (4020301, 40203, NULL, '/menu/nested/menu3/menu3-1', '메뉴3-1', '&#xe676;', 'N', NULL, 'N', 'N', NULL, 'N', 'Y', 0, 'Y', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
INSERT INTO ZT_MENU (MENU_ID, PARENT_MENU_ID, NAME, PATH, TITLE, ICON, SHOW_BADGE, SHOW_TEXT_BADGE, IS_HIDE, IS_HIDE_TAB, LINK, IS_IFRAME, KEEP_ALIVE, ORDER_SEQ, IS_ACTIVE, SYST_RGI_DT, SYST_RGI_PRAF_NO, SYST_RGI_OGNZ_NO, SYST_RGI_SYST_CD, SYST_RGI_PRGR_ID, SYST_CHG_DT, SYST_CHG_PRAF_NO, SYST_CHG_OGNZ_NO, SYST_CHG_SYST_CD, SYST_CHG_PRGR_ID) VALUES (4020302, 40203, NULL, '/menu/nested/menu3/menu3-2', '메뉴3-2', '&#xe676;', 'N', NULL, 'N', 'N', NULL, 'N', 'Y', 1, 'Y', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
-- 4020302 자식
INSERT INTO ZT_MENU (MENU_ID, PARENT_MENU_ID, NAME, PATH, TITLE, ICON, SHOW_BADGE, SHOW_TEXT_BADGE, IS_HIDE, IS_HIDE_TAB, LINK, IS_IFRAME, KEEP_ALIVE, ORDER_SEQ, IS_ACTIVE, SYST_RGI_DT, SYST_RGI_PRAF_NO, SYST_RGI_OGNZ_NO, SYST_RGI_SYST_CD, SYST_RGI_PRGR_ID, SYST_CHG_DT, SYST_CHG_PRAF_NO, SYST_CHG_OGNZ_NO, SYST_CHG_SYST_CD, SYST_CHG_PRGR_ID) VALUES (402030201, 4020302, NULL, '/menu/nested/menu3/menu3-2/menu3-2-1', '메뉴3-2-1', '&#xe676;', 'N', NULL, 'N', 'N', NULL, 'N', 'Y', 0, 'Y', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
-- 18번 자식
INSERT INTO ZT_MENU (MENU_ID, PARENT_MENU_ID, NAME, PATH, TITLE, ICON, SHOW_BADGE, SHOW_TEXT_BADGE, IS_HIDE, IS_HIDE_TAB, LINK, IS_IFRAME, KEEP_ALIVE, ORDER_SEQ, IS_ACTIVE, SYST_RGI_DT, SYST_RGI_PRAF_NO, SYST_RGI_OGNZ_NO, SYST_RGI_SYST_CD, SYST_RGI_PRGR_ID, SYST_CHG_DT, SYST_CHG_PRAF_NO, SYST_CHG_OGNZ_NO, SYST_CHG_SYST_CD, SYST_CHG_PRGR_ID) VALUES (405, 18, NULL, '/result/success', '성공 페이지', NULL, 'N', NULL, 'N', 'N', NULL, 'N', 'Y', 0, 'Y', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
INSERT INTO ZT_MENU (MENU_ID, PARENT_MENU_ID, NAME, PATH, TITLE, ICON, SHOW_BADGE, SHOW_TEXT_BADGE, IS_HIDE, IS_HIDE_TAB, LINK, IS_IFRAME, KEEP_ALIVE, ORDER_SEQ, IS_ACTIVE, SYST_RGI_DT, SYST_RGI_PRAF_NO, SYST_RGI_OGNZ_NO, SYST_RGI_SYST_CD, SYST_RGI_PRGR_ID, SYST_CHG_DT, SYST_CHG_PRAF_NO, SYST_CHG_OGNZ_NO, SYST_CHG_SYST_CD, SYST_CHG_PRGR_ID) VALUES (404, 18, NULL, '/result/fail', '실패 페이지', NULL, 'N', NULL, 'N', 'N', NULL, 'N', 'Y', 1, 'Y', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
-- 8번 자식
INSERT INTO ZT_MENU (MENU_ID, PARENT_MENU_ID, NAME, PATH, TITLE, ICON, SHOW_BADGE, SHOW_TEXT_BADGE, IS_HIDE, IS_HIDE_TAB, LINK, IS_IFRAME, KEEP_ALIVE, ORDER_SEQ, IS_ACTIVE, SYST_RGI_DT, SYST_RGI_PRAF_NO, SYST_RGI_OGNZ_NO, SYST_RGI_SYST_CD, SYST_RGI_PRGR_ID, SYST_CHG_DT, SYST_CHG_PRAF_NO, SYST_CHG_OGNZ_NO, SYST_CHG_SYST_CD, SYST_CHG_PRGR_ID) VALUES (801, 8, NULL, '/exception/403', '403', NULL, 'N', NULL, 'N', 'N', NULL, 'N', 'Y', 0, 'Y', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
INSERT INTO ZT_MENU (MENU_ID, PARENT_MENU_ID, NAME, PATH, TITLE, ICON, SHOW_BADGE, SHOW_TEXT_BADGE, IS_HIDE, IS_HIDE_TAB, LINK, IS_IFRAME, KEEP_ALIVE, ORDER_SEQ, IS_ACTIVE, SYST_RGI_DT, SYST_RGI_PRAF_NO, SYST_RGI_OGNZ_NO, SYST_RGI_SYST_CD, SYST_RGI_PRGR_ID, SYST_CHG_DT, SYST_CHG_PRAF_NO, SYST_CHG_OGNZ_NO, SYST_CHG_SYST_CD, SYST_CHG_PRGR_ID) VALUES (802, 8, NULL, '/exception/404', '404', NULL, 'N', NULL, 'N', 'N', NULL, 'N', 'Y', 1, 'Y', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
INSERT INTO ZT_MENU (MENU_ID, PARENT_MENU_ID, NAME, PATH, TITLE, ICON, SHOW_BADGE, SHOW_TEXT_BADGE, IS_HIDE, IS_HIDE_TAB, LINK, IS_IFRAME, KEEP_ALIVE, ORDER_SEQ, IS_ACTIVE, SYST_RGI_DT, SYST_RGI_PRAF_NO, SYST_RGI_OGNZ_NO, SYST_RGI_SYST_CD, SYST_RGI_PRGR_ID, SYST_CHG_DT, SYST_CHG_PRAF_NO, SYST_CHG_OGNZ_NO, SYST_CHG_SYST_CD, SYST_CHG_PRGR_ID) VALUES (803, 8, NULL, '/exception/500', '500', NULL, 'N', NULL, 'N', 'N', NULL, 'N', 'Y', 2, 'Y', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
-- 9번 자식
INSERT INTO ZT_MENU (MENU_ID, PARENT_MENU_ID, NAME, PATH, TITLE, ICON, SHOW_BADGE, SHOW_TEXT_BADGE, IS_HIDE, IS_HIDE_TAB, LINK, IS_IFRAME, KEEP_ALIVE, ORDER_SEQ, IS_ACTIVE, SYST_RGI_DT, SYST_RGI_PRAF_NO, SYST_RGI_OGNZ_NO, SYST_RGI_SYST_CD, SYST_RGI_PRGR_ID, SYST_CHG_DT, SYST_CHG_PRAF_NO, SYST_CHG_OGNZ_NO, SYST_CHG_SYST_CD, SYST_CHG_PRGR_ID) VALUES (901, 9, NULL, '/system/setting', '시스템 설정', NULL, 'N', NULL, 'N', 'N', NULL, 'N', 'Y', 0, 'Y', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
INSERT INTO ZT_MENU (MENU_ID, PARENT_MENU_ID, NAME, PATH, TITLE, ICON, SHOW_BADGE, SHOW_TEXT_BADGE, IS_HIDE, IS_HIDE_TAB, LINK, IS_IFRAME, KEEP_ALIVE, ORDER_SEQ, IS_ACTIVE, SYST_RGI_DT, SYST_RGI_PRAF_NO, SYST_RGI_OGNZ_NO, SYST_RGI_SYST_CD, SYST_RGI_PRGR_ID, SYST_CHG_DT, SYST_CHG_PRAF_NO, SYST_CHG_OGNZ_NO, SYST_CHG_SYST_CD, SYST_CHG_PRGR_ID) VALUES (902, 9, NULL, '/system/api', 'API 관리', NULL, 'N', NULL, 'N', 'N', NULL, 'N', 'Y', 1, 'Y', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
INSERT INTO ZT_MENU (MENU_ID, PARENT_MENU_ID, NAME, PATH, TITLE, ICON, SHOW_BADGE, SHOW_TEXT_BADGE, IS_HIDE, IS_HIDE_TAB, LINK, IS_IFRAME, KEEP_ALIVE, ORDER_SEQ, IS_ACTIVE, SYST_RGI_DT, SYST_RGI_PRAF_NO, SYST_RGI_OGNZ_NO, SYST_RGI_SYST_CD, SYST_RGI_PRGR_ID, SYST_CHG_DT, SYST_CHG_PRAF_NO, SYST_CHG_OGNZ_NO, SYST_CHG_SYST_CD, SYST_CHG_PRGR_ID) VALUES (903, 9, NULL, '/system/log', '시스템 로그', NULL, 'N', NULL, 'N', 'N', NULL, 'N', 'Y', 2, 'Y', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
-- 10번 자식
INSERT INTO ZT_MENU (MENU_ID, PARENT_MENU_ID, NAME, PATH, TITLE, ICON, SHOW_BADGE, SHOW_TEXT_BADGE, IS_HIDE, IS_HIDE_TAB, LINK, IS_IFRAME, KEEP_ALIVE, ORDER_SEQ, IS_ACTIVE, SYST_RGI_DT, SYST_RGI_PRAF_NO, SYST_RGI_OGNZ_NO, SYST_RGI_SYST_CD, SYST_RGI_PRGR_ID, SYST_CHG_DT, SYST_CHG_PRAF_NO, SYST_CHG_OGNZ_NO, SYST_CHG_SYST_CD, SYST_CHG_PRGR_ID) VALUES (1001, 10, NULL, '/axhub/auth', '권한설정', NULL, 'N', NULL, 'N', 'N', NULL, 'N', 'Y', 0, 'Y', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
INSERT INTO ZT_MENU (MENU_ID, PARENT_MENU_ID, NAME, PATH, TITLE, ICON, SHOW_BADGE, SHOW_TEXT_BADGE, IS_HIDE, IS_HIDE_TAB, LINK, IS_IFRAME, KEEP_ALIVE, ORDER_SEQ, IS_ACTIVE, SYST_RGI_DT, SYST_RGI_PRAF_NO, SYST_RGI_OGNZ_NO, SYST_RGI_SYST_CD, SYST_RGI_PRGR_ID, SYST_CHG_DT, SYST_CHG_PRAF_NO, SYST_CHG_OGNZ_NO, SYST_CHG_SYST_CD, SYST_CHG_PRGR_ID) VALUES (1002, 10, 'MenuMgmt', '/axhub/menu-mgmt', '메뉴 관리', NULL, 'N', NULL, 'N', 'N', NULL, 'N', 'Y', 1, 'Y', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
-- ============================================================
-- 샘플 데이터 (개발용)
-- ============================================================
INSERT INTO AX_TOOL_MST
(TOOL_ID, TOOL_NM, TOOL_DS, TOOL_TYPE_CD, PUSE_YN,
SYST_RGI_DT, SYST_RGI_PRAF_NO, SYST_RGI_OGNZ_NO, SYST_RGI_SYST_CD, SYST_RGI_PRGR_ID,
SYST_CHG_DT, SYST_CHG_PRAF_NO, SYST_CHG_OGNZ_NO, SYST_CHG_SYST_CD, SYST_CHG_PRGR_ID)
VALUES
('TOOL_A', '지식 검색', '지식베이스 내 문서 의미 기반 검색', 'MCP', 'Y',
CURRENT_DATE, 'SYSTEM', 'SYSTEM', 'AXH', 'SOATM0100',
CURRENT_DATE, 'SYSTEM', 'SYSTEM', 'AXH', 'SOATM0100'),
('TOOL_B', 'DB 조회', '사내 데이터베이스 직접 조회 (GLOW)', 'MCP', 'Y',
CURRENT_DATE, 'SYSTEM', 'SYSTEM', 'AXH', 'SOATM0100',
CURRENT_DATE, 'SYSTEM', 'SYSTEM', 'AXH', 'SOATM0100'),
('TOOL_C', '문서 생성', 'AI 기반 문서 초안 자동 생성', 'FUNC', 'Y',
CURRENT_DATE, 'SYSTEM', 'SYSTEM', 'AXH', 'SOATM0100',
CURRENT_DATE, 'SYSTEM', 'SYSTEM', 'AXH', 'SOATM0100');
INSERT INTO AX_KNWL_MST
(KNWL_ID, KNWL_NM, KNWL_DS, KNWL_TYPE_CD, PUSE_YN,
SYST_RGI_DT, SYST_RGI_PRAF_NO, SYST_RGI_OGNZ_NO, SYST_RGI_SYST_CD, SYST_RGI_PRGR_ID,
SYST_CHG_DT, SYST_CHG_PRAF_NO, SYST_CHG_OGNZ_NO, SYST_CHG_SYST_CD, SYST_CHG_PRGR_ID)
VALUES
('KNWL_Q', '상품기초서류', '보험 상품 기초서류 약 8만건', 'PRODUCT', 'Y',
CURRENT_DATE, 'SYSTEM', 'SYSTEM', 'AXH', 'SOATM0100',
CURRENT_DATE, 'SYSTEM', 'SYSTEM', 'AXH', 'SOATM0100'),
('KNWL_W', '업무매뉴얼', '내부 업무 매뉴얼 및 프로세스 가이드', 'MANUAL', 'Y',
CURRENT_DATE, 'SYSTEM', 'SYSTEM', 'AXH', 'SOATM0100',
CURRENT_DATE, 'SYSTEM', 'SYSTEM', 'AXH', 'SOATM0100'),
('KNWL_E', '법률/규정', '보험업법 및 금융당국 규정', 'LEGAL', 'Y',
CURRENT_DATE, 'SYSTEM', 'SYSTEM', 'AXH', 'SOATM0100',
CURRENT_DATE, 'SYSTEM', 'SYSTEM', 'AXH', 'SOATM0100');
COMMIT;
-- 역할 데이터
INSERT INTO S_EIAM_TIS.AA_ROLE (SYST_ID,ROLE_NO,ROLE_NM,ROLE_DS,ASST_OWNR_ROLE_TYPE_CD,MASK_ECPT_MD_CD,INDV_INFO_ATHR_YN,MAIN_CST_IFIN_YN,PUSE_YN,SYST_RGI_DT,SYST_RGI_PRAF_NO,SYST_RGI_OGNZ_NO,SYST_RGI_SYST_CD,SYST_RGI_PRGR_ID,SYST_CHG_DT,SYST_CHG_PRAF_NO,SYST_CHG_OGNZ_NO,SYST_CHG_SYST_CD,SYST_CHG_PRGR_ID) VALUES ('0000000205','110','AI아키텍트','AI 시스템 아키텍처 설계 및 에이전트 구조 검토 담당자','ZZZ','N','N','N','Y',TIMESTAMP '2022-04-19 12:19:18','99999999','9999999','SAA','EIAM',TIMESTAMP '2022-04-19 12:30:08','99999999','9999999','SAA','EIAM' ) ;
INSERT INTO S_EIAM_TIS.AA_ROLE (SYST_ID,ROLE_NO,ROLE_NM,ROLE_DS,ASST_OWNR_ROLE_TYPE_CD,MASK_ECPT_MD_CD,INDV_INFO_ATHR_YN,MAIN_CST_IFIN_YN,PUSE_YN,SYST_RGI_DT,SYST_RGI_PRAF_NO,SYST_RGI_OGNZ_NO,SYST_RGI_SYST_CD,SYST_RGI_PRGR_ID,SYST_CHG_DT,SYST_CHG_PRAF_NO,SYST_CHG_OGNZ_NO,SYST_CHG_SYST_CD,SYST_CHG_PRGR_ID) VALUES ('0000000205','106','데이터분석사용자','AI 분석 대시보드 및 에이전트 통계 조회 가능 사용자','ZZZ','N','N','N','Y',TIMESTAMP '2022-04-19 12:19:19','99999999','9999999','SAA','EIAM',TIMESTAMP '2022-04-19 12:30:08','99999999','9999999','SAA','EIAM' ) ;
INSERT INTO S_EIAM_TIS.AA_ROLE (SYST_ID,ROLE_NO,ROLE_NM,ROLE_DS,ASST_OWNR_ROLE_TYPE_CD,MASK_ECPT_MD_CD,INDV_INFO_ATHR_YN,MAIN_CST_IFIN_YN,PUSE_YN,SYST_RGI_DT,SYST_RGI_PRAF_NO,SYST_RGI_OGNZ_NO,SYST_RGI_SYST_CD,SYST_RGI_PRGR_ID,SYST_CHG_DT,SYST_CHG_PRAF_NO,SYST_CHG_OGNZ_NO,SYST_CHG_SYST_CD,SYST_CHG_PRGR_ID) VALUES ('0000000205','29','일반사용자','AI Hub 기본 이용 권한이 부여된 전사 일반 직원','ZZZ','N','N','N','Y',TIMESTAMP '2022-04-19 12:19:19','99999999','9999999','SAA','EIAM',TIMESTAMP '2022-04-19 12:30:08','99999999','9999999','SAA','EIAM' ) ;
INSERT INTO S_EIAM_TIS.AA_ROLE (SYST_ID,ROLE_NO,ROLE_NM,ROLE_DS,ASST_OWNR_ROLE_TYPE_CD,MASK_ECPT_MD_CD,INDV_INFO_ATHR_YN,MAIN_CST_IFIN_YN,PUSE_YN,SYST_RGI_DT,SYST_RGI_PRAF_NO,SYST_RGI_OGNZ_NO,SYST_RGI_SYST_CD,SYST_RGI_PRGR_ID,SYST_CHG_DT,SYST_CHG_PRAF_NO,SYST_CHG_OGNZ_NO,SYST_CHG_SYST_CD,SYST_CHG_PRGR_ID) VALUES ('0000000205','126','AI개발책임자','AI 서비스 개발을 총괄하는 책임자로 에이전트 빌드 파이프라인 최종 승인 권한 보유','ZZZ','N','N','N','Y',TIMESTAMP '2022-04-19 12:19:19','99999999','9999999','SAA','EIAM',TIMESTAMP '2022-04-19 12:30:08','99999999','9999999','SAA','EIAM' ) ;
INSERT INTO S_EIAM_TIS.AA_ROLE (SYST_ID,ROLE_NO,ROLE_NM,ROLE_DS,ASST_OWNR_ROLE_TYPE_CD,MASK_ECPT_MD_CD,INDV_INFO_ATHR_YN,MAIN_CST_IFIN_YN,PUSE_YN,SYST_RGI_DT,SYST_RGI_PRAF_NO,SYST_RGI_OGNZ_NO,SYST_RGI_SYST_CD,SYST_RGI_PRGR_ID,SYST_CHG_DT,SYST_CHG_PRAF_NO,SYST_CHG_OGNZ_NO,SYST_CHG_SYST_CD,SYST_CHG_PRGR_ID) VALUES ('0000000205','133','AI운영책임자','AI 서비스 운영 및 에이전트 인프라를 총괄하는 책임자','ZZZ','N','N','N','Y',TIMESTAMP '2022-04-19 12:19:19','99999999','9999999','SAA','EIAM',TIMESTAMP '2022-04-19 12:30:08','99999999','9999999','SAA','EIAM' ) ;
INSERT INTO S_EIAM_TIS.AA_ROLE (SYST_ID,ROLE_NO,ROLE_NM,ROLE_DS,ASST_OWNR_ROLE_TYPE_CD,MASK_ECPT_MD_CD,INDV_INFO_ATHR_YN,MAIN_CST_IFIN_YN,PUSE_YN,SYST_RGI_DT,SYST_RGI_PRAF_NO,SYST_RGI_OGNZ_NO,SYST_RGI_SYST_CD,SYST_RGI_PRGR_ID,SYST_CHG_DT,SYST_CHG_PRAF_NO,SYST_CHG_OGNZ_NO,SYST_CHG_SYST_CD,SYST_CHG_PRGR_ID) VALUES ('0000000205','122','AI위험관리자','AI 모델 리스크 평가 및 컴플라이언스 모니터링 담당자','ZZZ','N','N','N','Y',TIMESTAMP '2022-04-19 12:19:19','99999999','9999999','SAA','EIAM',TIMESTAMP '2022-04-19 12:30:08','99999999','9999999','SAA','EIAM' ) ;
INSERT INTO S_EIAM_TIS.AA_ROLE (SYST_ID,ROLE_NO,ROLE_NM,ROLE_DS,ASST_OWNR_ROLE_TYPE_CD,MASK_ECPT_MD_CD,INDV_INFO_ATHR_YN,MAIN_CST_IFIN_YN,PUSE_YN,SYST_RGI_DT,SYST_RGI_PRAF_NO,SYST_RGI_OGNZ_NO,SYST_RGI_SYST_CD,SYST_RGI_PRGR_ID,SYST_CHG_DT,SYST_CHG_PRAF_NO,SYST_CHG_OGNZ_NO,SYST_CHG_SYST_CD,SYST_CHG_PRGR_ID) VALUES ('0000000205','125','AI감사인','AI 에이전트 활동 이력 및 데이터 사용 내역 감사 담당자','ZZZ','N','N','N','Y',TIMESTAMP '2022-04-19 12:19:19','99999999','9999999','SAA','EIAM',TIMESTAMP '2022-04-19 12:30:08','99999999','9999999','SAA','EIAM' ) ;
INSERT INTO S_EIAM_TIS.AA_ROLE (SYST_ID,ROLE_NO,ROLE_NM,ROLE_DS,ASST_OWNR_ROLE_TYPE_CD,MASK_ECPT_MD_CD,INDV_INFO_ATHR_YN,MAIN_CST_IFIN_YN,PUSE_YN,SYST_RGI_DT,SYST_RGI_PRAF_NO,SYST_RGI_OGNZ_NO,SYST_RGI_SYST_CD,SYST_RGI_PRGR_ID,SYST_CHG_DT,SYST_CHG_PRAF_NO,SYST_CHG_OGNZ_NO,SYST_CHG_SYST_CD,SYST_CHG_PRGR_ID) VALUES ('0000000205','69','AI배포검토관','AI 모델 및 에이전트 서비스 배포 전 변경 검토 회의 주관자','ZZZ','N','N','N','Y',TIMESTAMP '2022-04-19 12:19:19','99999999','9999999','SAA','EIAM',TIMESTAMP '2022-04-19 12:30:08','99999999','9999999','SAA','EIAM' ) ;
INSERT INTO S_EIAM_TIS.AA_ROLE (SYST_ID,ROLE_NO,ROLE_NM,ROLE_DS,ASST_OWNR_ROLE_TYPE_CD,MASK_ECPT_MD_CD,INDV_INFO_ATHR_YN,MAIN_CST_IFIN_YN,PUSE_YN,SYST_RGI_DT,SYST_RGI_PRAF_NO,SYST_RGI_OGNZ_NO,SYST_RGI_SYST_CD,SYST_RGI_PRGR_ID,SYST_CHG_DT,SYST_CHG_PRAF_NO,SYST_CHG_OGNZ_NO,SYST_CHG_SYST_CD,SYST_CHG_PRGR_ID) VALUES ('0000000205','4','AI개발자','AI 에이전트 및 서비스 개발에 참여하는 내부 및 협력사 직원','ZZZ','N','N','N','Y',TIMESTAMP '2022-04-19 12:19:19','99999999','9999999','SAA','EIAM',TIMESTAMP '2022-04-19 12:30:08','99999999','9999999','SAA','EIAM' ) ;
INSERT INTO S_EIAM_TIS.AA_ROLE (SYST_ID,ROLE_NO,ROLE_NM,ROLE_DS,ASST_OWNR_ROLE_TYPE_CD,MASK_ECPT_MD_CD,INDV_INFO_ATHR_YN,MAIN_CST_IFIN_YN,PUSE_YN,SYST_RGI_DT,SYST_RGI_PRAF_NO,SYST_RGI_OGNZ_NO,SYST_RGI_SYST_CD,SYST_RGI_PRGR_ID,SYST_CHG_DT,SYST_CHG_PRAF_NO,SYST_CHG_OGNZ_NO,SYST_CHG_SYST_CD,SYST_CHG_PRGR_ID) VALUES ('0000000205','18','시스템관리자','AI Hub 전체 시스템 설정 및 에이전트 플랫폼 관리 담당자','ZZZ','N','N','N','Y',TIMESTAMP '2022-04-19 12:19:19','99999999','9999999','SAA','EIAM',TIMESTAMP '2022-04-19 12:30:08','99999999','9999999','SAA','EIAM' ) ;
INSERT INTO S_EIAM_TIS.AA_ROLE (SYST_ID,ROLE_NO,ROLE_NM,ROLE_DS,ASST_OWNR_ROLE_TYPE_CD,MASK_ECPT_MD_CD,INDV_INFO_ATHR_YN,MAIN_CST_IFIN_YN,PUSE_YN,SYST_RGI_DT,SYST_RGI_PRAF_NO,SYST_RGI_OGNZ_NO,SYST_RGI_SYST_CD,SYST_RGI_PRGR_ID,SYST_CHG_DT,SYST_CHG_PRAF_NO,SYST_CHG_OGNZ_NO,SYST_CHG_SYST_CD,SYST_CHG_PRGR_ID) VALUES ('0000000205','123','AI서비스요청자','AI 기능 개발 및 에이전트 도입을 요청하는 전사 직원','ZZZ','N','N','N','Y',TIMESTAMP '2022-04-19 12:19:19','99999999','9999999','SAA','EIAM',TIMESTAMP '2022-04-19 12:30:08','99999999','9999999','SAA','EIAM' ) ;
INSERT INTO S_EIAM_TIS.AA_ROLE (SYST_ID,ROLE_NO,ROLE_NM,ROLE_DS,ASST_OWNR_ROLE_TYPE_CD,MASK_ECPT_MD_CD,INDV_INFO_ATHR_YN,MAIN_CST_IFIN_YN,PUSE_YN,SYST_RGI_DT,SYST_RGI_PRAF_NO,SYST_RGI_OGNZ_NO,SYST_RGI_SYST_CD,SYST_RGI_PRGR_ID,SYST_CHG_DT,SYST_CHG_PRAF_NO,SYST_CHG_OGNZ_NO,SYST_CHG_SYST_CD,SYST_CHG_PRGR_ID) VALUES ('0000000205','132','AI검증자','AI 모델 및 에이전트 기능 검증에 참여하는 전사 직원','ZZZ','N','N','N','Y',TIMESTAMP '2022-04-19 12:19:19','99999999','9999999','SAA','EIAM',TIMESTAMP '2022-04-19 12:30:08','99999999','9999999','SAA','EIAM' ) ;
INSERT INTO S_EIAM_TIS.AA_ROLE (SYST_ID,ROLE_NO,ROLE_NM,ROLE_DS,ASST_OWNR_ROLE_TYPE_CD,MASK_ECPT_MD_CD,INDV_INFO_ATHR_YN,MAIN_CST_IFIN_YN,PUSE_YN,SYST_RGI_DT,SYST_RGI_PRAF_NO,SYST_RGI_OGNZ_NO,SYST_RGI_SYST_CD,SYST_RGI_PRGR_ID,SYST_CHG_DT,SYST_CHG_PRAF_NO,SYST_CHG_OGNZ_NO,SYST_CHG_SYST_CD,SYST_CHG_PRGR_ID) VALUES ('0000000205','127','현업AI위험관리자','현업 부서 내 AI 서비스 도입 리스크 관리를 수행하는 직원','ZZZ','N','N','N','Y',TIMESTAMP '2022-04-19 12:19:19','99999999','9999999','SAA','EIAM',TIMESTAMP '2022-04-19 12:30:08','99999999','9999999','SAA','EIAM' ) ;
INSERT INTO S_EIAM_TIS.AA_ROLE (SYST_ID,ROLE_NO,ROLE_NM,ROLE_DS,ASST_OWNR_ROLE_TYPE_CD,MASK_ECPT_MD_CD,INDV_INFO_ATHR_YN,MAIN_CST_IFIN_YN,PUSE_YN,SYST_RGI_DT,SYST_RGI_PRAF_NO,SYST_RGI_OGNZ_NO,SYST_RGI_SYST_CD,SYST_RGI_PRGR_ID,SYST_CHG_DT,SYST_CHG_PRAF_NO,SYST_CHG_OGNZ_NO,SYST_CHG_SYST_CD,SYST_CHG_PRGR_ID) VALUES ('0000000205','128','현업AI책임자','현업 부서 내 AI 서비스 개발 및 도입을 책임지는 직원','ZZZ','N','N','N','Y',TIMESTAMP '2022-04-19 12:19:19','99999999','9999999','SAA','EIAM',TIMESTAMP '2022-04-19 12:30:08','99999999','9999999','SAA','EIAM') ;
INSERT INTO S_EIAM_TIS.AA_ROLE (SYST_ID,ROLE_NO,ROLE_NM,ROLE_DS,ASST_OWNR_ROLE_TYPE_CD,MASK_ECPT_MD_CD,INDV_INFO_ATHR_YN,MAIN_CST_IFIN_YN,PUSE_YN,SYST_RGI_DT,SYST_RGI_PRAF_NO,SYST_RGI_OGNZ_NO,SYST_RGI_SYST_CD,SYST_RGI_PRGR_ID,SYST_CHG_DT,SYST_CHG_PRAF_NO,SYST_CHG_OGNZ_NO,SYST_CHG_SYST_CD,SYST_CHG_PRGR_ID) VALUES ('0000000205','142','AI개발부서장','AI 개발 조직의 부서장으로 에이전트 개발 방향성 결정 권한 보유','ZZZ','N','N','N','Y',TIMESTAMP '2022-04-19 12:19:19','99999999','9999999','SAA','EIAM',TIMESTAMP '2022-04-19 12:30:08','99999999','9999999','SAA','EIAM' ) ;
INSERT INTO S_EIAM_TIS.AA_ROLE (SYST_ID,ROLE_NO,ROLE_NM,ROLE_DS,ASST_OWNR_ROLE_TYPE_CD,MASK_ECPT_MD_CD,INDV_INFO_ATHR_YN,MAIN_CST_IFIN_YN,PUSE_YN,SYST_RGI_DT,SYST_RGI_PRAF_NO,SYST_RGI_OGNZ_NO,SYST_RGI_SYST_CD,SYST_RGI_PRGR_ID,SYST_CHG_DT,SYST_CHG_PRAF_NO,SYST_CHG_OGNZ_NO,SYST_CHG_SYST_CD,SYST_CHG_PRGR_ID) VALUES ('0000000205','143','AI운영부서장','AI 운영 조직의 부서장으로 에이전트 서비스 안정성 총괄','ZZZ','N','N','N','Y',TIMESTAMP '2022-04-19 12:19:19','99999999','9999999','SAA','EIAM',TIMESTAMP '2022-04-19 12:30:08','99999999','9999999','SAA','EIAM' ) ;
INSERT INTO S_EIAM_TIS.AA_ROLE (SYST_ID,ROLE_NO,ROLE_NM,ROLE_DS,ASST_OWNR_ROLE_TYPE_CD,MASK_ECPT_MD_CD,INDV_INFO_ATHR_YN,MAIN_CST_IFIN_YN,PUSE_YN,SYST_RGI_DT,SYST_RGI_PRAF_NO,SYST_RGI_OGNZ_NO,SYST_RGI_SYST_CD,SYST_RGI_PRGR_ID,SYST_CHG_DT,SYST_CHG_PRAF_NO,SYST_CHG_OGNZ_NO,SYST_CHG_SYST_CD,SYST_CHG_PRGR_ID) VALUES ('0000000205','225','지식감사인','AI 지식베이스 무결성 및 에이전트 활동 이력 독립 감사 담당자','ZZZ','N','N','N','Y',TIMESTAMP '2022-04-19 12:19:19','99999999','9999999','SAA','EIAM',TIMESTAMP '2022-05-06 15:45:08','61003745','0997100','SAA','EIAM' ) ;
INSERT INTO S_EIAM_TIS.AA_ROLE (SYST_ID,ROLE_NO,ROLE_NM,ROLE_DS,ASST_OWNR_ROLE_TYPE_CD,MASK_ECPT_MD_CD,INDV_INFO_ATHR_YN,MAIN_CST_IFIN_YN,PUSE_YN,SYST_RGI_DT,SYST_RGI_PRAF_NO,SYST_RGI_OGNZ_NO,SYST_RGI_SYST_CD,SYST_RGI_PRGR_ID,SYST_CHG_DT,SYST_CHG_PRAF_NO,SYST_CHG_OGNZ_NO,SYST_CHG_SYST_CD,SYST_CHG_PRGR_ID) VALUES ('0000000205','144','AI품질관리자','AI 모델 성능 및 응답 품질 제3자 검증 담당자','ZZZ','N','N','N','Y',TIMESTAMP '2022-04-19 12:19:19','99999999','9999999','SAA','EIAM',TIMESTAMP '2022-05-03 13:30:07','61003745','0997100','SAA','EIAM' ) ;
-- 사용자 그룹
INSERT INTO S_EIAM_TIS.AA_USER_GROU (SYST_ID,USER_GROU_ID,OGNZ_NO,USER_GROU_NM,USER_GROU_DS,PUSE_YN,SYST_RGI_DT,SYST_RGI_PRAF_NO,SYST_RGI_OGNZ_NO,SYST_RGI_SYST_CD,SYST_RGI_PRGR_ID,SYST_CHG_DT,SYST_CHG_PRAF_NO,SYST_CHG_OGNZ_NO,SYST_CHG_SYST_CD,SYST_CHG_PRGR_ID) VALUES ('0000000205','UG_0011296', NULL ,'어플리케이션아키텍트','어플리케이션아키텍트','Y',TIMESTAMP '2022-04-19 12:19:18','99999999','9999999','SAA','EIAM',TIMESTAMP '2022-04-19 12:30:17','99999999','9999999','SAA','EIAM' ) ;
INSERT INTO S_EIAM_TIS.AA_USER_GROU (SYST_ID,USER_GROU_ID,OGNZ_NO,USER_GROU_NM,USER_GROU_DS,PUSE_YN,SYST_RGI_DT,SYST_RGI_PRAF_NO,SYST_RGI_OGNZ_NO,SYST_RGI_SYST_CD,SYST_RGI_PRGR_ID,SYST_CHG_DT,SYST_CHG_PRAF_NO,SYST_CHG_OGNZ_NO,SYST_CHG_SYST_CD,SYST_CHG_PRGR_ID) VALUES ('0000000205','UG_0011297', NULL ,'통계사용자','통계화면을 볼 수 있는 사용자','Y',TIMESTAMP '2022-04-19 12:19:18','99999999','9999999','SAA','EIAM',TIMESTAMP '2022-04-19 12:30:17','99999999','9999999','SAA','EIAM' ) ;
INSERT INTO S_EIAM_TIS.AA_USER_GROU (SYST_ID,USER_GROU_ID,OGNZ_NO,USER_GROU_NM,USER_GROU_DS,PUSE_YN,SYST_RGI_DT,SYST_RGI_PRAF_NO,SYST_RGI_OGNZ_NO,SYST_RGI_SYST_CD,SYST_RGI_PRGR_ID,SYST_CHG_DT,SYST_CHG_PRAF_NO,SYST_CHG_OGNZ_NO,SYST_CHG_SYST_CD,SYST_CHG_PRGR_ID) VALUES ('0000000205','UG_0011298', NULL ,'IT내부직원','ICT본부내 신한라이프 정직원 자동부여','Y',TIMESTAMP '2022-04-19 12:19:18','99999999','9999999','SAA','EIAM',TIMESTAMP '2022-04-19 12:30:17','99999999','9999999','SAA','EIAM' ) ;
INSERT INTO S_EIAM_TIS.AA_USER_GROU (SYST_ID,USER_GROU_ID,OGNZ_NO,USER_GROU_NM,USER_GROU_DS,PUSE_YN,SYST_RGI_DT,SYST_RGI_PRAF_NO,SYST_RGI_OGNZ_NO,SYST_RGI_SYST_CD,SYST_RGI_PRGR_ID,SYST_CHG_DT,SYST_CHG_PRAF_NO,SYST_CHG_OGNZ_NO,SYST_CHG_SYST_CD,SYST_CHG_PRGR_ID) VALUES ('0000000205','UG_0011299', NULL ,'IT개발책임자','(ICT본부만 해당)IT개발부서장 및 IT개발부서장 권한이양받은 파트장 (근거 있어야 함)','Y',TIMESTAMP '2022-04-19 12:19:18','99999999','9999999','SAA','EIAM',TIMESTAMP '2022-04-19 12:30:17','99999999','9999999','SAA','EIAM' ) ;
INSERT INTO S_EIAM_TIS.AA_USER_GROU (SYST_ID,USER_GROU_ID,OGNZ_NO,USER_GROU_NM,USER_GROU_DS,PUSE_YN,SYST_RGI_DT,SYST_RGI_PRAF_NO,SYST_RGI_OGNZ_NO,SYST_RGI_SYST_CD,SYST_RGI_PRGR_ID,SYST_CHG_DT,SYST_CHG_PRAF_NO,SYST_CHG_OGNZ_NO,SYST_CHG_SYST_CD,SYST_CHG_PRGR_ID) VALUES ('0000000205','UG_0011300', NULL ,'IT운영책임자','(ICT본부만 해당)IT운영부서장 및 IT운영부서장 권한이양받은 파트장 (근거 있어야 함)','Y',TIMESTAMP '2022-04-19 12:19:18','99999999','9999999','SAA','EIAM',TIMESTAMP '2022-04-19 12:30:17','99999999','9999999','SAA','EIAM' ) ;
INSERT INTO S_EIAM_TIS.AA_USER_GROU (SYST_ID,USER_GROU_ID,OGNZ_NO,USER_GROU_NM,USER_GROU_DS,PUSE_YN,SYST_RGI_DT,SYST_RGI_PRAF_NO,SYST_RGI_OGNZ_NO,SYST_RGI_SYST_CD,SYST_RGI_PRGR_ID,SYST_CHG_DT,SYST_CHG_PRAF_NO,SYST_CHG_OGNZ_NO,SYST_CHG_SYST_CD,SYST_CHG_PRGR_ID) VALUES ('0000000205','UG_0011301', NULL ,'RM','ICT본부내 IT RM그룹','Y',TIMESTAMP '2022-04-19 12:19:18','99999999','9999999','SAA','EIAM',TIMESTAMP '2022-04-19 12:30:17','99999999','9999999','SAA','EIAM' ) ;
INSERT INTO S_EIAM_TIS.AA_USER_GROU (SYST_ID,USER_GROU_ID,OGNZ_NO,USER_GROU_NM,USER_GROU_DS,PUSE_YN,SYST_RGI_DT,SYST_RGI_PRAF_NO,SYST_RGI_OGNZ_NO,SYST_RGI_SYST_CD,SYST_RGI_PRGR_ID,SYST_CHG_DT,SYST_CHG_PRAF_NO,SYST_CHG_OGNZ_NO,SYST_CHG_SYST_CD,SYST_CHG_PRGR_ID) VALUES ('0000000205','UG_0011302', NULL ,'IT감사인','ICT본부내 IT감사인','Y',TIMESTAMP '2022-04-19 12:19:18','99999999','9999999','SAA','EIAM',TIMESTAMP '2022-04-19 12:30:17','99999999','9999999','SAA','EIAM' ) ;
INSERT INTO S_EIAM_TIS.AA_USER_GROU (SYST_ID,USER_GROU_ID,OGNZ_NO,USER_GROU_NM,USER_GROU_DS,PUSE_YN,SYST_RGI_DT,SYST_RGI_PRAF_NO,SYST_RGI_OGNZ_NO,SYST_RGI_SYST_CD,SYST_RGI_PRGR_ID,SYST_CHG_DT,SYST_CHG_PRAF_NO,SYST_CHG_OGNZ_NO,SYST_CHG_SYST_CD,SYST_CHG_PRGR_ID) VALUES ('0000000205','UG_0011303', NULL ,'이행검토주관자','ICT본부내 변경관리회의 주관자','Y',TIMESTAMP '2022-04-19 12:19:18','99999999','9999999','SAA','EIAM',TIMESTAMP '2022-04-19 12:30:17','99999999','9999999','SAA','EIAM' ) ;
INSERT INTO S_EIAM_TIS.AA_USER_GROU (SYST_ID,USER_GROU_ID,OGNZ_NO,USER_GROU_NM,USER_GROU_DS,PUSE_YN,SYST_RGI_DT,SYST_RGI_PRAF_NO,SYST_RGI_OGNZ_NO,SYST_RGI_SYST_CD,SYST_RGI_PRGR_ID,SYST_CHG_DT,SYST_CHG_PRAF_NO,SYST_CHG_OGNZ_NO,SYST_CHG_SYST_CD,SYST_CHG_PRGR_ID) VALUES ('0000000205','UG_0011304', NULL ,'IT개발자','ICT본부내 신한라이프 정직원-도급직원 자동부여','Y',TIMESTAMP '2022-04-19 12:19:18','99999999','9999999','SAA','EIAM',TIMESTAMP '2022-04-19 12:30:17','99999999','9999999','SAA','EIAM' ) ;
INSERT INTO S_EIAM_TIS.AA_USER_GROU (SYST_ID,USER_GROU_ID,OGNZ_NO,USER_GROU_NM,USER_GROU_DS,PUSE_YN,SYST_RGI_DT,SYST_RGI_PRAF_NO,SYST_RGI_OGNZ_NO,SYST_RGI_SYST_CD,SYST_RGI_PRGR_ID,SYST_CHG_DT,SYST_CHG_PRAF_NO,SYST_CHG_OGNZ_NO,SYST_CHG_SYST_CD,SYST_CHG_PRGR_ID) VALUES ('0000000205','UG_0011305', NULL ,'관리자','IT개발관리시스템 설정 및 시스템 관리','Y',TIMESTAMP '2022-04-19 12:19:18','99999999','9999999','SAA','EIAM',TIMESTAMP '2022-04-19 12:30:17','99999999','9999999','SAA','EIAM' ) ;
INSERT INTO S_EIAM_TIS.AA_USER_GROU (SYST_ID,USER_GROU_ID,OGNZ_NO,USER_GROU_NM,USER_GROU_DS,PUSE_YN,SYST_RGI_DT,SYST_RGI_PRAF_NO,SYST_RGI_OGNZ_NO,SYST_RGI_SYST_CD,SYST_RGI_PRGR_ID,SYST_CHG_DT,SYST_CHG_PRAF_NO,SYST_CHG_OGNZ_NO,SYST_CHG_SYST_CD,SYST_CHG_PRGR_ID) VALUES ('0000000205','UG_0011306', NULL ,'IT개발의뢰자','신한라이프 전사 정직원 자동부여','Y',TIMESTAMP '2022-04-19 12:19:18','99999999','9999999','SAA','EIAM',TIMESTAMP '2022-04-19 12:30:17','99999999','9999999','SAA','EIAM' ) ;
INSERT INTO S_EIAM_TIS.AA_USER_GROU (SYST_ID,USER_GROU_ID,OGNZ_NO,USER_GROU_NM,USER_GROU_DS,PUSE_YN,SYST_RGI_DT,SYST_RGI_PRAF_NO,SYST_RGI_OGNZ_NO,SYST_RGI_SYST_CD,SYST_RGI_PRGR_ID,SYST_CHG_DT,SYST_CHG_PRAF_NO,SYST_CHG_OGNZ_NO,SYST_CHG_SYST_CD,SYST_CHG_PRGR_ID) VALUES ('0000000205','UG_0011307', NULL ,'UAT테스터','신한라이프 전사 정직원 자동부여','Y',TIMESTAMP '2022-04-19 12:19:18','99999999','9999999','SAA','EIAM',TIMESTAMP '2022-04-19 12:30:17','99999999','9999999','SAA','EIAM' ) ;
INSERT INTO S_EIAM_TIS.AA_USER_GROU (SYST_ID,USER_GROU_ID,OGNZ_NO,USER_GROU_NM,USER_GROU_DS,PUSE_YN,SYST_RGI_DT,SYST_RGI_PRAF_NO,SYST_RGI_OGNZ_NO,SYST_RGI_SYST_CD,SYST_RGI_PRGR_ID,SYST_CHG_DT,SYST_CHG_PRAF_NO,SYST_CHG_OGNZ_NO,SYST_CHG_SYST_CD,SYST_CHG_PRGR_ID) VALUES ('0000000205','UG_0011308', NULL ,'현업_RM','(ICT본부외 해당)IT개발업무를 수행하는 현업부서내 RM역할 수행직원','Y',TIMESTAMP '2022-04-19 12:19:18','99999999','9999999','SAA','EIAM',TIMESTAMP '2022-04-19 12:30:17','99999999','9999999','SAA','EIAM' ) ;
INSERT INTO S_EIAM_TIS.AA_USER_GROU (SYST_ID,USER_GROU_ID,OGNZ_NO,USER_GROU_NM,USER_GROU_DS,PUSE_YN,SYST_RGI_DT,SYST_RGI_PRAF_NO,SYST_RGI_OGNZ_NO,SYST_RGI_SYST_CD,SYST_RGI_PRGR_ID,SYST_CHG_DT,SYST_CHG_PRAF_NO,SYST_CHG_OGNZ_NO,SYST_CHG_SYST_CD,SYST_CHG_PRGR_ID) VALUES ('0000000205','UG_0011309', NULL ,'현업_개발책임자','(ICT본부외 해당)IT개발업무를 수행하는 현업부서내 IT개발부서장역할을 수행하는 직원','Y',TIMESTAMP '2022-04-19 12:19:18','99999999','9999999','SAA','EIAM',TIMESTAMP '2022-04-19 12:30:17','99999999','9999999','SAA','EIAM') ;
INSERT INTO S_EIAM_TIS.AA_USER_GROU (SYST_ID,USER_GROU_ID,OGNZ_NO,USER_GROU_NM,USER_GROU_DS,PUSE_YN,SYST_RGI_DT,SYST_RGI_PRAF_NO,SYST_RGI_OGNZ_NO,SYST_RGI_SYST_CD,SYST_RGI_PRGR_ID,SYST_CHG_DT,SYST_CHG_PRAF_NO,SYST_CHG_OGNZ_NO,SYST_CHG_SYST_CD,SYST_CHG_PRGR_ID) VALUES ('0000000205','UG_0011310', NULL ,'IT개발부서장','ICT본부내 개발 부서장 자동부여','Y',TIMESTAMP '2022-04-19 12:19:18','99999999','9999999','SAA','EIAM',TIMESTAMP '2022-04-19 12:30:17','99999999','9999999','SAA','EIAM' ) ;
INSERT INTO S_EIAM_TIS.AA_USER_GROU (SYST_ID,USER_GROU_ID,OGNZ_NO,USER_GROU_NM,USER_GROU_DS,PUSE_YN,SYST_RGI_DT,SYST_RGI_PRAF_NO,SYST_RGI_OGNZ_NO,SYST_RGI_SYST_CD,SYST_RGI_PRGR_ID,SYST_CHG_DT,SYST_CHG_PRAF_NO,SYST_CHG_OGNZ_NO,SYST_CHG_SYST_CD,SYST_CHG_PRGR_ID) VALUES ('0000000205','UG_0011311', NULL ,'IT운영부서장','ICT본부내 운영 부서장 자동부여','Y',TIMESTAMP '2022-04-19 12:19:18','99999999','9999999','SAA','EIAM',TIMESTAMP '2022-04-19 12:30:17','99999999','9999999','SAA','EIAM' ) ;
INSERT INTO S_EIAM_TIS.AA_USER_GROU (SYST_ID,USER_GROU_ID,OGNZ_NO,USER_GROU_NM,USER_GROU_DS,PUSE_YN,SYST_RGI_DT,SYST_RGI_PRAF_NO,SYST_RGI_OGNZ_NO,SYST_RGI_SYST_CD,SYST_RGI_PRGR_ID,SYST_CHG_DT,SYST_CHG_PRAF_NO,SYST_CHG_OGNZ_NO,SYST_CHG_SYST_CD,SYST_CHG_PRGR_ID) VALUES ('0000000205','UG_0011312', NULL ,'감사인','감사팀내 IT감사인','N',TIMESTAMP '2022-04-19 12:19:18','99999999','9999999','SAA','EIAM',TIMESTAMP '2022-05-10 16:30:32','61003745','0997100','SAA','EIAM' ) ;
INSERT INTO S_EIAM_TIS.AA_USER_GROU (SYST_ID,USER_GROU_ID,OGNZ_NO,USER_GROU_NM,USER_GROU_DS,PUSE_YN,SYST_RGI_DT,SYST_RGI_PRAF_NO,SYST_RGI_OGNZ_NO,SYST_RGI_SYST_CD,SYST_RGI_PRGR_ID,SYST_CHG_DT,SYST_CHG_PRAF_NO,SYST_CHG_OGNZ_NO,SYST_CHG_SYST_CD,SYST_CHG_PRGR_ID) VALUES ('0000000205','UG_0011313', NULL ,'품질관리자','제3자점검자','Y',TIMESTAMP '2022-04-19 12:19:18','99999999','9999999','SAA','EIAM',TIMESTAMP '2022-04-19 12:30:17','99999999','9999999','SAA','EIAM' ) ;
-- 사용자 그룹-역할 관계
INSERT INTO S_EIAM_TIS.AA_USER_GROU_role_rtns (USER_GROU_ROLE_RTNS_ID,SYST_ID,USER_GROU_ID,ROLE_NO,PUSE_YN,SYST_RGI_DT,SYST_RGI_PRAF_NO,SYST_RGI_OGNZ_NO,SYST_RGI_SYST_CD,SYST_RGI_PRGR_ID,SYST_CHG_DT,SYST_CHG_PRAF_NO,SYST_CHG_OGNZ_NO,SYST_CHG_SYST_CD,SYST_CHG_PRGR_ID) VALUES ('0000030452','0000000205','UG_0011312','225','N',TIMESTAMP '2022-05-06 09:35:00','61003745','0997100','SAA','EIAM',TIMESTAMP '2022-05-10 16:15:25','99999999','9999999','SAA','EIAM') ;
INSERT INTO S_EIAM_TIS.AA_USER_GROU_role_rtns (USER_GROU_ROLE_RTNS_ID,SYST_ID,USER_GROU_ID,ROLE_NO,PUSE_YN,SYST_RGI_DT,SYST_RGI_PRAF_NO,SYST_RGI_OGNZ_NO,SYST_RGI_SYST_CD,SYST_RGI_PRGR_ID,SYST_CHG_DT,SYST_CHG_PRAF_NO,SYST_CHG_OGNZ_NO,SYST_CHG_SYST_CD,SYST_CHG_PRGR_ID) VALUES ('0000030428','0000000205','UG_0011296','110','Y',TIMESTAMP '2022-05-02 16:58:00','61003745','0997100','SAA','EIAM',TIMESTAMP '2022-05-02 17:00:23','99999999','9999999','SAA','EIAM') ;
INSERT INTO S_EIAM_TIS.AA_USER_GROU_role_rtns (USER_GROU_ROLE_RTNS_ID,SYST_ID,USER_GROU_ID,ROLE_NO,PUSE_YN,SYST_RGI_DT,SYST_RGI_PRAF_NO,SYST_RGI_OGNZ_NO,SYST_RGI_SYST_CD,SYST_RGI_PRGR_ID,SYST_CHG_DT,SYST_CHG_PRAF_NO,SYST_CHG_OGNZ_NO,SYST_CHG_SYST_CD,SYST_CHG_PRGR_ID) VALUES ('0000030455','0000000205','UG_0011312','225','N',TIMESTAMP '2022-05-06 15:55:03','61003745','0997100','SAA','EIAM',TIMESTAMP '2022-05-10 16:15:25','99999999','9999999','SAA','EIAM') ;
INSERT INTO S_EIAM_TIS.AA_USER_GROU_role_rtns (USER_GROU_ROLE_RTNS_ID,SYST_ID,USER_GROU_ID,ROLE_NO,PUSE_YN,SYST_RGI_DT,SYST_RGI_PRAF_NO,SYST_RGI_OGNZ_NO,SYST_RGI_SYST_CD,SYST_RGI_PRGR_ID,SYST_CHG_DT,SYST_CHG_PRAF_NO,SYST_CHG_OGNZ_NO,SYST_CHG_SYST_CD,SYST_CHG_PRGR_ID) VALUES ('0000030433','0000000205','UG_0011312','225','N',TIMESTAMP '2022-05-03 15:01:00','61003745','0997100','SAA','EIAM',TIMESTAMP '2022-05-10 16:15:25','99999999','9999999','SAA','EIAM') ;
INSERT INTO S_EIAM_TIS.AA_USER_GROU_role_rtns (USER_GROU_ROLE_RTNS_ID,SYST_ID,USER_GROU_ID,ROLE_NO,PUSE_YN,SYST_RGI_DT,SYST_RGI_PRAF_NO,SYST_RGI_OGNZ_NO,SYST_RGI_SYST_CD,SYST_RGI_PRGR_ID,SYST_CHG_DT,SYST_CHG_PRAF_NO,SYST_CHG_OGNZ_NO,SYST_CHG_SYST_CD,SYST_CHG_PRGR_ID) VALUES ('0000029430','0000000205','UG_0011298','29','Y',TIMESTAMP '2022-04-19 12:19:19','99999999','9999999','SAA','EIAM',TIMESTAMP '2022-04-19 12:30:24','99999999','9999999','SAA','EIAM' ) ;
INSERT INTO S_EIAM_TIS.AA_USER_GROU_role_rtns (USER_GROU_ROLE_RTNS_ID,SYST_ID,USER_GROU_ID,ROLE_NO,PUSE_YN,SYST_RGI_DT,SYST_RGI_PRAF_NO,SYST_RGI_OGNZ_NO,SYST_RGI_SYST_CD,SYST_RGI_PRGR_ID,SYST_CHG_DT,SYST_CHG_PRAF_NO,SYST_CHG_OGNZ_NO,SYST_CHG_SYST_CD,SYST_CHG_PRGR_ID) VALUES ('0000029431','0000000205','UG_0011299','126','Y',TIMESTAMP '2022-04-19 12:19:19','99999999','9999999','SAA','EIAM',TIMESTAMP '2022-04-19 12:30:24','99999999','9999999','SAA','EIAM') ;
INSERT INTO S_EIAM_TIS.AA_USER_GROU_role_rtns (USER_GROU_ROLE_RTNS_ID,SYST_ID,USER_GROU_ID,ROLE_NO,PUSE_YN,SYST_RGI_DT,SYST_RGI_PRAF_NO,SYST_RGI_OGNZ_NO,SYST_RGI_SYST_CD,SYST_RGI_PRGR_ID,SYST_CHG_DT,SYST_CHG_PRAF_NO,SYST_CHG_OGNZ_NO,SYST_CHG_SYST_CD,SYST_CHG_PRGR_ID) VALUES ('0000029432','0000000205','UG_0011300','133','Y',TIMESTAMP '2022-04-19 12:19:19','99999999','9999999','SAA','EIAM',TIMESTAMP '2022-04-19 12:30:24','99999999','9999999','SAA','EIAM') ;
INSERT INTO S_EIAM_TIS.AA_USER_GROU_role_rtns (USER_GROU_ROLE_RTNS_ID,SYST_ID,USER_GROU_ID,ROLE_NO,PUSE_YN,SYST_RGI_DT,SYST_RGI_PRAF_NO,SYST_RGI_OGNZ_NO,SYST_RGI_SYST_CD,SYST_RGI_PRGR_ID,SYST_CHG_DT,SYST_CHG_PRAF_NO,SYST_CHG_OGNZ_NO,SYST_CHG_SYST_CD,SYST_CHG_PRGR_ID) VALUES ('0000029433','0000000205','UG_0011301','122','Y',TIMESTAMP '2022-04-19 12:19:19','99999999','9999999','SAA','EIAM',TIMESTAMP '2022-04-19 12:30:24','99999999','9999999','SAA','EIAM') ;
INSERT INTO S_EIAM_TIS.AA_USER_GROU_role_rtns (USER_GROU_ROLE_RTNS_ID,SYST_ID,USER_GROU_ID,ROLE_NO,PUSE_YN,SYST_RGI_DT,SYST_RGI_PRAF_NO,SYST_RGI_OGNZ_NO,SYST_RGI_SYST_CD,SYST_RGI_PRGR_ID,SYST_CHG_DT,SYST_CHG_PRAF_NO,SYST_CHG_OGNZ_NO,SYST_CHG_SYST_CD,SYST_CHG_PRGR_ID) VALUES ('0000029434','0000000205','UG_0011302','125','Y',TIMESTAMP '2022-04-19 12:19:19','99999999','9999999','SAA','EIAM',TIMESTAMP '2022-04-19 12:30:24','99999999','9999999','SAA','EIAM') ;
INSERT INTO S_EIAM_TIS.AA_USER_GROU_role_rtns (USER_GROU_ROLE_RTNS_ID,SYST_ID,USER_GROU_ID,ROLE_NO,PUSE_YN,SYST_RGI_DT,SYST_RGI_PRAF_NO,SYST_RGI_OGNZ_NO,SYST_RGI_SYST_CD,SYST_RGI_PRGR_ID,SYST_CHG_DT,SYST_CHG_PRAF_NO,SYST_CHG_OGNZ_NO,SYST_CHG_SYST_CD,SYST_CHG_PRGR_ID) VALUES ('0000029435','0000000205','UG_0011303','69','Y',TIMESTAMP '2022-04-19 12:19:19','99999999','9999999','SAA','EIAM',TIMESTAMP '2022-04-19 12:30:24','99999999','9999999','SAA','EIAM' ) ;
INSERT INTO S_EIAM_TIS.AA_USER_GROU_role_rtns (USER_GROU_ROLE_RTNS_ID,SYST_ID,USER_GROU_ID,ROLE_NO,PUSE_YN,SYST_RGI_DT,SYST_RGI_PRAF_NO,SYST_RGI_OGNZ_NO,SYST_RGI_SYST_CD,SYST_RGI_PRGR_ID,SYST_CHG_DT,SYST_CHG_PRAF_NO,SYST_CHG_OGNZ_NO,SYST_CHG_SYST_CD,SYST_CHG_PRGR_ID) VALUES ('0000029436','0000000205','UG_0011304','4','Y',TIMESTAMP '2022-04-19 12:19:19','99999999','9999999','SAA','EIAM',TIMESTAMP '2022-04-19 12:30:24','99999999','9999999','SAA','EIAM' ) ;
INSERT INTO S_EIAM_TIS.AA_USER_GROU_role_rtns (USER_GROU_ROLE_RTNS_ID,SYST_ID,USER_GROU_ID,ROLE_NO,PUSE_YN,SYST_RGI_DT,SYST_RGI_PRAF_NO,SYST_RGI_OGNZ_NO,SYST_RGI_SYST_CD,SYST_RGI_PRGR_ID,SYST_CHG_DT,SYST_CHG_PRAF_NO,SYST_CHG_OGNZ_NO,SYST_CHG_SYST_CD,SYST_CHG_PRGR_ID) VALUES ('0000029437','0000000205','UG_0011305','18','Y',TIMESTAMP '2022-04-19 12:19:19','99999999','9999999','SAA','EIAM',TIMESTAMP '2022-04-19 12:30:24','99999999','9999999','SAA','EIAM' ) ;
INSERT INTO S_EIAM_TIS.AA_USER_GROU_role_rtns (USER_GROU_ROLE_RTNS_ID,SYST_ID,USER_GROU_ID,ROLE_NO,PUSE_YN,SYST_RGI_DT,SYST_RGI_PRAF_NO,SYST_RGI_OGNZ_NO,SYST_RGI_SYST_CD,SYST_RGI_PRGR_ID,SYST_CHG_DT,SYST_CHG_PRAF_NO,SYST_CHG_OGNZ_NO,SYST_CHG_SYST_CD,SYST_CHG_PRGR_ID) VALUES ('0000029438','0000000205','UG_0011306','123','Y',TIMESTAMP '2022-04-19 12:19:19','99999999','9999999','SAA','EIAM',TIMESTAMP '2022-04-19 12:30:24','99999999','9999999','SAA','EIAM') ;
INSERT INTO S_EIAM_TIS.AA_USER_GROU_role_rtns (USER_GROU_ROLE_RTNS_ID,SYST_ID,USER_GROU_ID,ROLE_NO,PUSE_YN,SYST_RGI_DT,SYST_RGI_PRAF_NO,SYST_RGI_OGNZ_NO,SYST_RGI_SYST_CD,SYST_RGI_PRGR_ID,SYST_CHG_DT,SYST_CHG_PRAF_NO,SYST_CHG_OGNZ_NO,SYST_CHG_SYST_CD,SYST_CHG_PRGR_ID) VALUES ('0000029439','0000000205','UG_0011307','132','Y',TIMESTAMP '2022-04-19 12:19:19','99999999','9999999','SAA','EIAM',TIMESTAMP '2022-04-19 12:30:24','99999999','9999999','SAA','EIAM') ;
INSERT INTO S_EIAM_TIS.AA_USER_GROU_role_rtns (USER_GROU_ROLE_RTNS_ID,SYST_ID,USER_GROU_ID,ROLE_NO,PUSE_YN,SYST_RGI_DT,SYST_RGI_PRAF_NO,SYST_RGI_OGNZ_NO,SYST_RGI_SYST_CD,SYST_RGI_PRGR_ID,SYST_CHG_DT,SYST_CHG_PRAF_NO,SYST_CHG_OGNZ_NO,SYST_CHG_SYST_CD,SYST_CHG_PRGR_ID) VALUES ('0000029440','0000000205','UG_0011308','127','Y',TIMESTAMP '2022-04-19 12:19:19','99999999','9999999','SAA','EIAM',TIMESTAMP '2022-04-19 12:30:24','99999999','9999999','SAA','EIAM') ;
INSERT INTO S_EIAM_TIS.AA_USER_GROU_role_rtns (USER_GROU_ROLE_RTNS_ID,SYST_ID,USER_GROU_ID,ROLE_NO,PUSE_YN,SYST_RGI_DT,SYST_RGI_PRAF_NO,SYST_RGI_OGNZ_NO,SYST_RGI_SYST_CD,SYST_RGI_PRGR_ID,SYST_CHG_DT,SYST_CHG_PRAF_NO,SYST_CHG_OGNZ_NO,SYST_CHG_SYST_CD,SYST_CHG_PRGR_ID) VALUES ('0000029441','0000000205','UG_0011309','128','Y',TIMESTAMP '2022-04-19 12:19:19','99999999','9999999','SAA','EIAM',TIMESTAMP '2022-04-19 12:30:24','99999999','9999999','SAA','EIAM') ;
INSERT INTO S_EIAM_TIS.AA_USER_GROU_role_rtns (USER_GROU_ROLE_RTNS_ID,SYST_ID,USER_GROU_ID,ROLE_NO,PUSE_YN,SYST_RGI_DT,SYST_RGI_PRAF_NO,SYST_RGI_OGNZ_NO,SYST_RGI_SYST_CD,SYST_RGI_PRGR_ID,SYST_CHG_DT,SYST_CHG_PRAF_NO,SYST_CHG_OGNZ_NO,SYST_CHG_SYST_CD,SYST_CHG_PRGR_ID) VALUES ('0000029442','0000000205','UG_0011310','142','Y',TIMESTAMP '2022-04-19 12:19:19','99999999','9999999','SAA','EIAM',TIMESTAMP '2022-04-19 12:30:24','99999999','9999999','SAA','EIAM') ;
INSERT INTO S_EIAM_TIS.AA_USER_GROU_role_rtns (USER_GROU_ROLE_RTNS_ID,SYST_ID,USER_GROU_ID,ROLE_NO,PUSE_YN,SYST_RGI_DT,SYST_RGI_PRAF_NO,SYST_RGI_OGNZ_NO,SYST_RGI_SYST_CD,SYST_RGI_PRGR_ID,SYST_CHG_DT,SYST_CHG_PRAF_NO,SYST_CHG_OGNZ_NO,SYST_CHG_SYST_CD,SYST_CHG_PRGR_ID) VALUES ('0000029443','0000000205','UG_0011311','143','Y',TIMESTAMP '2022-04-19 12:19:19','99999999','9999999','SAA','EIAM',TIMESTAMP '2022-04-19 12:30:24','99999999','9999999','SAA','EIAM') ;
INSERT INTO S_EIAM_TIS.AA_USER_GROU_role_rtns (USER_GROU_ROLE_RTNS_ID,SYST_ID,USER_GROU_ID,ROLE_NO,PUSE_YN,SYST_RGI_DT,SYST_RGI_PRAF_NO,SYST_RGI_OGNZ_NO,SYST_RGI_SYST_CD,SYST_RGI_PRGR_ID,SYST_CHG_DT,SYST_CHG_PRAF_NO,SYST_CHG_OGNZ_NO,SYST_CHG_SYST_CD,SYST_CHG_PRGR_ID) VALUES ('0000029444','0000000205','UG_0011312','225','N',TIMESTAMP '2022-04-19 12:19:19','99999999','9999999','SAA','EIAM',TIMESTAMP '2022-05-10 16:15:25','99999999','9999999','SAA','EIAM') ;
INSERT INTO S_EIAM_TIS.AA_USER_GROU_role_rtns (USER_GROU_ROLE_RTNS_ID,SYST_ID,USER_GROU_ID,ROLE_NO,PUSE_YN,SYST_RGI_DT,SYST_RGI_PRAF_NO,SYST_RGI_OGNZ_NO,SYST_RGI_SYST_CD,SYST_RGI_PRGR_ID,SYST_CHG_DT,SYST_CHG_PRAF_NO,SYST_CHG_OGNZ_NO,SYST_CHG_SYST_CD,SYST_CHG_PRGR_ID) VALUES ('0000029445','0000000205','UG_0011313','144','Y',TIMESTAMP '2022-04-19 12:19:19','99999999','9999999','SAA','EIAM',TIMESTAMP '2022-04-19 12:30:24','99999999','9999999','SAA','EIAM') ;
INSERT INTO S_EIAM_TIS.AA_USER_GROU_role_rtns (USER_GROU_ROLE_RTNS_ID,SYST_ID,USER_GROU_ID,ROLE_NO,PUSE_YN,SYST_RGI_DT,SYST_RGI_PRAF_NO,SYST_RGI_OGNZ_NO,SYST_RGI_SYST_CD,SYST_RGI_PRGR_ID,SYST_CHG_DT,SYST_CHG_PRAF_NO,SYST_CHG_OGNZ_NO,SYST_CHG_SYST_CD,SYST_CHG_PRGR_ID) VALUES ('0000030432','0000000205','UG_0011312','225','N',TIMESTAMP '2022-05-03 14:30:00','61003745','0997100','SAA','EIAM',TIMESTAMP '2022-05-10 16:15:25','99999999','9999999','SAA','EIAM') ;
INSERT INTO S_EIAM_TIS.AA_USER_GROU_role_rtns (USER_GROU_ROLE_RTNS_ID,SYST_ID,USER_GROU_ID,ROLE_NO,PUSE_YN,SYST_RGI_DT,SYST_RGI_PRAF_NO,SYST_RGI_OGNZ_NO,SYST_RGI_SYST_CD,SYST_RGI_PRGR_ID,SYST_CHG_DT,SYST_CHG_PRAF_NO,SYST_CHG_OGNZ_NO,SYST_CHG_SYST_CD,SYST_CHG_PRGR_ID) VALUES ('0000030434','0000000205','UG_0011312','225','N',TIMESTAMP '2022-05-03 15:18:00','61003745','0997100','SAA','EIAM',TIMESTAMP '2022-05-10 16:15:25','99999999','9999999','SAA','EIAM') ;
INSERT INTO S_EIAM_TIS.AA_USER_GROU_role_rtns (USER_GROU_ROLE_RTNS_ID,SYST_ID,USER_GROU_ID,ROLE_NO,PUSE_YN,SYST_RGI_DT,SYST_RGI_PRAF_NO,SYST_RGI_OGNZ_NO,SYST_RGI_SYST_CD,SYST_RGI_PRGR_ID,SYST_CHG_DT,SYST_CHG_PRAF_NO,SYST_CHG_OGNZ_NO,SYST_CHG_SYST_CD,SYST_CHG_PRGR_ID) VALUES ('0000029428','0000000205','UG_0011296','110','N',TIMESTAMP '2022-04-19 12:19:19','99999999','9999999','SAA','EIAM',TIMESTAMP '2022-05-02 16:15:25','99999999','9999999','SAA','EIAM') ;
INSERT INTO S_EIAM_TIS.AA_USER_GROU_role_rtns (USER_GROU_ROLE_RTNS_ID,SYST_ID,USER_GROU_ID,ROLE_NO,PUSE_YN,SYST_RGI_DT,SYST_RGI_PRAF_NO,SYST_RGI_OGNZ_NO,SYST_RGI_SYST_CD,SYST_RGI_PRGR_ID,SYST_CHG_DT,SYST_CHG_PRAF_NO,SYST_CHG_OGNZ_NO,SYST_CHG_SYST_CD,SYST_CHG_PRGR_ID) VALUES ('0000029429','0000000205','UG_0011297','106','Y',TIMESTAMP '2022-04-19 12:19:19','99999999','9999999','SAA','EIAM',TIMESTAMP '2022-04-19 12:30:24','99999999','9999999','SAA','EIAM') ;
-- 사용자-그룹관계
INSERT INTO S_EIAM_TIS.AA_USAC_user_grou_rtns (USAC_USER_GROU_RTNS_ID,SYST_ID,PRAF_NO,USER_GROU_ID,VLDT_YMD,EXPR_YMD,PUSE_YN,SYST_RGI_DT,SYST_RGI_PRAF_NO,SYST_RGI_OGNZ_NO,SYST_RGI_SYST_CD,SYST_RGI_PRGR_ID,SYST_CHG_DT,SYST_CHG_PRAF_NO,SYST_CHG_OGNZ_NO,SYST_CHG_SYST_CD,SYST_CHG_PRGR_ID) VALUES ('0000390266','0000000205','09861303','UG_0011307',TIMESTAMP '2022-04-19 00:00:00',TIMESTAMP '9999-12-31 00:00:00','Y',TIMESTAMP '2022-04-19 12:21:14','99999999','9999999','SAA','EIAM',TIMESTAMP '2022-04-19 12:21:14','99999999','9999999','SAA','EIAM') ;
INSERT INTO S_EIAM_TIS.AA_USAC_user_grou_rtns (USAC_USER_GROU_RTNS_ID,SYST_ID,PRAF_NO,USER_GROU_ID,VLDT_YMD,EXPR_YMD,PUSE_YN,SYST_RGI_DT,SYST_RGI_PRAF_NO,SYST_RGI_OGNZ_NO,SYST_RGI_SYST_CD,SYST_RGI_PRGR_ID,SYST_CHG_DT,SYST_CHG_PRAF_NO,SYST_CHG_OGNZ_NO,SYST_CHG_SYST_CD,SYST_CHG_PRGR_ID) VALUES ('0000389612','0000000205','61005896','UG_0011306',TIMESTAMP '2022-04-19 00:00:00',TIMESTAMP '9999-12-31 00:00:00','Y',TIMESTAMP '2022-04-19 12:21:14','99999999','9999999','SAA','EIAM',TIMESTAMP '2022-04-19 12:21:14','99999999','9999999','SAA','EIAM') ;
INSERT INTO S_EIAM_TIS.AA_USAC_user_grou_rtns (USAC_USER_GROU_RTNS_ID,SYST_ID,PRAF_NO,USER_GROU_ID,VLDT_YMD,EXPR_YMD,PUSE_YN,SYST_RGI_DT,SYST_RGI_PRAF_NO,SYST_RGI_OGNZ_NO,SYST_RGI_SYST_CD,SYST_RGI_PRGR_ID,SYST_CHG_DT,SYST_CHG_PRAF_NO,SYST_CHG_OGNZ_NO,SYST_CHG_SYST_CD,SYST_CHG_PRGR_ID) VALUES ('0000390990','0000000205','09861100','UG_0011306',TIMESTAMP '2022-04-19 00:00:00',TIMESTAMP '9999-12-31 00:00:00','Y',TIMESTAMP '2022-04-19 12:21:14','99999999','9999999','SAA','EIAM',TIMESTAMP '2022-04-19 12:21:14','99999999','9999999','SAA','EIAM') ;
INSERT INTO S_EIAM_TIS.AA_USAC_user_grou_rtns (USAC_USER_GROU_RTNS_ID,SYST_ID,PRAF_NO,USER_GROU_ID,VLDT_YMD,EXPR_YMD,PUSE_YN,SYST_RGI_DT,SYST_RGI_PRAF_NO,SYST_RGI_OGNZ_NO,SYST_RGI_SYST_CD,SYST_RGI_PRGR_ID,SYST_CHG_DT,SYST_CHG_PRAF_NO,SYST_CHG_OGNZ_NO,SYST_CHG_SYST_CD,SYST_CHG_PRGR_ID) VALUES ('0000390096','0000000205','09861195','UG_0011307',TIMESTAMP '2022-04-19 00:00:00',TIMESTAMP '9999-12-31 00:00:00','Y',TIMESTAMP '2022-04-19 12:21:14','99999999','9999999','SAA','EIAM',TIMESTAMP '2022-04-19 12:21:14','99999999','9999999','SAA','EIAM') ;
INSERT INTO S_EIAM_TIS.AA_USAC_user_grou_rtns (USAC_USER_GROU_RTNS_ID,SYST_ID,PRAF_NO,USER_GROU_ID,VLDT_YMD,EXPR_YMD,PUSE_YN,SYST_RGI_DT,SYST_RGI_PRAF_NO,SYST_RGI_OGNZ_NO,SYST_RGI_SYST_CD,SYST_RGI_PRGR_ID,SYST_CHG_DT,SYST_CHG_PRAF_NO,SYST_CHG_OGNZ_NO,SYST_CHG_SYST_CD,SYST_CHG_PRGR_ID) VALUES ('0000390103','0000000205','61005899','UG_0011306',TIMESTAMP '2022-04-19 00:00:00',TIMESTAMP '9999-12-31 00:00:00','Y',TIMESTAMP '2022-04-19 12:21:14','99999999','9999999','SAA','EIAM',TIMESTAMP '2022-04-19 12:21:14','99999999','9999999','SAA','EIAM') ;
INSERT INTO S_EIAM_TIS.AA_USAC_user_grou_rtns (USAC_USER_GROU_RTNS_ID,SYST_ID,PRAF_NO,USER_GROU_ID,VLDT_YMD,EXPR_YMD,PUSE_YN,SYST_RGI_DT,SYST_RGI_PRAF_NO,SYST_RGI_OGNZ_NO,SYST_RGI_SYST_CD,SYST_RGI_PRGR_ID,SYST_CHG_DT,SYST_CHG_PRAF_NO,SYST_CHG_OGNZ_NO,SYST_CHG_SYST_CD,SYST_CHG_PRGR_ID) VALUES ('0000390377','0000000205','09861194','UG_0011307',TIMESTAMP '2022-04-19 00:00:00',TIMESTAMP '9999-12-31 00:00:00','Y',TIMESTAMP '2022-04-19 12:21:14','99999999','9999999','SAA','EIAM',TIMESTAMP '2022-04-19 12:21:14','99999999','9999999','SAA','EIAM') ;
INSERT INTO S_EIAM_TIS.AA_USAC_user_grou_rtns (USAC_USER_GROU_RTNS_ID,SYST_ID,PRAF_NO,USER_GROU_ID,VLDT_YMD,EXPR_YMD,PUSE_YN,SYST_RGI_DT,SYST_RGI_PRAF_NO,SYST_RGI_OGNZ_NO,SYST_RGI_SYST_CD,SYST_RGI_PRGR_ID,SYST_CHG_DT,SYST_CHG_PRAF_NO,SYST_CHG_OGNZ_NO,SYST_CHG_SYST_CD,SYST_CHG_PRGR_ID) VALUES ('0000390201','0000000205','09861302','UG_0011306',TIMESTAMP '2022-04-19 00:00:00',TIMESTAMP '9999-12-31 00:00:00','Y',TIMESTAMP '2022-04-19 12:21:14','99999999','9999999','SAA','EIAM',TIMESTAMP '2022-04-19 12:21:14','99999999','9999999','SAA','EIAM') ;
INSERT INTO S_EIAM_TIS.AA_USAC_user_grou_rtns (USAC_USER_GROU_RTNS_ID,SYST_ID,PRAF_NO,USER_GROU_ID,VLDT_YMD,EXPR_YMD,PUSE_YN,SYST_RGI_DT,SYST_RGI_PRAF_NO,SYST_RGI_OGNZ_NO,SYST_RGI_SYST_CD,SYST_RGI_PRGR_ID,SYST_CHG_DT,SYST_CHG_PRAF_NO,SYST_CHG_OGNZ_NO,SYST_CHG_SYST_CD,SYST_CHG_PRGR_ID) VALUES ('0000390396','0000000205','61005872','UG_0011306',TIMESTAMP '2022-04-19 00:00:00',TIMESTAMP '9999-12-31 00:00:00','Y',TIMESTAMP '2022-04-19 12:21:14','99999999','9999999','SAA','EIAM',TIMESTAMP '2022-04-19 12:21:14','99999999','9999999','SAA','EIAM') ;
INSERT INTO S_EIAM_TIS.AA_USAC_user_grou_rtns (USAC_USER_GROU_RTNS_ID,SYST_ID,PRAF_NO,USER_GROU_ID,VLDT_YMD,EXPR_YMD,PUSE_YN,SYST_RGI_DT,SYST_RGI_PRAF_NO,SYST_RGI_OGNZ_NO,SYST_RGI_SYST_CD,SYST_RGI_PRGR_ID,SYST_CHG_DT,SYST_CHG_PRAF_NO,SYST_CHG_OGNZ_NO,SYST_CHG_SYST_CD,SYST_CHG_PRGR_ID) VALUES ('0000390209','0000000205','09861196','UG_0011307',TIMESTAMP '2022-04-19 00:00:00',TIMESTAMP '9999-12-31 00:00:00','Y',TIMESTAMP '2022-04-19 12:21:14','99999999','9999999','SAA','EIAM',TIMESTAMP '2022-04-19 12:21:14','99999999','9999999','SAA','EIAM') ;
INSERT INTO S_EIAM_TIS.AA_USAC_user_grou_rtns (USAC_USER_GROU_RTNS_ID,SYST_ID,PRAF_NO,USER_GROU_ID,VLDT_YMD,EXPR_YMD,PUSE_YN,SYST_RGI_DT,SYST_RGI_PRAF_NO,SYST_RGI_OGNZ_NO,SYST_RGI_SYST_CD,SYST_RGI_PRGR_ID,SYST_CHG_DT,SYST_CHG_PRAF_NO,SYST_CHG_OGNZ_NO,SYST_CHG_SYST_CD,SYST_CHG_PRGR_ID) VALUES ('0000390236','0000000205','61005905','UG_0011306',TIMESTAMP '2022-04-19 00:00:00',TIMESTAMP '9999-12-31 00:00:00','Y',TIMESTAMP '2022-04-19 12:21:14','99999999','9999999','SAA','EIAM',TIMESTAMP '2022-04-19 12:21:14','99999999','9999999','SAA','EIAM') ;
INSERT INTO S_EIAM_TIS.AA_USAC_user_grou_rtns (USAC_USER_GROU_RTNS_ID,SYST_ID,PRAF_NO,USER_GROU_ID,VLDT_YMD,EXPR_YMD,PUSE_YN,SYST_RGI_DT,SYST_RGI_PRAF_NO,SYST_RGI_OGNZ_NO,SYST_RGI_SYST_CD,SYST_RGI_PRGR_ID,SYST_CHG_DT,SYST_CHG_PRAF_NO,SYST_CHG_OGNZ_NO,SYST_CHG_SYST_CD,SYST_CHG_PRGR_ID) VALUES ('0000391388','0000000205','09861195','UG_0011306',TIMESTAMP '2022-04-19 00:00:00',TIMESTAMP '9999-12-31 00:00:00','Y',TIMESTAMP '2022-04-19 12:21:14','99999999','9999999','SAA','EIAM',TIMESTAMP '2022-04-19 12:21:14','99999999','9999999','SAA','EIAM') ;
INSERT INTO S_EIAM_TIS.AA_USAC_user_grou_rtns (USAC_USER_GROU_RTNS_ID,SYST_ID,PRAF_NO,USER_GROU_ID,VLDT_YMD,EXPR_YMD,PUSE_YN,SYST_RGI_DT,SYST_RGI_PRAF_NO,SYST_RGI_OGNZ_NO,SYST_RGI_SYST_CD,SYST_RGI_PRGR_ID,SYST_CHG_DT,SYST_CHG_PRAF_NO,SYST_CHG_OGNZ_NO,SYST_CHG_SYST_CD,SYST_CHG_PRGR_ID) VALUES ('0000389987','0000000205','61005898','UG_0011306',TIMESTAMP '2022-04-19 00:00:00',TIMESTAMP '9999-12-31 00:00:00','Y',TIMESTAMP '2022-04-19 12:21:14','99999999','9999999','SAA','EIAM',TIMESTAMP '2022-04-19 12:21:14','99999999','9999999','SAA','EIAM') ;
INSERT INTO S_EIAM_TIS.AA_USAC_user_grou_rtns (USAC_USER_GROU_RTNS_ID,SYST_ID,PRAF_NO,USER_GROU_ID,VLDT_YMD,EXPR_YMD,PUSE_YN,SYST_RGI_DT,SYST_RGI_PRAF_NO,SYST_RGI_OGNZ_NO,SYST_RGI_SYST_CD,SYST_RGI_PRGR_ID,SYST_CHG_DT,SYST_CHG_PRAF_NO,SYST_CHG_OGNZ_NO,SYST_CHG_SYST_CD,SYST_CHG_PRGR_ID) VALUES ('0000389376','0000000205','61005886','UG_0011307',TIMESTAMP '2022-04-19 00:00:00',TIMESTAMP '9999-12-31 00:00:00','Y',TIMESTAMP '2022-04-19 12:21:14','99999999','9999999','SAA','EIAM',TIMESTAMP '2022-04-19 12:21:14','99999999','9999999','SAA','EIAM') ;
INSERT INTO S_EIAM_TIS.AA_USAC_user_grou_rtns (USAC_USER_GROU_RTNS_ID,SYST_ID,PRAF_NO,USER_GROU_ID,VLDT_YMD,EXPR_YMD,PUSE_YN,SYST_RGI_DT,SYST_RGI_PRAF_NO,SYST_RGI_OGNZ_NO,SYST_RGI_SYST_CD,SYST_RGI_PRGR_ID,SYST_CHG_DT,SYST_CHG_PRAF_NO,SYST_CHG_OGNZ_NO,SYST_CHG_SYST_CD,SYST_CHG_PRGR_ID) VALUES ('0000391283','0000000205','09861303','UG_0011306',TIMESTAMP '2022-04-19 00:00:00',TIMESTAMP '9999-12-31 00:00:00','Y',TIMESTAMP '2022-04-19 12:21:14','99999999','9999999','SAA','EIAM',TIMESTAMP '2022-04-19 12:21:14','99999999','9999999','SAA','EIAM') ;
INSERT INTO S_EIAM_TIS.AA_USAC_user_grou_rtns (USAC_USER_GROU_RTNS_ID,SYST_ID,PRAF_NO,USER_GROU_ID,VLDT_YMD,EXPR_YMD,PUSE_YN,SYST_RGI_DT,SYST_RGI_PRAF_NO,SYST_RGI_OGNZ_NO,SYST_RGI_SYST_CD,SYST_RGI_PRGR_ID,SYST_CHG_DT,SYST_CHG_PRAF_NO,SYST_CHG_OGNZ_NO,SYST_CHG_SYST_CD,SYST_CHG_PRGR_ID) VALUES ('0000389378','0000000205','61005873','UG_0011307',TIMESTAMP '2022-04-19 00:00:00',TIMESTAMP '9999-12-31 00:00:00','Y',TIMESTAMP '2022-04-19 12:21:14','99999999','9999999','SAA','EIAM',TIMESTAMP '2022-04-19 12:21:14','99999999','9999999','SAA','EIAM') ;
INSERT INTO S_EIAM_TIS.AA_USAC_user_grou_rtns (USAC_USER_GROU_RTNS_ID,SYST_ID,PRAF_NO,USER_GROU_ID,VLDT_YMD,EXPR_YMD,PUSE_YN,SYST_RGI_DT,SYST_RGI_PRAF_NO,SYST_RGI_OGNZ_NO,SYST_RGI_SYST_CD,SYST_RGI_PRGR_ID,SYST_CHG_DT,SYST_CHG_PRAF_NO,SYST_CHG_OGNZ_NO,SYST_CHG_SYST_CD,SYST_CHG_PRGR_ID) VALUES ('0000389388','0000000205','09861194','UG_0011306',TIMESTAMP '2022-04-19 00:00:00',TIMESTAMP '9999-12-31 00:00:00','Y',TIMESTAMP '2022-04-19 12:21:14','99999999','9999999','SAA','EIAM',TIMESTAMP '2022-04-19 12:21:14','99999999','9999999','SAA','EIAM') ;
INSERT INTO S_EIAM_TIS.AA_USAC_user_grou_rtns (USAC_USER_GROU_RTNS_ID,SYST_ID,PRAF_NO,USER_GROU_ID,VLDT_YMD,EXPR_YMD,PUSE_YN,SYST_RGI_DT,SYST_RGI_PRAF_NO,SYST_RGI_OGNZ_NO,SYST_RGI_SYST_CD,SYST_RGI_PRGR_ID,SYST_CHG_DT,SYST_CHG_PRAF_NO,SYST_CHG_OGNZ_NO,SYST_CHG_SYST_CD,SYST_CHG_PRGR_ID) VALUES ('0000389410','0000000205','09861096','UG_0011306',TIMESTAMP '2022-04-19 00:00:00',TIMESTAMP '9999-12-31 00:00:00','Y',TIMESTAMP '2022-04-19 12:21:14','99999999','9999999','SAA','EIAM',TIMESTAMP '2022-04-19 12:21:14','99999999','9999999','SAA','EIAM') ;
INSERT INTO S_EIAM_TIS.AA_USAC_user_grou_rtns (USAC_USER_GROU_RTNS_ID,SYST_ID,PRAF_NO,USER_GROU_ID,VLDT_YMD,EXPR_YMD,PUSE_YN,SYST_RGI_DT,SYST_RGI_PRAF_NO,SYST_RGI_OGNZ_NO,SYST_RGI_SYST_CD,SYST_RGI_PRGR_ID,SYST_CHG_DT,SYST_CHG_PRAF_NO,SYST_CHG_OGNZ_NO,SYST_CHG_SYST_CD,SYST_CHG_PRGR_ID) VALUES ('0000391162','0000000205','09861196','UG_0011306',TIMESTAMP '2022-04-19 00:00:00',TIMESTAMP '9999-12-31 00:00:00','Y',TIMESTAMP '2022-04-19 12:21:14','99999999','9999999','SAA','EIAM',TIMESTAMP '2022-04-19 12:21:14','99999999','9999999','SAA','EIAM') ;
INSERT INTO S_EIAM_TIS.AA_USAC_user_grou_rtns (USAC_USER_GROU_RTNS_ID,SYST_ID,PRAF_NO,USER_GROU_ID,VLDT_YMD,EXPR_YMD,PUSE_YN,SYST_RGI_DT,SYST_RGI_PRAF_NO,SYST_RGI_OGNZ_NO,SYST_RGI_SYST_CD,SYST_RGI_PRGR_ID,SYST_CHG_DT,SYST_CHG_PRAF_NO,SYST_CHG_OGNZ_NO,SYST_CHG_SYST_CD,SYST_CHG_PRGR_ID) VALUES ('0000390709','0000000205','61005895','UG_0011306',TIMESTAMP '2022-04-19 00:00:00',TIMESTAMP '9999-12-31 00:00:00','Y',TIMESTAMP '2022-04-19 12:21:14','99999999','9999999','SAA','EIAM',TIMESTAMP '2022-04-19 12:21:14','99999999','9999999','SAA','EIAM') ;
INSERT INTO S_EIAM_TIS.AA_USAC_user_grou_rtns (USAC_USER_GROU_RTNS_ID,SYST_ID,PRAF_NO,USER_GROU_ID,VLDT_YMD,EXPR_YMD,PUSE_YN,SYST_RGI_DT,SYST_RGI_PRAF_NO,SYST_RGI_OGNZ_NO,SYST_RGI_SYST_CD,SYST_RGI_PRGR_ID,SYST_CHG_DT,SYST_CHG_PRAF_NO,SYST_CHG_OGNZ_NO,SYST_CHG_SYST_CD,SYST_CHG_PRGR_ID) VALUES ('0000391138','0000000205','09861197','UG_0011307',TIMESTAMP '2022-04-19 00:00:00',TIMESTAMP '9999-12-31 00:00:00','Y',TIMESTAMP '2022-04-19 12:21:14','99999999','9999999','SAA','EIAM',TIMESTAMP '2022-04-19 12:21:14','99999999','9999999','SAA','EIAM') ;
INSERT INTO S_EIAM_TIS.AA_USAC_user_grou_rtns (USAC_USER_GROU_RTNS_ID,SYST_ID,PRAF_NO,USER_GROU_ID,VLDT_YMD,EXPR_YMD,PUSE_YN,SYST_RGI_DT,SYST_RGI_PRAF_NO,SYST_RGI_OGNZ_NO,SYST_RGI_SYST_CD,SYST_RGI_PRGR_ID,SYST_CHG_DT,SYST_CHG_PRAF_NO,SYST_CHG_OGNZ_NO,SYST_CHG_SYST_CD,SYST_CHG_PRGR_ID) VALUES ('0000391142','0000000205','09861102','UG_0011306',TIMESTAMP '2022-04-19 00:00:00',TIMESTAMP '9999-12-31 00:00:00','Y',TIMESTAMP '2022-04-19 12:21:14','99999999','9999999','SAA','EIAM',TIMESTAMP '2022-04-19 12:21:14','99999999','9999999','SAA','EIAM') ;
INSERT INTO S_EIAM_TIS.AA_USAC_user_grou_rtns (USAC_USER_GROU_RTNS_ID,SYST_ID,PRAF_NO,USER_GROU_ID,VLDT_YMD,EXPR_YMD,PUSE_YN,SYST_RGI_DT,SYST_RGI_PRAF_NO,SYST_RGI_OGNZ_NO,SYST_RGI_SYST_CD,SYST_RGI_PRGR_ID,SYST_CHG_DT,SYST_CHG_PRAF_NO,SYST_CHG_OGNZ_NO,SYST_CHG_SYST_CD,SYST_CHG_PRGR_ID) VALUES ('0000389116','0000000205','09861101','UG_0011306',TIMESTAMP '2022-04-19 00:00:00',TIMESTAMP '9999-12-31 00:00:00','Y',TIMESTAMP '2022-04-19 12:21:14','99999999','9999999','SAA','EIAM',TIMESTAMP '2022-04-19 12:21:14','99999999','9999999','SAA','EIAM') ;
INSERT INTO S_EIAM_TIS.AA_USAC_user_grou_rtns (USAC_USER_GROU_RTNS_ID,SYST_ID,PRAF_NO,USER_GROU_ID,VLDT_YMD,EXPR_YMD,PUSE_YN,SYST_RGI_DT,SYST_RGI_PRAF_NO,SYST_RGI_OGNZ_NO,SYST_RGI_SYST_CD,SYST_RGI_PRGR_ID,SYST_CHG_DT,SYST_CHG_PRAF_NO,SYST_CHG_OGNZ_NO,SYST_CHG_SYST_CD,SYST_CHG_PRGR_ID) VALUES ('0000389667','0000000205','09861100','UG_0011307',TIMESTAMP '2022-04-19 00:00:00',TIMESTAMP '9999-12-31 00:00:00','Y',TIMESTAMP '2022-04-19 12:21:14','99999999','9999999','SAA','EIAM',TIMESTAMP '2022-04-19 12:21:14','99999999','9999999','SAA','EIAM') ;
INSERT INTO S_EIAM_TIS.AA_USAC_user_grou_rtns (USAC_USER_GROU_RTNS_ID,SYST_ID,PRAF_NO,USER_GROU_ID,VLDT_YMD,EXPR_YMD,PUSE_YN,SYST_RGI_DT,SYST_RGI_PRAF_NO,SYST_RGI_OGNZ_NO,SYST_RGI_SYST_CD,SYST_RGI_PRGR_ID,SYST_CHG_DT,SYST_CHG_PRAF_NO,SYST_CHG_OGNZ_NO,SYST_CHG_SYST_CD,SYST_CHG_PRGR_ID) VALUES ('0000389185','0000000205','61005895','UG_0011307',TIMESTAMP '2022-04-19 00:00:00',TIMESTAMP '9999-12-31 00:00:00','Y',TIMESTAMP '2022-04-19 12:21:14','99999999','9999999','SAA','EIAM',TIMESTAMP '2022-04-19 12:21:14','99999999','9999999','SAA','EIAM') ;
INSERT INTO S_EIAM_TIS.AA_USAC_user_grou_rtns (USAC_USER_GROU_RTNS_ID,SYST_ID,PRAF_NO,USER_GROU_ID,VLDT_YMD,EXPR_YMD,PUSE_YN,SYST_RGI_DT,SYST_RGI_PRAF_NO,SYST_RGI_OGNZ_NO,SYST_RGI_SYST_CD,SYST_RGI_PRGR_ID,SYST_CHG_DT,SYST_CHG_PRAF_NO,SYST_CHG_OGNZ_NO,SYST_CHG_SYST_CD,SYST_CHG_PRGR_ID) VALUES ('0000391098','0000000205','09861097','UG_0011307',TIMESTAMP '2022-04-19 00:00:00',TIMESTAMP '9999-12-31 00:00:00','Y',TIMESTAMP '2022-04-19 12:21:14','99999999','9999999','SAA','EIAM',TIMESTAMP '2022-04-19 12:21:14','99999999','9999999','SAA','EIAM') ;
INSERT INTO S_EIAM_TIS.AA_USAC_user_grou_rtns (USAC_USER_GROU_RTNS_ID,SYST_ID,PRAF_NO,USER_GROU_ID,VLDT_YMD,EXPR_YMD,PUSE_YN,SYST_RGI_DT,SYST_RGI_PRAF_NO,SYST_RGI_OGNZ_NO,SYST_RGI_SYST_CD,SYST_RGI_PRGR_ID,SYST_CHG_DT,SYST_CHG_PRAF_NO,SYST_CHG_OGNZ_NO,SYST_CHG_SYST_CD,SYST_CHG_PRGR_ID) VALUES ('0000388336','0000000205','09861097','UG_0011306',TIMESTAMP '2022-04-19 00:00:00',TIMESTAMP '9999-12-31 00:00:00','Y',TIMESTAMP '2022-04-19 12:21:14','99999999','9999999','SAA','EIAM',TIMESTAMP '2022-04-19 12:21:14','99999999','9999999','SAA','EIAM') ;
INSERT INTO S_EIAM_TIS.AA_USAC_user_grou_rtns (USAC_USER_GROU_RTNS_ID,SYST_ID,PRAF_NO,USER_GROU_ID,VLDT_YMD,EXPR_YMD,PUSE_YN,SYST_RGI_DT,SYST_RGI_PRAF_NO,SYST_RGI_OGNZ_NO,SYST_RGI_SYST_CD,SYST_RGI_PRGR_ID,SYST_CHG_DT,SYST_CHG_PRAF_NO,SYST_CHG_OGNZ_NO,SYST_CHG_SYST_CD,SYST_CHG_PRGR_ID) VALUES ('0000388550','0000000205','61005896','UG_0011307',TIMESTAMP '2022-04-19 00:00:00',TIMESTAMP '9999-12-31 00:00:00','Y',TIMESTAMP '2022-04-19 12:21:14','99999999','9999999','SAA','EIAM',TIMESTAMP '2022-04-19 12:21:14','99999999','9999999','SAA','EIAM') ;
INSERT INTO S_EIAM_TIS.AA_USAC_user_grou_rtns (USAC_USER_GROU_RTNS_ID,SYST_ID,PRAF_NO,USER_GROU_ID,VLDT_YMD,EXPR_YMD,PUSE_YN,SYST_RGI_DT,SYST_RGI_PRAF_NO,SYST_RGI_OGNZ_NO,SYST_RGI_SYST_CD,SYST_RGI_PRGR_ID,SYST_CHG_DT,SYST_CHG_PRAF_NO,SYST_CHG_OGNZ_NO,SYST_CHG_SYST_CD,SYST_CHG_PRGR_ID) VALUES ('0000388825','0000000205','61005872','UG_0011307',TIMESTAMP '2022-04-19 00:00:00',TIMESTAMP '9999-12-31 00:00:00','Y',TIMESTAMP '2022-04-19 12:21:14','99999999','9999999','SAA','EIAM',TIMESTAMP '2022-04-19 12:21:14','99999999','9999999','SAA','EIAM') ;
INSERT INTO S_EIAM_TIS.AA_USAC_user_grou_rtns (USAC_USER_GROU_RTNS_ID,SYST_ID,PRAF_NO,USER_GROU_ID,VLDT_YMD,EXPR_YMD,PUSE_YN,SYST_RGI_DT,SYST_RGI_PRAF_NO,SYST_RGI_OGNZ_NO,SYST_RGI_SYST_CD,SYST_RGI_PRGR_ID,SYST_CHG_DT,SYST_CHG_PRAF_NO,SYST_CHG_OGNZ_NO,SYST_CHG_SYST_CD,SYST_CHG_PRGR_ID) VALUES ('0000388839','0000000205','61005886','UG_0011306',TIMESTAMP '2022-04-19 00:00:00',TIMESTAMP '9999-12-31 00:00:00','Y',TIMESTAMP '2022-04-19 12:21:14','99999999','9999999','SAA','EIAM',TIMESTAMP '2022-04-19 12:21:14','99999999','9999999','SAA','EIAM') ;
INSERT INTO S_EIAM_TIS.AA_USAC_user_grou_rtns (USAC_USER_GROU_RTNS_ID,SYST_ID,PRAF_NO,USER_GROU_ID,VLDT_YMD,EXPR_YMD,PUSE_YN,SYST_RGI_DT,SYST_RGI_PRAF_NO,SYST_RGI_OGNZ_NO,SYST_RGI_SYST_CD,SYST_RGI_PRGR_ID,SYST_CHG_DT,SYST_CHG_PRAF_NO,SYST_CHG_OGNZ_NO,SYST_CHG_SYST_CD,SYST_CHG_PRGR_ID) VALUES ('0000388149','0000000205','61005873','UG_0011306',TIMESTAMP '2022-04-19 00:00:00',TIMESTAMP '9999-12-31 00:00:00','Y',TIMESTAMP '2022-04-19 12:21:14','99999999','9999999','SAA','EIAM',TIMESTAMP '2022-04-19 12:21:14','99999999','9999999','SAA','EIAM') ;
INSERT INTO S_EIAM_TIS.AA_USAC_user_grou_rtns (USAC_USER_GROU_RTNS_ID,SYST_ID,PRAF_NO,USER_GROU_ID,VLDT_YMD,EXPR_YMD,PUSE_YN,SYST_RGI_DT,SYST_RGI_PRAF_NO,SYST_RGI_OGNZ_NO,SYST_RGI_SYST_CD,SYST_RGI_PRGR_ID,SYST_CHG_DT,SYST_CHG_PRAF_NO,SYST_CHG_OGNZ_NO,SYST_CHG_SYST_CD,SYST_CHG_PRGR_ID) VALUES ('0000388081','0000000205','09861096','UG_0011307',TIMESTAMP '2022-04-19 00:00:00',TIMESTAMP '9999-12-31 00:00:00','Y',TIMESTAMP '2022-04-19 12:21:14','99999999','9999999','SAA','EIAM',TIMESTAMP '2022-04-19 12:21:14','99999999','9999999','SAA','EIAM') ;
INSERT INTO S_EIAM_TIS.AA_USAC_user_grou_rtns (USAC_USER_GROU_RTNS_ID,SYST_ID,PRAF_NO,USER_GROU_ID,VLDT_YMD,EXPR_YMD,PUSE_YN,SYST_RGI_DT,SYST_RGI_PRAF_NO,SYST_RGI_OGNZ_NO,SYST_RGI_SYST_CD,SYST_RGI_PRGR_ID,SYST_CHG_DT,SYST_CHG_PRAF_NO,SYST_CHG_OGNZ_NO,SYST_CHG_SYST_CD,SYST_CHG_PRGR_ID) VALUES ('0000388097','0000000205','09861102','UG_0011307',TIMESTAMP '2022-04-19 00:00:00',TIMESTAMP '9999-12-31 00:00:00','Y',TIMESTAMP '2022-04-19 12:21:14','99999999','9999999','SAA','EIAM',TIMESTAMP '2022-04-19 12:21:14','99999999','9999999','SAA','EIAM') ;
INSERT INTO S_EIAM_TIS.AA_USAC_user_grou_rtns (USAC_USER_GROU_RTNS_ID,SYST_ID,PRAF_NO,USER_GROU_ID,VLDT_YMD,EXPR_YMD,PUSE_YN,SYST_RGI_DT,SYST_RGI_PRAF_NO,SYST_RGI_OGNZ_NO,SYST_RGI_SYST_CD,SYST_RGI_PRGR_ID,SYST_CHG_DT,SYST_CHG_PRAF_NO,SYST_CHG_OGNZ_NO,SYST_CHG_SYST_CD,SYST_CHG_PRGR_ID) VALUES ('0000388116','0000000205','61005905','UG_0011307',TIMESTAMP '2022-04-19 00:00:00',TIMESTAMP '9999-12-31 00:00:00','Y',TIMESTAMP '2022-04-19 12:21:14','99999999','9999999','SAA','EIAM',TIMESTAMP '2022-04-19 12:21:14','99999999','9999999','SAA','EIAM') ;
INSERT INTO S_EIAM_TIS.AA_USAC_user_grou_rtns (USAC_USER_GROU_RTNS_ID,SYST_ID,PRAF_NO,USER_GROU_ID,VLDT_YMD,EXPR_YMD,PUSE_YN,SYST_RGI_DT,SYST_RGI_PRAF_NO,SYST_RGI_OGNZ_NO,SYST_RGI_SYST_CD,SYST_RGI_PRGR_ID,SYST_CHG_DT,SYST_CHG_PRAF_NO,SYST_CHG_OGNZ_NO,SYST_CHG_SYST_CD,SYST_CHG_PRGR_ID) VALUES ('0000388229','0000000205','61005899','UG_0011307',TIMESTAMP '2022-04-19 00:00:00',TIMESTAMP '9999-12-31 00:00:00','Y',TIMESTAMP '2022-04-19 12:21:14','99999999','9999999','SAA','EIAM',TIMESTAMP '2022-04-19 12:21:14','99999999','9999999','SAA','EIAM') ;
INSERT INTO S_EIAM_TIS.AA_USAC_user_grou_rtns (USAC_USER_GROU_RTNS_ID,SYST_ID,PRAF_NO,USER_GROU_ID,VLDT_YMD,EXPR_YMD,PUSE_YN,SYST_RGI_DT,SYST_RGI_PRAF_NO,SYST_RGI_OGNZ_NO,SYST_RGI_SYST_CD,SYST_RGI_PRGR_ID,SYST_CHG_DT,SYST_CHG_PRAF_NO,SYST_CHG_OGNZ_NO,SYST_CHG_SYST_CD,SYST_CHG_PRGR_ID) VALUES ('0000389054','0000000205','09861197','UG_0011306',TIMESTAMP '2022-04-19 00:00:00',TIMESTAMP '9999-12-31 00:00:00','Y',TIMESTAMP '2022-04-19 12:21:14','99999999','9999999','SAA','EIAM',TIMESTAMP '2022-04-19 12:21:14','99999999','9999999','SAA','EIAM') ;
INSERT INTO S_EIAM_TIS.AA_USAC_user_grou_rtns (USAC_USER_GROU_RTNS_ID,SYST_ID,PRAF_NO,USER_GROU_ID,VLDT_YMD,EXPR_YMD,PUSE_YN,SYST_RGI_DT,SYST_RGI_PRAF_NO,SYST_RGI_OGNZ_NO,SYST_RGI_SYST_CD,SYST_RGI_PRGR_ID,SYST_CHG_DT,SYST_CHG_PRAF_NO,SYST_CHG_OGNZ_NO,SYST_CHG_SYST_CD,SYST_CHG_PRGR_ID) VALUES ('0000389005','0000000205','09861302','UG_0011307',TIMESTAMP '2022-04-19 00:00:00',TIMESTAMP '9999-12-31 00:00:00','Y',TIMESTAMP '2022-04-19 12:21:14','99999999','9999999','SAA','EIAM',TIMESTAMP '2022-04-19 12:21:14','99999999','9999999','SAA','EIAM') ;
INSERT INTO S_EIAM_TIS.AA_USAC_user_grou_rtns (USAC_USER_GROU_RTNS_ID,SYST_ID,PRAF_NO,USER_GROU_ID,VLDT_YMD,EXPR_YMD,PUSE_YN,SYST_RGI_DT,SYST_RGI_PRAF_NO,SYST_RGI_OGNZ_NO,SYST_RGI_SYST_CD,SYST_RGI_PRGR_ID,SYST_CHG_DT,SYST_CHG_PRAF_NO,SYST_CHG_OGNZ_NO,SYST_CHG_SYST_CD,SYST_CHG_PRGR_ID) VALUES ('0000390044','0000000205','09861101','UG_0011307',TIMESTAMP '2022-04-19 00:00:00',TIMESTAMP '9999-12-31 00:00:00','Y',TIMESTAMP '2022-04-19 12:21:14','99999999','9999999','SAA','EIAM',TIMESTAMP '2022-04-19 12:21:14','99999999','9999999','SAA','EIAM') ;
INSERT INTO S_EIAM_TIS.AA_USAC_user_grou_rtns (USAC_USER_GROU_RTNS_ID,SYST_ID,PRAF_NO,USER_GROU_ID,VLDT_YMD,EXPR_YMD,PUSE_YN,SYST_RGI_DT,SYST_RGI_PRAF_NO,SYST_RGI_OGNZ_NO,SYST_RGI_SYST_CD,SYST_RGI_PRGR_ID,SYST_CHG_DT,SYST_CHG_PRAF_NO,SYST_CHG_OGNZ_NO,SYST_CHG_SYST_CD,SYST_CHG_PRGR_ID) VALUES ('0000389007','0000000205','61005898','UG_0011307',TIMESTAMP '2022-04-19 00:00:00',TIMESTAMP '9999-12-31 00:00:00','Y',TIMESTAMP '2022-04-19 12:21:14','99999999','9999999','SAA','EIAM',TIMESTAMP '2022-04-19 12:21:14','99999999','9999999','SAA','EIAM') ;
INSERT INTO S_EIAM_TIS.AA_USAC (PRAF_NO,PRAF_NM,OGNZ_NO,ADDRE,PRAF_OFDU_CD,PRAF_OFDU_NM,PRAF_OFLE_CD,PRAF_OFLE_NM,PRAF_DUTY_CD,PRAF_DUTY_NM,PUSE_YN,SYST_RGI_DT,SYST_RGI_PRAF_NO,SYST_RGI_OGNZ_NO,SYST_RGI_SYST_CD,SYST_RGI_PRGR_ID,SYST_CHG_DT,SYST_CHG_PRAF_NO,SYST_CHG_OGNZ_NO,SYST_CHG_SYST_CD,SYST_CHG_PRGR_ID) VALUES ('09861101','김정우','0993129','ZnNnIt2Vpx0VuIFtTTC4X-fRMEUZVxibJyigyjw58Ms=','N08550701','영업지원시스템기획-운영','80SR','Sr','810135','챕터원','Y',TIMESTAMP '2021-04-21 05:04:04','99999999','9999999','SAA','0000000002',TIMESTAMP '2025-07-01 12:34:37','99999999','9999999','SAA','EIAM') ;
INSERT INTO S_EIAM_TIS.AA_USAC (PRAF_NO,PRAF_NM,OGNZ_NO,ADDRE,PRAF_OFDU_CD,PRAF_OFDU_NM,PRAF_OFLE_CD,PRAF_OFLE_NM,PRAF_DUTY_CD,PRAF_DUTY_NM,PUSE_YN,SYST_RGI_DT,SYST_RGI_PRAF_NO,SYST_RGI_OGNZ_NO,SYST_RGI_SYST_CD,SYST_RGI_PRGR_ID,SYST_CHG_DT,SYST_CHG_PRAF_NO,SYST_CHG_OGNZ_NO,SYST_CHG_SYST_CD,SYST_CHG_PRGR_ID) VALUES ('09861102','한준영','0999200','hIX9bJ9IISfan3Gv8RU3huipr7otRghkLqlNgyw8ZVc=','N08580303','내부통제','80SR','Sr','810030','팀원','Y',TIMESTAMP '2021-04-21 05:04:08','99999999','9999999','SAA','0000000002',TIMESTAMP '2023-04-01 12:31:16','99999999','9999999','SAA','EIAM' ) ;
INSERT INTO S_EIAM_TIS.AA_USAC (PRAF_NO,PRAF_NM,OGNZ_NO,ADDRE,PRAF_OFDU_CD,PRAF_OFDU_NM,PRAF_OFLE_CD,PRAF_OFLE_NM,PRAF_DUTY_CD,PRAF_DUTY_NM,PUSE_YN,SYST_RGI_DT,SYST_RGI_PRAF_NO,SYST_RGI_OGNZ_NO,SYST_RGI_SYST_CD,SYST_RGI_PRGR_ID,SYST_CHG_DT,SYST_CHG_PRAF_NO,SYST_CHG_OGNZ_NO,SYST_CHG_SYST_CD,SYST_CHG_PRGR_ID) VALUES ('09861197','최원진','0995400','QhUqiS4UN6Byc+Z9n7xs8AzRTe4FeArLtMyNHtGGi10=','N08540202','계약심사','80SR','Sr','810030','팀원','Y',TIMESTAMP '2021-04-21 05:04:59','99999999','9999999','SAA','0000000002',TIMESTAMP '2023-04-01 12:30:18','99999999','9999999','SAA','EIAM' ) ;
INSERT INTO S_EIAM_TIS.AA_USAC (PRAF_NO,PRAF_NM,OGNZ_NO,ADDRE,PRAF_OFDU_CD,PRAF_OFDU_NM,PRAF_OFLE_CD,PRAF_OFLE_NM,PRAF_DUTY_CD,PRAF_DUTY_NM,PUSE_YN,SYST_RGI_DT,SYST_RGI_PRAF_NO,SYST_RGI_OGNZ_NO,SYST_RGI_SYST_CD,SYST_RGI_PRGR_ID,SYST_CHG_DT,SYST_CHG_PRAF_NO,SYST_CHG_OGNZ_NO,SYST_CHG_SYST_CD,SYST_CHG_PRGR_ID) VALUES ('09861096','이석진','0995146','WfydcrzCqws+QIilkz13iXWxHeXTgZ+knGEvxuzUFjE=','N08620101','고객서비스 업무지원','80SR','Sr','810114','CS지원','Y',TIMESTAMP '2021-04-21 05:04:59','99999999','9999999','SAA','0000000002',TIMESTAMP '2025-05-01 12:34:43','99999999','9999999','SAA','EIAM' ) ;
INSERT INTO S_EIAM_TIS.AA_USAC (PRAF_NO,PRAF_NM,OGNZ_NO,ADDRE,PRAF_OFDU_CD,PRAF_OFDU_NM,PRAF_OFLE_CD,PRAF_OFLE_NM,PRAF_DUTY_CD,PRAF_DUTY_NM,PUSE_YN,SYST_RGI_DT,SYST_RGI_PRAF_NO,SYST_RGI_OGNZ_NO,SYST_RGI_SYST_CD,SYST_RGI_PRGR_ID,SYST_CHG_DT,SYST_CHG_PRAF_NO,SYST_CHG_OGNZ_NO,SYST_CHG_SYST_CD,SYST_CHG_PRGR_ID) VALUES ('09861097','김남중','0993203','wd12hSaDEPA5UbaPxrPaCZqHO-w23cd7WLhkzHz01+s=','N08550803','제휴마케팅기획관리','80SR','Sr','810030','팀원','Y',TIMESTAMP '2021-04-21 05:04:10','99999999','9999999','SAA','0000000002',TIMESTAMP '2024-10-10 15:41:26','99999999','9999999','SAA','EIAM' ) ;
INSERT INTO S_EIAM_TIS.AA_USAC (PRAF_NO,PRAF_NM,OGNZ_NO,ADDRE,PRAF_OFDU_CD,PRAF_OFDU_NM,PRAF_OFLE_CD,PRAF_OFLE_NM,PRAF_DUTY_CD,PRAF_DUTY_NM,PUSE_YN,SYST_RGI_DT,SYST_RGI_PRAF_NO,SYST_RGI_OGNZ_NO,SYST_RGI_SYST_CD,SYST_RGI_PRGR_ID,SYST_CHG_DT,SYST_CHG_PRAF_NO,SYST_CHG_OGNZ_NO,SYST_CHG_SYST_CD,SYST_CHG_PRGR_ID) VALUES ('09861194','윤승로','0993134','XuVpEqWforwy4JgbLOOO7Qc3OTMM2uXFucCXgXAKPec=','N08550209','FC교육운영','80SR','Sr','810030','팀원','Y',TIMESTAMP '2021-04-21 05:04:59','99999999','9999999','SAA','0000000002',TIMESTAMP '2024-11-01 12:41:52','99999999','9999999','SAA','EIAM' ) ;
INSERT INTO S_EIAM_TIS.AA_USAC (PRAF_NO,PRAF_NM,OGNZ_NO,ADDRE,PRAF_OFDU_CD,PRAF_OFDU_NM,PRAF_OFLE_CD,PRAF_OFLE_NM,PRAF_DUTY_CD,PRAF_DUTY_NM,PUSE_YN,SYST_RGI_DT,SYST_RGI_PRAF_NO,SYST_RGI_OGNZ_NO,SYST_RGI_SYST_CD,SYST_RGI_PRGR_ID,SYST_CHG_DT,SYST_CHG_PRAF_NO,SYST_CHG_OGNZ_NO,SYST_CHG_SYST_CD,SYST_CHG_PRGR_ID) VALUES ('09861303','박범진','0999200','MTa1Jvmkzhwk+-5cnsORvnXAwLCyWYs5tiPa9xgVrPQ=','N08550301','GA채널기획관리','80MST','Mst','810122','파트원','Y',TIMESTAMP '2021-04-21 05:04:01','99999999','9999999','SAA','0000000002',TIMESTAMP '2025-01-01 12:31:03','99999999','9999999','SAA','EIAM' ) ;
INSERT INTO S_EIAM_TIS.AA_USAC (PRAF_NO,PRAF_NM,OGNZ_NO,ADDRE,PRAF_OFDU_CD,PRAF_OFDU_NM,PRAF_OFLE_CD,PRAF_OFLE_NM,PRAF_DUTY_CD,PRAF_DUTY_NM,PUSE_YN,SYST_RGI_DT,SYST_RGI_PRAF_NO,SYST_RGI_OGNZ_NO,SYST_RGI_SYST_CD,SYST_RGI_PRGR_ID,SYST_CHG_DT,SYST_CHG_PRAF_NO,SYST_CHG_OGNZ_NO,SYST_CHG_SYST_CD,SYST_CHG_PRGR_ID) VALUES ('09861302','문준호','0995400','XafkrGHaWLTxackt7T2NsjCAUXBF3uyjMNAXVyUSvC4=','N08560301','소비자보호기획','80SR','Sr','810122','파트원','Y',TIMESTAMP '2021-04-21 05:04:08','99999999','9999999','SAA','0000000002',TIMESTAMP '2025-02-01 12:30:54','99999999','9999999','SAA','EIAM' ) ;
INSERT INTO S_EIAM_TIS.AA_USAC (PRAF_NO,PRAF_NM,OGNZ_NO,ADDRE,PRAF_OFDU_CD,PRAF_OFDU_NM,PRAF_OFLE_CD,PRAF_OFLE_NM,PRAF_DUTY_CD,PRAF_DUTY_NM,PUSE_YN,SYST_RGI_DT,SYST_RGI_PRAF_NO,SYST_RGI_OGNZ_NO,SYST_RGI_SYST_CD,SYST_RGI_PRGR_ID,SYST_CHG_DT,SYST_CHG_PRAF_NO,SYST_CHG_OGNZ_NO,SYST_CHG_SYST_CD,SYST_CHG_PRGR_ID) VALUES ('09861100','윤희준','0993203','X-4VwtIV1YCBR6+0UqZBVHqk9GpqHy3AMDJYKihWQhk=','N08560101','계약관리','80SR','Sr','810122','파트원','Y',TIMESTAMP '2021-04-21 05:04:04','99999999','9999999','SAA','0000000002',TIMESTAMP '2025-02-01 12:30:55','99999999','9999999','SAA','EIAM' ) ;
INSERT INTO S_EIAM_TIS.AA_USAC (PRAF_NO,PRAF_NM,OGNZ_NO,ADDRE,PRAF_OFDU_CD,PRAF_OFDU_NM,PRAF_OFLE_CD,PRAF_OFLE_NM,PRAF_DUTY_CD,PRAF_DUTY_NM,PUSE_YN,SYST_RGI_DT,SYST_RGI_PRAF_NO,SYST_RGI_OGNZ_NO,SYST_RGI_SYST_CD,SYST_RGI_PRGR_ID,SYST_CHG_DT,SYST_CHG_PRAF_NO,SYST_CHG_OGNZ_NO,SYST_CHG_SYST_CD,SYST_CHG_PRGR_ID) VALUES ('09861195','박준영','0993203','tyg5izJmKkXYqIa6YfKp0Y42yIUjrhY+-6hgYZ8Vtmo=','N08510105','부서총괄','80MGR','Mgr','810015','팀장','Y',TIMESTAMP '2021-04-21 05:04:02','99999999','9999999','SAA','0000000002',TIMESTAMP '2025-01-01 12:30:55','99999999','9999999','SAA','EIAM' ) ;
INSERT INTO S_EIAM_TIS.AA_USAC (PRAF_NO,PRAF_NM,OGNZ_NO,ADDRE,PRAF_OFDU_CD,PRAF_OFDU_NM,PRAF_OFLE_CD,PRAF_OFLE_NM,PRAF_DUTY_CD,PRAF_DUTY_NM,PUSE_YN,SYST_RGI_DT,SYST_RGI_PRAF_NO,SYST_RGI_OGNZ_NO,SYST_RGI_SYST_CD,SYST_RGI_PRGR_ID,SYST_CHG_DT,SYST_CHG_PRAF_NO,SYST_CHG_OGNZ_NO,SYST_CHG_SYST_CD,SYST_CHG_PRGR_ID) VALUES ('09861196','정재용','0993129','wPIIdQ3PwXlj5fxgtjWzkZs4yagmbAC9kDU5dNq6sKw=','N08520101','고객DB운영','80SR','Sr','810135','챕터원','Y',TIMESTAMP '2021-04-21 05:04:04','99999999','9999999','SAA','0000000002',TIMESTAMP '2024-10-10 15:41:11','99999999','9999999','SAA','EIAM' ) ;
INSERT INTO S_EIAM_TIS.AA_USAC (PRAF_NO,PRAF_NM,OGNZ_NO,ADDRE,PRAF_OFDU_CD,PRAF_OFDU_NM,PRAF_OFLE_CD,PRAF_OFLE_NM,PRAF_DUTY_CD,PRAF_DUTY_NM,PUSE_YN,SYST_RGI_DT,SYST_RGI_PRAF_NO,SYST_RGI_OGNZ_NO,SYST_RGI_SYST_CD,SYST_RGI_PRGR_ID,SYST_CHG_DT,SYST_CHG_PRAF_NO,SYST_CHG_OGNZ_NO,SYST_CHG_SYST_CD,SYST_CHG_PRGR_ID) VALUES ('61005872','동영예','0993129','bgHjYQyZochoxQXjI2stZf4dmHANf7r514SxeGnHJL0=','N08550203','FC채널지원','80SR','Sr','810030','팀원','Y',TIMESTAMP '2021-04-21 05:04:04','99999999','9999999','SAA','0000000002',TIMESTAMP '2025-08-01 12:39:02','99999999','9999999','SAA','EIAM' ) ;
INSERT INTO S_EIAM_TIS.AA_USAC (PRAF_NO,PRAF_NM,OGNZ_NO,ADDRE,PRAF_OFDU_CD,PRAF_OFDU_NM,PRAF_OFLE_CD,PRAF_OFLE_NM,PRAF_DUTY_CD,PRAF_DUTY_NM,PUSE_YN,SYST_RGI_DT,SYST_RGI_PRAF_NO,SYST_RGI_OGNZ_NO,SYST_RGI_SYST_CD,SYST_RGI_PRGR_ID,SYST_CHG_DT,SYST_CHG_PRAF_NO,SYST_CHG_OGNZ_NO,SYST_CHG_SYST_CD,SYST_CHG_PRGR_ID) VALUES ('61005873','동한름','0993129','Vip4QCNT4HYfB9Pa86g7XsEw+LBu02H5BlbDo-W7eQw=','N08580101','내부감사','80SR','Sr','810030','팀원','Y',TIMESTAMP '2021-04-21 05:04:05','99999999','9999999','SAA','0000000002',TIMESTAMP '2024-10-10 15:41:14','99999999','9999999','SAA','EIAM' ) ;
INSERT INTO S_EIAM_TIS.AA_USAC (PRAF_NO,PRAF_NM,OGNZ_NO,ADDRE,PRAF_OFDU_CD,PRAF_OFDU_NM,PRAF_OFLE_CD,PRAF_OFLE_NM,PRAF_DUTY_CD,PRAF_DUTY_NM,PUSE_YN,SYST_RGI_DT,SYST_RGI_PRAF_NO,SYST_RGI_OGNZ_NO,SYST_RGI_SYST_CD,SYST_RGI_PRGR_ID,SYST_CHG_DT,SYST_CHG_PRAF_NO,SYST_CHG_OGNZ_NO,SYST_CHG_SYST_CD,SYST_CHG_PRGR_ID) VALUES ('61005886','빈길들','0993134','yPGgtuE14m+po6oyB9CfxEIilfrEzPxfi-xN0LXG4t8=','N08560302','고객민원관리','80SR','Sr','810122','파트원','Y',TIMESTAMP '2021-04-21 05:04:04','99999999','9999999','SAA','0000000002',TIMESTAMP '2025-02-01 12:31:08','99999999','9999999','SAA','EIAM' ) ;
INSERT INTO S_EIAM_TIS.AA_USAC (PRAF_NO,PRAF_NM,OGNZ_NO,ADDRE,PRAF_OFDU_CD,PRAF_OFDU_NM,PRAF_OFLE_CD,PRAF_OFLE_NM,PRAF_DUTY_CD,PRAF_DUTY_NM,PUSE_YN,SYST_RGI_DT,SYST_RGI_PRAF_NO,SYST_RGI_OGNZ_NO,SYST_RGI_SYST_CD,SYST_RGI_PRGR_ID,SYST_CHG_DT,SYST_CHG_PRAF_NO,SYST_CHG_OGNZ_NO,SYST_CHG_SYST_CD,SYST_CHG_PRGR_ID) VALUES ('61005895','오해나','0993134','YNscG5QLZ1B8KIrBUIeGlK8otbz94A1RJdhh8mRNlGA=','N08900804','육아휴직','80SR','Sr','810095','기타','Y',TIMESTAMP '2021-04-21 05:04:03','99999999','9999999','SAA','0000000002',TIMESTAMP '2025-09-01 12:34:52','99999999','9999999','SAA','EIAM' ) ;
INSERT INTO S_EIAM_TIS.AA_USAC (PRAF_NO,PRAF_NM,OGNZ_NO,ADDRE,PRAF_OFDU_CD,PRAF_OFDU_NM,PRAF_OFLE_CD,PRAF_OFLE_NM,PRAF_DUTY_CD,PRAF_DUTY_NM,PUSE_YN,SYST_RGI_DT,SYST_RGI_PRAF_NO,SYST_RGI_OGNZ_NO,SYST_RGI_SYST_CD,SYST_RGI_PRGR_ID,SYST_CHG_DT,SYST_CHG_PRAF_NO,SYST_CHG_OGNZ_NO,SYST_CHG_SYST_CD,SYST_CHG_PRGR_ID) VALUES ('61005896','동복수','0993134','BMRwD1vs0bmNdZBBs5VBMq1V0OUTH7AeQdKHwUQvQqw=','N08540302','보험금심사기획-지원','80MGR','Mgr','810030','팀원','Y',TIMESTAMP '2021-04-21 05:04:05','99999999','9999999','SAA','0000000002',TIMESTAMP '2025-06-01 12:31:09','99999999','9999999','SAA','EIAM' ) ;
INSERT INTO S_EIAM_TIS.AA_USAC (PRAF_NO,PRAF_NM,OGNZ_NO,ADDRE,PRAF_OFDU_CD,PRAF_OFDU_NM,PRAF_OFLE_CD,PRAF_OFLE_NM,PRAF_DUTY_CD,PRAF_DUTY_NM,PUSE_YN,SYST_RGI_DT,SYST_RGI_PRAF_NO,SYST_RGI_OGNZ_NO,SYST_RGI_SYST_CD,SYST_RGI_PRGR_ID,SYST_CHG_DT,SYST_CHG_PRAF_NO,SYST_CHG_OGNZ_NO,SYST_CHG_SYST_CD,SYST_CHG_PRGR_ID) VALUES ('61005898','동권문','0995400','jyBPF4WMlcE8On8jG9XiWYlV92t5f1MkGKRe2N+xZ+8=','N08540202','계약심사','80SR','Sr','810030','팀원','Y',TIMESTAMP '2021-04-21 05:04:05','99999999','9999999','SAA','0000000002',TIMESTAMP '2025-01-01 12:31:51','99999999','9999999','SAA','EIAM' ) ;
INSERT INTO S_EIAM_TIS.AA_USAC (PRAF_NO,PRAF_NM,OGNZ_NO,ADDRE,PRAF_OFDU_CD,PRAF_OFDU_NM,PRAF_OFLE_CD,PRAF_OFLE_NM,PRAF_DUTY_CD,PRAF_DUTY_NM,PUSE_YN,SYST_RGI_DT,SYST_RGI_PRAF_NO,SYST_RGI_OGNZ_NO,SYST_RGI_SYST_CD,SYST_RGI_PRGR_ID,SYST_CHG_DT,SYST_CHG_PRAF_NO,SYST_CHG_OGNZ_NO,SYST_CHG_SYST_CD,SYST_CHG_PRGR_ID) VALUES ('61005899','심복','0995400','pH9Da+rtRLXLu9oKplGsqvcrF5rL5N8ZVfInlRMa-Vs=','N08550302','GA채널지원','80SR','Sr','810030','팀원','Y',TIMESTAMP '2021-04-21 05:04:02','99999999','9999999','SAA','0000000002',TIMESTAMP '2025-01-01 12:31:11','99999999','9999999','SAA','EIAM' ) ;
INSERT INTO S_EIAM_TIS.AA_USAC (PRAF_NO,PRAF_NM,OGNZ_NO,ADDRE,PRAF_OFDU_CD,PRAF_OFDU_NM,PRAF_OFLE_CD,PRAF_OFLE_NM,PRAF_DUTY_CD,PRAF_DUTY_NM,PUSE_YN,SYST_RGI_DT,SYST_RGI_PRAF_NO,SYST_RGI_OGNZ_NO,SYST_RGI_SYST_CD,SYST_RGI_PRGR_ID,SYST_CHG_DT,SYST_CHG_PRAF_NO,SYST_CHG_OGNZ_NO,SYST_CHG_SYST_CD,SYST_CHG_PRGR_ID) VALUES ('61005905','모중제','0995400','+GR4ai78TrPdOiSDkJ+SbjCiwWQfO9QbSdKD7Kydpis=','N08560507','고객서비스지원','80MGR','Mgr','810122','파트원','Y',TIMESTAMP '2021-04-21 05:04:09','99999999','9999999','SAA','0000000002',TIMESTAMP '2024-10-10 15:46:12','99999999','9999999','SAA','EIAM' ) ;
INSERT INTO S_EIAM_TIS.AA_OGNZ (OGNZ_NM, OGNZ_ABR_NM, OGNZ_NO, SPPO_GONZ_NO, VLDT_YMD, PUSE_YN, SYST_RGI_DT, SYST_RGI_PRAF_NO, SYST_RGI_OGNZ_NO, SYST_RGI_SYST_CD, SYST_RGI_PRGR_ID, SYST_CHG_DT, SYST_CHG_PRAF_NO, SYST_CHG_OGNZ_NO, SYST_CHG_SYST_CD, SYST_CHG_PRGR_ID) VALUES ('총무팀', '총무팀', '0993129', 'shinhanlife@shinhanlife.com', '20260101', 'Y', TIMESTAMP '2023-01-01 12:00:00', 'A1234567', '7654321', 'SYS', 'PROG001', TIMESTAMP '2023-01-01 12:00:00', 'A1234567', '7654321', 'SYS', 'PROG001');
INSERT INTO S_EIAM_TIS.AA_OGNZ (OGNZ_NM, OGNZ_ABR_NM, OGNZ_NO, SPPO_GONZ_NO, VLDT_YMD, PUSE_YN, SYST_RGI_DT, SYST_RGI_PRAF_NO, SYST_RGI_OGNZ_NO, SYST_RGI_SYST_CD, SYST_RGI_PRGR_ID, SYST_CHG_DT, SYST_CHG_PRAF_NO, SYST_CHG_OGNZ_NO, SYST_CHG_SYST_CD, SYST_CHG_PRGR_ID) VALUES ('재무팀', '재무팀', '0999200', 'shinhanlife@shinhanlife.com', '20260101', 'Y', TIMESTAMP '2023-01-01 12:00:00', 'A1234567', '7654321', 'SYS', 'PROG001', TIMESTAMP '2023-01-01 12:00:00', 'A1234567', '7654321', 'SYS', 'PROG001');
INSERT INTO S_EIAM_TIS.AA_OGNZ (OGNZ_NM, OGNZ_ABR_NM, OGNZ_NO, SPPO_GONZ_NO, VLDT_YMD, PUSE_YN, SYST_RGI_DT, SYST_RGI_PRAF_NO, SYST_RGI_OGNZ_NO, SYST_RGI_SYST_CD, SYST_RGI_PRGR_ID, SYST_CHG_DT, SYST_CHG_PRAF_NO, SYST_CHG_OGNZ_NO, SYST_CHG_SYST_CD, SYST_CHG_PRGR_ID) VALUES ('개발팀', '개발팀', '0995400', 'shinhanlife@shinhanlife.com', '20260101', 'Y', TIMESTAMP '2023-01-01 12:00:00', 'A1234567', '7654321', 'SYS', 'PROG001', TIMESTAMP '2023-01-01 12:00:00', 'A1234567', '7654321', 'SYS', 'PROG001');
INSERT INTO S_EIAM_TIS.AA_OGNZ (OGNZ_NM, OGNZ_ABR_NM, OGNZ_NO, SPPO_GONZ_NO, VLDT_YMD, PUSE_YN, SYST_RGI_DT, SYST_RGI_PRAF_NO, SYST_RGI_OGNZ_NO, SYST_RGI_SYST_CD, SYST_RGI_PRGR_ID, SYST_CHG_DT, SYST_CHG_PRAF_NO, SYST_CHG_OGNZ_NO, SYST_CHG_SYST_CD, SYST_CHG_PRGR_ID) VALUES ('구매팀', '구매팀', '0995146', 'shinhanlife@shinhanlife.com', '20260101', 'Y', TIMESTAMP '2023-01-01 12:00:00', 'A1234567', '7654321', 'SYS', 'PROG001', TIMESTAMP '2023-01-01 12:00:00', 'A1234567', '7654321', 'SYS', 'PROG001');
INSERT INTO S_EIAM_TIS.AA_OGNZ (OGNZ_NM, OGNZ_ABR_NM, OGNZ_NO, SPPO_GONZ_NO, VLDT_YMD, PUSE_YN, SYST_RGI_DT, SYST_RGI_PRAF_NO, SYST_RGI_OGNZ_NO, SYST_RGI_SYST_CD, SYST_RGI_PRGR_ID, SYST_CHG_DT, SYST_CHG_PRAF_NO, SYST_CHG_OGNZ_NO, SYST_CHG_SYST_CD, SYST_CHG_PRGR_ID) VALUES ('AI사업부', 'AI사업부', '0993203', 'shinhanlife@shinhanlife.com', '20260101', 'Y', TIMESTAMP '2023-01-01 12:00:00', 'A1234567', '7654321', 'SYS', 'PROG001', TIMESTAMP '2023-01-01 12:00:00', 'A1234567', '7654321', 'SYS', 'PROG001');
INSERT INTO S_EIAM_TIS.AA_OGNZ (OGNZ_NM, OGNZ_ABR_NM, OGNZ_NO, SPPO_GONZ_NO, VLDT_YMD, PUSE_YN, SYST_RGI_DT, SYST_RGI_PRAF_NO, SYST_RGI_OGNZ_NO, SYST_RGI_SYST_CD, SYST_RGI_PRGR_ID, SYST_CHG_DT, SYST_CHG_PRAF_NO, SYST_CHG_OGNZ_NO, SYST_CHG_SYST_CD, SYST_CHG_PRGR_ID) VALUES ('보안팀', '보안팀', '0993134', 'shinhanlife@shinhanlife.com', '20260101', 'Y', TIMESTAMP '2023-01-01 12:00:00', 'A1234567', '7654321', 'SYS', 'PROG001', TIMESTAMP '2023-01-01 12:00:00', 'A1234567', '7654321', 'SYS', 'PROG001');

View File

@@ -0,0 +1,193 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="io.shinhanlife.axhub.biz.so.atm.domain.repository.AccessMgmtMapper">
<resultMap id="roleResultMap" type="io.shinhanlife.axhub.biz.so.atm.dto.RoleListOutDto">
<result column="SYST_ID" property="systId"/>
<result column="ROLE_NO" property="roleNo"/>
<result column="ROLE_NM" property="roleNm"/>
<result column="ROLE_DS" property="roleDs"/>
<result column="PUSE_YN" property="puseYn"/>
</resultMap>
<resultMap id="athrItemResultMap" type="io.shinhanlife.axhub.biz.so.atm.dto.AthrItemOutDto">
<result column="RESOURCE_ID" property="resourceId"/>
<result column="RESOURCE_NM" property="resourceNm"/>
<result column="RESOURCE_DS" property="resourceDs"/>
<result column="TYPE_CODE" property="typeCode"/>
</resultMap>
<!-- 역할 목록 조회 -->
<select id="selectRoles" parameterType="io.shinhanlife.axhub.biz.so.atm.dto.RoleListInDto"
resultMap="roleResultMap">
SELECT
SYST_ID,
ROLE_NO,
ROLE_NM,
ROLE_DS,
PUSE_YN
FROM
S_EIAM_TIS.AA_ROLE
<where>
<if test="systId != null and systId != ''">
AND SYST_ID = #{systId}
</if>
<if test="puseYn != null and puseYn != ''">
AND PUSE_YN = #{puseYn}
</if>
<if test="keyword != null and keyword != ''">
AND ROLE_NM LIKE '%' || #{keyword} || '%'
</if>
</where>
ORDER BY ROLE_NM ASC
</select>
<!-- Tool 마스터 전체 조회 -->
<select id="selectAllTools" resultMap="athrItemResultMap">
SELECT
TOOL_ID AS RESOURCE_ID,
TOOL_NM AS RESOURCE_NM,
TOOL_DS AS RESOURCE_DS,
TOOL_TYPE_CD AS TYPE_CODE
FROM
AX_TOOL_MST
WHERE
PUSE_YN = 'Y'
ORDER BY
TOOL_NM ASC
</select>
<!-- 지식 마스터 전체 조회 -->
<select id="selectAllKnwls" resultMap="athrItemResultMap">
SELECT
KNWL_ID AS RESOURCE_ID,
KNWL_NM AS RESOURCE_NM,
KNWL_DS AS RESOURCE_DS,
KNWL_TYPE_CD AS TYPE_CODE
FROM
AX_KNWL_MST
WHERE
PUSE_YN = 'Y'
ORDER BY
KNWL_NM ASC
</select>
<!-- 역할에 부여된 Tool ID 목록 -->
<select id="selectGrantedToolIds" parameterType="io.shinhanlife.axhub.biz.so.atm.dto.AthrSearchInDto"
resultType="string">
SELECT
TOOL_ID
FROM
AX_ROLE_TOOL_ATHR
WHERE
SYST_ID = #{systId}
AND ROLE_NO = #{roleNo}
AND PUSE_YN = 'Y'
</select>
<!-- 역할에 부여된 지식 ID 목록 -->
<select id="selectGrantedKnwlIds" parameterType="io.shinhanlife.axhub.biz.so.atm.dto.AthrSearchInDto"
resultType="string">
SELECT
KNWL_ID
FROM
AX_ROLE_KNWL_ATHR
WHERE
SYST_ID = #{systId}
AND ROLE_NO = #{roleNo}
AND PUSE_YN = 'Y'
</select>
<!-- Tool 권한 전체 삭제 -->
<delete id="deleteToolAthr">
DELETE FROM AX_ROLE_TOOL_ATHR
WHERE
SYST_ID = #{systId}
AND ROLE_NO = #{roleNo}
</delete>
<!-- Tool 권한 단건 삽입 -->
<insert id="insertToolAthr" parameterType="io.shinhanlife.axhub.biz.so.atm.dto.RoleToolAthrInDto">
INSERT INTO AX_ROLE_TOOL_ATHR (
ROLE_TOOL_ATHR_ID,
SYST_ID,
ROLE_NO,
TOOL_ID,
PUSE_YN,
SYST_RGI_DT,
SYST_RGI_PRAF_NO,
SYST_RGI_OGNZ_NO,
SYST_RGI_SYST_CD,
SYST_RGI_PRGR_ID,
SYST_CHG_DT,
SYST_CHG_PRAF_NO,
SYST_CHG_OGNZ_NO,
SYST_CHG_SYST_CD,
SYST_CHG_PRGR_ID
) VALUES (
#{roleToolAthrId},
#{systId},
#{roleNo},
#{toolId},
#{puseYn},
#{systRgiDt},
#{systRgiPrafNo},
#{systRgiOgnzNo},
#{systRgiSystCd},
#{systRgiPrgrId},
#{systChgDt},
#{systChgPrafNo},
#{systChgOgnzNo},
#{systChgSystCd},
#{systChgPrgrId}
)
</insert>
<!-- 지식 권한 전체 삭제 -->
<delete id="deleteKnwlAthr">
DELETE FROM AX_ROLE_KNWL_ATHR
WHERE
SYST_ID = #{systId}
AND ROLE_NO = #{roleNo}
</delete>
<!-- 지식 권한 단건 삽입 -->
<insert id="insertKnwlAthr" parameterType="io.shinhanlife.axhub.biz.so.atm.dto.RoleKnwlAthrInDto">
INSERT INTO AX_ROLE_KNWL_ATHR (
ROLE_KNWL_ATHR_ID,
SYST_ID,
ROLE_NO,
KNWL_ID,
PUSE_YN,
SYST_RGI_DT,
SYST_RGI_PRAF_NO,
SYST_RGI_OGNZ_NO,
SYST_RGI_SYST_CD,
SYST_RGI_PRGR_ID,
SYST_CHG_DT,
SYST_CHG_PRAF_NO,
SYST_CHG_OGNZ_NO,
SYST_CHG_SYST_CD,
SYST_CHG_PRGR_ID
) VALUES (
#{roleKnwlAthrId},
#{systId},
#{roleNo},
#{knwlId},
#{puseYn},
#{systRgiDt},
#{systRgiPrafNo},
#{systRgiOgnzNo},
#{systRgiSystCd},
#{systRgiPrgrId},
#{systChgDt},
#{systChgPrafNo},
#{systChgOgnzNo},
#{systChgSystCd},
#{systChgPrgrId}
)
</insert>
</mapper>

View File

@@ -0,0 +1,46 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="io.shinhanlife.axhub.common.session.domain.repository.ZtUsacRepository">
<select id="selectZtUsac" resultType="io.shinhanlife.axhub.common.session.dto.ZtUsacOutDto">
SELECT
AU.PRAF_NO, -- 인사번호
AU.PRAF_NM, -- 인사명
AU.OGNZ_NO, -- 조직번호
OG.OGNZ_NM, -- 조직명
AU.ADDRE, -- 이메일주소
AU.PRAF_OFDU_CD, -- 인사직무코드
AU.PRAF_OFDU_NM, -- 인사직무명
AU.PRAF_OFLE_CD, -- 인사직급코드
AU.PRAF_OFLE_NM, -- 인사직급명
AU.PRAF_DUTY_CD, -- 인사직책코드
AU.PRAF_DUTY_NM, -- 인사직책명
AU.MNGR_PRAF_NO, -- 관리자인사번호
AU.PUSE_YN, -- 사용여부
LISTAGG(URR.ROLE_NO, ',') WITHIN GROUP (ORDER BY URR.ROLE_NO) AS ROLE_NO_STR_LIST,
LISTAGG(UR.ROLE_NM, ',') WITHIN GROUP (ORDER BY URR.ROLE_NO) AS ROLE_NM_STR_LIST,
LISTAGG(AM.TGTR_PRAF_NO, ',') WITHIN GROUP (ORDER BY AM.TGTR_PRAF_NO) AS TGTR_PRAF_NO_STR_LIST,
LISTAGG(AM.TGTR_OGNZ_NO, ',') WITHIN GROUP (ORDER BY AM.TGTR_PRAF_NO) AS TGTR_OGNZ_NO_STR_LIST
FROM
S_EIAM_TIS.AA_USAC AU
INNER JOIN
S_EIAM_TIS.AA_USAC_USER_GROU_RTNS UGR ON AU.PRAF_NO = UGR.PRAF_NO
INNER JOIN
S_EIAM_TIS.AA_USER_GROU UG ON UGR.USER_GROU_ID = UG.USER_GROU_ID
INNER JOIN
S_EIAM_TIS.AA_USER_GROU_ROLE_RTNS URR ON UG.USER_GROU_ID = URR.USER_GROU_ID
INNER JOIN
S_EIAM_TIS.AA_ROLE UR ON URR.ROLE_NO = UR.ROLE_NO
LEFT OUTER JOIN
S_EIAM_TIS.AA_MNDT AM ON AM.PRAF_NO = AU.PRAF_NO
INNER JOIN
S_EIAM_TIS.AA_OGNZ OG ON OG.OGNZ_NO = AU.OGNZ_NO
WHERE
AU.PRAF_NO = #{prafNo}
GROUP BY
AU.PRAF_NO, AU.PRAF_NM, AU.OGNZ_NO, AU.ADDRE, AU.PRAF_OFDU_CD, AU.PRAF_OFDU_NM, AU.PRAF_OFLE_CD, AU.PRAF_OFLE_NM, AU.PRAF_DUTY_CD, AU.PRAF_DUTY_NM, AU.MNGR_PRAF_NO, AU.PUSE_YN;
</select>
</mapper>

View File

@@ -0,0 +1,99 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="io.shinhanlife.axhub.biz.sm.mmg.domain.repository.MenuRepository">
<select id="selectMenu" resultType="io.shinhanlife.axhub.biz.sm.mmg.dto.MenuOutDto">
SELECT MENU_ID
, PARENT_MENU_ID
, NAME
, PATH
, TITLE
, ICON
, IS_HIDE
, IS_HIDE_TAB
, LINK
, IS_IFRAME
, KEEP_ALIVE
, ORDER_SEQ
, IS_ACTIVE
FROM S_TIS.ZT_MENU
WHERE 1=1
<if test="isActive != null and isActive != ''">
AND IS_ACTIVE = #{isActive}
</if>
<if test="path != null and path != ''">
AND PATH LIKE CONCAT('%', #{path}, '%')
</if>
<if test="title != null and title != ''">
AND TITLE LIKE CONCAT('%', #{title}, '%')
</if>
ORDER BY ORDER_SEQ ASC
</select>
<select id="selectMenuById" resultType="io.shinhanlife.axhub.biz.sm.mmg.dto.MenuOutDto">
SELECT MENU_ID
, PARENT_MENU_ID
, NAME
, PATH
, TITLE
, ICON
, IS_HIDE
, IS_HIDE_TAB
, LINK
, IS_IFRAME
, KEEP_ALIVE
, ORDER_SEQ
, IS_ACTIVE
FROM S_TIS.ZT_MENU
WHERE MENU_ID = #{menuId}
</select>
<insert id="insertMenu"
parameterType="io.shinhanlife.axhub.biz.sm.mmg.dto.MenuSaveInDto"
useGeneratedKeys="true"
keyProperty="menuId">
INSERT INTO S_TIS.ZT_MENU (
PARENT_MENU_ID, NAME, PATH, TITLE, ICON,
IS_HIDE, IS_HIDE_TAB, LINK, IS_IFRAME, KEEP_ALIVE,
ORDER_SEQ, IS_ACTIVE,
SYST_RGI_DT, SYST_RGI_PRAF_NO, SYST_RGI_OGNZ_NO, SYST_RGI_SYST_CD, SYST_RGI_PRGR_ID,
SYST_CHG_DT, SYST_CHG_PRAF_NO, SYST_CHG_OGNZ_NO, SYST_CHG_SYST_CD, SYST_CHG_PRGR_ID
) VALUES (
#{parentMenuId}, #{name}, #{path}, #{title}, #{icon},
#{isHide}, #{isHideTab}, #{link}, #{isIframe}, #{keepAlive},
#{orderSeq}, #{isActive},
#{systRgiDt}, #{systRgiPrafNo}, #{systRgiOgnzNo}, #{systRgiSystCd}, #{systRgiPrgrId},
#{systChgDt}, #{systChgPrafNo}, #{systChgOgnzNo}, #{systChgSystCd}, #{systChgPrgrId}
)
</insert>
<update id="updateMenu" parameterType="io.shinhanlife.axhub.biz.sm.mmg.dto.MenuSaveInDto">
UPDATE S_TIS.ZT_MENU
SET
PARENT_MENU_ID = #{parentMenuId},
NAME = #{name},
PATH = #{path},
TITLE = #{title},
ICON = #{icon},
IS_HIDE = #{isHide},
IS_HIDE_TAB = #{isHideTab},
LINK = #{link},
IS_IFRAME = #{isIframe},
KEEP_ALIVE = #{keepAlive},
ORDER_SEQ = #{orderSeq},
IS_ACTIVE = #{isActive},
SYST_CHG_DT = #{systChgDt},
SYST_CHG_PRAF_NO = #{systChgPrafNo},
SYST_CHG_OGNZ_NO = #{systChgOgnzNo},
SYST_CHG_SYST_CD = #{systChgSystCd},
SYST_CHG_PRGR_ID = #{systChgPrgrId}
WHERE MENU_ID = #{menuId}
</update>
<delete id="deleteMenu">
DELETE FROM S_TIS.ZT_MENU
WHERE MENU_ID = #{menuId}
</delete>
</mapper>

View File

@@ -0,0 +1,73 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="io.shinhanlife.axhub.sample.domain.repository.GlowSampleRepository">
<select id="selectStrnTerm" parameterType="string" resultType="io.shinhanlife.axhub.sample.dto.StrnTermListOutDTO$StrnTerm">
SELECT /*
--------------------------------------------------------------------------
-- 프로그램 설명 : 표준영문약어명조회
-- 프로그램명 :
--------------------------------------------------------------------------
*/
'한글명' AS strnTermHanNm,
'영문약어' AS strnTermEngcAbrNm,
'영문명' AS strnTermEngNm,
'화면표기명' AS strnTermScrnTermNm
FROM DUAL
WHERE '한글명' LIKE '%' || NVL(#{strnTermHanNm}, '') || '%'
</select>
<insert id="insertAppliSystNtfyPati" parameterType="io.shinhanlife.axhub.sample.domain.model.AppliSystNtfyPatiModel">
INSERT /*
--------------------------------------------------------------------------
-- 업무파트명 : 프레임워크
-- 프로그램 한글명 또는 화면명 : 어플리케이션시스템알림등록
-- 프로그램명 : AppliSystNtfyPati
-------------------------------------------------------------------------- */
INTO S_TFG.GL_APPLI_SYST_NTFY_PATI
( APPLI_SYST_NTFY_PATI_ID
,APPLI_SYST_NTFY_KD_CD
,APPLI_DUTJ_CD
,APPLI_DUTJ_PRJC_CD
,NTFY_MSG_CT
,NTFY_OCC_DT
,NTFY_CFM_DT
,NTFY_TRGT_PRAF_NO
,SHMS_PML_YN
,NTFY_CFM_YN
,SYST_RGI_DT
,SYST_RGI_PRAF_NO
,SYST_RGI_OGNZ_NO
,SYST_RGI_SYST_CD
,SYST_RGI_PRGR_ID
,SYST_CHG_DT
,SYST_CHG_PRAF_NO
,SYST_CHG_OGNZ_NO
,SYST_CHG_SYST_CD
,SYST_CHG_PRGR_ID
) VALUES (
#{appliSystNtfyPatiId}
,NVL(#{appliSystNtfyKdCd},'ZZ')
,NVL(#{appliDutjCd},'ZZ')
,NVL(#{appliDutjPrjcCd},'ZZ')
,#{ntfyMsgCt}
,TO_DATE(#{ntfyOccDt}, 'YYYY-MM-DD HH24:MI:SS')
,TO_DATE(#{ntfyCfmDt}, 'YYYY-MM-DD HH24:MI:SS')
,#{ntfyTrgtPrafNo}
,#{shmsPmlYn}
,#{ntfyCfmYn}
,SYSDATE
,#{systRgiPrafNo}
,#{systRgiOgnzNo}
,#{systRgiSystCd}
,#{systRgiPrgrId}
,SYSDATE
,#{systChgPrafNo}
,#{systChgOgnzNo}
,#{systChgSystCd}
,#{systChgPrgrId}
)
</insert>
</mapper>

View File

@@ -0,0 +1,618 @@
CREATE SCHEMA IF NOT EXISTS S_TIS;
CREATE SCHEMA IF NOT EXISTS S_EIAM_TIS;
SET SCHEMA S_TIS;
-- ZT_통합코드
CREATE TABLE ZT_UNFC_CD (
UNFC_CD_ID VARCHAR(50) NOT NULL,
UNFC_CD_NM VARCHAR(100),
UNFC_CD_HAN_NM VARCHAR(100),
UNFC_CD_ENG_NM VARCHAR(100),
UNFC_CD_DS VARCHAR(4000),
META_SYST_CD VARCHAR(3) NOT NULL,
META_DUTJ_TYPE_CD VARCHAR(5) NOT NULL,
PUSE_YN VARCHAR(1) NOT NULL,
SPPO_UNFC_CD_ID VARCHAR(50),
DATA_LOAD_DT DATE,
SYST_RGI_DT DATE NOT NULL,
SYST_RGI_PRAF_NO VARCHAR(8) NOT NULL,
SYST_RGI_OGNZ_NO VARCHAR(7) NOT NULL,
SYST_RGI_SYST_CD VARCHAR(3) NOT NULL,
SYST_RGI_PRGR_ID VARCHAR(100) NOT NULL,
SYST_CHG_DT DATE NOT NULL,
SYST_CHG_PRAF_NO VARCHAR(8) NOT NULL,
SYST_CHG_OGNZ_NO VARCHAR(7) NOT NULL,
SYST_CHG_SYST_CD VARCHAR(3) NOT NULL,
SYST_CHG_PRGR_ID VARCHAR(100) NOT NULL,
PRIMARY KEY (UNFC_CD_ID)
);
COMMENT ON TABLE ZT_UNFC_CD IS '통합코드';
COMMENT ON COLUMN ZT_UNFC_CD.UNFC_CD_ID IS '통합코드ID (PK)';
COMMENT ON COLUMN ZT_UNFC_CD.UNFC_CD_NM IS '통합코드명';
COMMENT ON COLUMN ZT_UNFC_CD.UNFC_CD_HAN_NM IS '통합코드한글명';
COMMENT ON COLUMN ZT_UNFC_CD.UNFC_CD_ENG_NM IS '통합코드영문명';
COMMENT ON COLUMN ZT_UNFC_CD.UNFC_CD_DS IS '통합코드설명';
COMMENT ON COLUMN ZT_UNFC_CD.META_SYST_CD IS '메타시스템코드';
COMMENT ON COLUMN ZT_UNFC_CD.META_DUTJ_TYPE_CD IS '메타업무유형코드';
COMMENT ON COLUMN ZT_UNFC_CD.PUSE_YN IS '사용여부 (Y/N)';
COMMENT ON COLUMN ZT_UNFC_CD.SPPO_UNFC_CD_ID IS '상위통합코드ID';
COMMENT ON COLUMN ZT_UNFC_CD.DATA_LOAD_DT IS '데이터적재일시';
COMMENT ON COLUMN ZT_UNFC_CD.SYST_RGI_DT IS '시스템등록일시';
COMMENT ON COLUMN ZT_UNFC_CD.SYST_RGI_PRAF_NO IS '시스템등록인사번호';
COMMENT ON COLUMN ZT_UNFC_CD.SYST_RGI_OGNZ_NO IS '시스템등록조직번호';
COMMENT ON COLUMN ZT_UNFC_CD.SYST_RGI_SYST_CD IS '시스템등록시스템코드';
COMMENT ON COLUMN ZT_UNFC_CD.SYST_RGI_PRGR_ID IS '시스템등록프로그램ID';
COMMENT ON COLUMN ZT_UNFC_CD.SYST_CHG_DT IS '시스템변경일시';
COMMENT ON COLUMN ZT_UNFC_CD.SYST_CHG_PRAF_NO IS '시스템변경인사번호';
COMMENT ON COLUMN ZT_UNFC_CD.SYST_CHG_OGNZ_NO IS '시스템변경조직번호';
COMMENT ON COLUMN ZT_UNFC_CD.SYST_CHG_SYST_CD IS '시스템변경시스템코드';
COMMENT ON COLUMN ZT_UNFC_CD.SYST_CHG_PRGR_ID IS '시스템변경프로그램ID';
-- ZT_통합코드 상세
CREATE TABLE S_TIS.ZT_UNFC_CD_DET
(
UNFC_CD_ID VARCHAR(50) NOT NULL,
CD_VLDT_VALU VARCHAR(50) NOT NULL,
CD_VLDT_VALU_INQR_SEQ NUMBER(5) NULL,
CD_VLDT_VALU_NM VARCHAR(400) NULL,
CD_VLDT_VALU_HNGL_ABR_NM VARCHAR(200) NULL,
CD_VLDT_VALU_ENGC_ABR_NM VARCHAR(200) NULL,
CD_VLDT_VALU_HAN_NM VARCHAR(400) NULL,
CD_VLDT_VALU_ENG_NM VARCHAR(400) NULL,
CD_VLDT_VALU_DS VARCHAR(4000) NULL,
CD_ASRT_TYPE_BIT_CD VARCHAR(20) NOT NULL,
SPPO_CD_VLDT_VALU VARCHAR(50) NULL,
SPPO_UNFC_CD_ID VARCHAR(50) NULL,
VLDT_STRT_YMD DATE NULL,
VLDT_END_YMD DATE NULL,
USER_DEF_VALU_N01 VARCHAR(100) NULL,
USER_DEF_VALU_N02 VARCHAR(100) NULL,
SYST_RGI_DT DATE NOT NULL,
SYST_RGI_PRAF_NO VARCHAR(8) NOT NULL,
SYST_RGI_OGNZ_NO VARCHAR(7) NOT NULL,
SYST_RGI_SYST_CD VARCHAR(3) NOT NULL,
SYST_RGI_PRGR_ID VARCHAR(100) NOT NULL,
SYST_CHG_DT DATE NOT NULL,
SYST_CHG_PRAF_NO VARCHAR(8) NOT NULL,
SYST_CHG_OGNZ_NO VARCHAR(7) NOT NULL,
SYST_CHG_SYST_CD VARCHAR(3) NOT NULL,
SYST_CHG_PRGR_ID VARCHAR(100) NOT NULL,
DATA_LOAD_DT DATE NULL
);
COMMENT ON TABLE S_TIS.ZT_UNFC_CD_DET IS '통합코드 상세';
COMMENT ON COLUMN S_TIS.ZT_UNFC_CD_DET.UNFC_CD_ID IS '통합코드ID (PK, 부모)';
COMMENT ON COLUMN S_TIS.ZT_UNFC_CD_DET.CD_VLDT_VALU IS '코드유효값 (PK)';
COMMENT ON COLUMN S_TIS.ZT_UNFC_CD_DET.CD_VLDT_VALU_INQR_SEQ IS '코드유효값조회순서';
COMMENT ON COLUMN S_TIS.ZT_UNFC_CD_DET.CD_VLDT_VALU_NM IS '코드유효값명';
COMMENT ON COLUMN S_TIS.ZT_UNFC_CD_DET.CD_VLDT_VALU_HNGL_ABR_NM IS '코드유효값한글약어명';
COMMENT ON COLUMN S_TIS.ZT_UNFC_CD_DET.CD_VLDT_VALU_ENGC_ABR_NM IS '코드유효값영문약어명';
COMMENT ON COLUMN S_TIS.ZT_UNFC_CD_DET.CD_VLDT_VALU_HAN_NM IS '코드유효값한글명';
COMMENT ON COLUMN S_TIS.ZT_UNFC_CD_DET.CD_VLDT_VALU_ENG_NM IS '코드유효값영문명';
COMMENT ON COLUMN S_TIS.ZT_UNFC_CD_DET.CD_VLDT_VALU_DS IS '코드유효값설명';
COMMENT ON COLUMN S_TIS.ZT_UNFC_CD_DET.CD_ASRT_TYPE_BIT_CD IS '코드분류유형비트코드';
COMMENT ON COLUMN S_TIS.ZT_UNFC_CD_DET.SPPO_CD_VLDT_VALU IS '상위코드유효값';
COMMENT ON COLUMN S_TIS.ZT_UNFC_CD_DET.SPPO_UNFC_CD_ID IS '상위통합코드ID';
COMMENT ON COLUMN S_TIS.ZT_UNFC_CD_DET.VLDT_STRT_YMD IS '유효시작일자';
COMMENT ON COLUMN S_TIS.ZT_UNFC_CD_DET.VLDT_END_YMD IS '유효종료일자';
COMMENT ON COLUMN S_TIS.ZT_UNFC_CD_DET.USER_DEF_VALU_N01 IS '사용자정의값1';
COMMENT ON COLUMN S_TIS.ZT_UNFC_CD_DET.USER_DEF_VALU_N02 IS '사용자정의값2';
COMMENT ON COLUMN S_TIS.ZT_UNFC_CD_DET.SYST_RGI_DT IS '시스템등록일시';
COMMENT ON COLUMN S_TIS.ZT_UNFC_CD_DET.SYST_RGI_PRAF_NO IS '시스템등록인사번호';
COMMENT ON COLUMN S_TIS.ZT_UNFC_CD_DET.SYST_RGI_OGNZ_NO IS '시스템등록조직번호';
COMMENT ON COLUMN S_TIS.ZT_UNFC_CD_DET.SYST_RGI_SYST_CD IS '시스템등록시스템코드';
COMMENT ON COLUMN S_TIS.ZT_UNFC_CD_DET.SYST_RGI_PRGR_ID IS '시스템등록프로그램ID';
COMMENT ON COLUMN S_TIS.ZT_UNFC_CD_DET.SYST_CHG_DT IS '시스템변경일시';
COMMENT ON COLUMN S_TIS.ZT_UNFC_CD_DET.SYST_CHG_PRAF_NO IS '시스템변경인사번호';
COMMENT ON COLUMN S_TIS.ZT_UNFC_CD_DET.SYST_CHG_OGNZ_NO IS '시스템변경조직번호';
COMMENT ON COLUMN S_TIS.ZT_UNFC_CD_DET.SYST_CHG_SYST_CD IS '시스템변경시스템코드';
COMMENT ON COLUMN S_TIS.ZT_UNFC_CD_DET.SYST_CHG_PRGR_ID IS '시스템변경프로그램ID';
COMMENT ON COLUMN S_TIS.ZT_UNFC_CD_DET.DATA_LOAD_DT IS '데이터적재일시';
-------------------------------------------------------------------------------------------
-- ZT_MENU 테이블 생성 (메뉴 기본 정보 저장)
CREATE TABLE ZT_MENU (
MENU_ID INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY, -- 자동 증가 ID (PK)
PARENT_MENU_ID INTEGER, -- 부모 메뉴 ID (FK, NULL 가능 for 루트 메뉴)
NAME VARCHAR(100), -- 컴포넌트 이름 (옵셔널)
PATH VARCHAR(255) NOT NULL, -- 라우트 경로 (필수)
TITLE VARCHAR(100) NOT NULL, -- 메뉴 이름 (meta.title, 필수)
ICON VARCHAR(50), -- 메뉴 아이콘 (옵셔널)
SHOW_BADGE VARCHAR(1) DEFAULT 'N' CHECK (SHOW_BADGE IN ('Y', 'N')), -- 배지 표시 여부 (Y/N, 옵셔널)
SHOW_TEXT_BADGE VARCHAR(50), -- 텍스트 배지 표시 (옵셔널)
IS_HIDE VARCHAR(1) DEFAULT 'N' CHECK (IS_HIDE IN ('Y', 'N')), -- 메뉴 숨김 여부 (Y/N, 옵셔널)
IS_HIDE_TAB VARCHAR(1) DEFAULT 'N' CHECK (IS_HIDE_TAB IN ('Y', 'N')),-- 탭 숨김 여부 (Y/N, 옵셔널)
LINK VARCHAR(255), -- 링크 (옵셔널)
IS_IFRAME VARCHAR(1) DEFAULT 'N' CHECK (IS_IFRAME IN ('Y', 'N')), -- iframe 여부 (Y/N, 옵셔널)
KEEP_ALIVE VARCHAR(1) DEFAULT 'N' CHECK (KEEP_ALIVE IN ('Y', 'N')), -- 캐시 여부 (Y/N, 옵셔널)
ORDER_SEQ INTEGER DEFAULT 0 NOT NULL, -- 메뉴 표시 순서 (정렬용, 필수)
IS_ACTIVE VARCHAR(1) DEFAULT 'Y' CHECK (IS_ACTIVE IN ('Y', 'N')), -- 활성 여부 (Y/N, 기본 Y)
SYST_RGI_DT DATE, -- 시스템등록일시
SYST_RGI_PRAF_NO VARCHAR(50), -- 시스템등록인사번호
SYST_RGI_OGNZ_NO VARCHAR(50), -- 시스템등록조직번호
SYST_RGI_SYST_CD VARCHAR(50), -- 시스템등록시스템코드
SYST_RGI_PRGR_ID VARCHAR(50), -- 시스템등록프로그램ID
SYST_CHG_DT DATE, -- 시스템변경일시
SYST_CHG_PRAF_NO VARCHAR(50), -- 시스템변경인사번호
SYST_CHG_OGNZ_NO VARCHAR(50), -- 시스템변경조직번호
SYST_CHG_SYST_CD VARCHAR(50), -- 시스템변경시스템코드
SYST_CHG_PRGR_ID VARCHAR(50) -- 시스템변경프로그램ID
);
-- 제약 조건 추가
ALTER TABLE ZT_MENU ADD CONSTRAINT FK_ZT_MENU_PARENT FOREIGN KEY (PARENT_MENU_ID) REFERENCES ZT_MENU (MENU_ID) ON DELETE CASCADE; -- 부모 삭제 시 자식도 삭제 (계층 삭제 지원)
-- 인덱스 생성 (조회 최적화)
CREATE INDEX IDX_ZT_MENU_PARENT ON ZT_MENU (PARENT_MENU_ID);
CREATE INDEX IDX_ZT_MENU_PATH ON ZT_MENU (PATH);
-- 컬럼 코멘트 추가
COMMENT ON COLUMN ZT_MENU.MENU_ID IS '메뉴 ID (PK)';
COMMENT ON COLUMN ZT_MENU.PARENT_MENU_ID IS '부모 메뉴 ID (FK)';
COMMENT ON COLUMN ZT_MENU.NAME IS '컴포넌트 이름';
COMMENT ON COLUMN ZT_MENU.PATH IS '라우트 경로';
COMMENT ON COLUMN ZT_MENU.TITLE IS '메뉴 이름';
COMMENT ON COLUMN ZT_MENU.ICON IS '메뉴 아이콘';
COMMENT ON COLUMN ZT_MENU.SHOW_BADGE IS '배지 표시 여부 (Y/N)';
COMMENT ON COLUMN ZT_MENU.SHOW_TEXT_BADGE IS '텍스트 배지 표시';
COMMENT ON COLUMN ZT_MENU.IS_HIDE IS '메뉴 숨김 여부 (Y/N)';
COMMENT ON COLUMN ZT_MENU.IS_HIDE_TAB IS '탭 숨김 여부 (Y/N)';
COMMENT ON COLUMN ZT_MENU.LINK IS '링크';
COMMENT ON COLUMN ZT_MENU.IS_IFRAME IS 'iframe 여부 (Y/N)';
COMMENT ON COLUMN ZT_MENU.KEEP_ALIVE IS '캐시 여부 (Y/N)';
COMMENT ON COLUMN ZT_MENU.ORDER_SEQ IS '메뉴 표시 순서';
COMMENT ON COLUMN ZT_MENU.IS_ACTIVE IS '활성 여부 (Y/N)';
COMMENT ON COLUMN ZT_MENU.SYST_RGI_DT IS '시스템등록일시';
COMMENT ON COLUMN ZT_MENU.SYST_RGI_PRAF_NO IS '시스템등록인사번호';
COMMENT ON COLUMN ZT_MENU.SYST_RGI_OGNZ_NO IS '시스템등록조직번호';
COMMENT ON COLUMN ZT_MENU.SYST_RGI_SYST_CD IS '시스템등록시스템코드';
COMMENT ON COLUMN ZT_MENU.SYST_RGI_PRGR_ID IS '시스템등록프로그램ID';
COMMENT ON COLUMN ZT_MENU.SYST_CHG_DT IS '시스템변경일시';
COMMENT ON COLUMN ZT_MENU.SYST_CHG_PRAF_NO IS '시스템변경인사번호';
COMMENT ON COLUMN ZT_MENU.SYST_CHG_OGNZ_NO IS '시스템변경조직번호';
COMMENT ON COLUMN ZT_MENU.SYST_CHG_SYST_CD IS '시스템변경시스템코드';
COMMENT ON COLUMN ZT_MENU.SYST_CHG_PRGR_ID IS '시스템변경프로그램ID';
-- ============================================================
-- AX HUB 역할-Tool/지식 권한 관리 DDL
-- 대상 스키마 : 프로젝트 AP 스키마 (S_EIAM_TIS 는 읽기전용 참조)
-- 작성일 : 2026-06-25
-- ============================================================
-- ① Tool 마스터
CREATE TABLE AX_TOOL_MST (
TOOL_ID VARCHAR(20) NOT NULL, -- Tool ID (PK)
TOOL_NM VARCHAR(100) NOT NULL, -- Tool명
TOOL_DS VARCHAR(500), -- Tool설명
TOOL_TYPE_CD VARCHAR(20), -- Tool유형코드 (MCP / FUNC / EXT)
PUSE_YN VARCHAR(1) DEFAULT 'Y',-- 사용여부
SYST_RGI_DT DATE,
SYST_RGI_PRAF_NO VARCHAR(8),
SYST_RGI_OGNZ_NO VARCHAR(7),
SYST_RGI_SYST_CD VARCHAR(3),
SYST_RGI_PRGR_ID VARCHAR(100),
SYST_CHG_DT DATE,
SYST_CHG_PRAF_NO VARCHAR(8),
SYST_CHG_OGNZ_NO VARCHAR(7),
SYST_CHG_SYST_CD VARCHAR(3),
SYST_CHG_PRGR_ID VARCHAR(100),
CONSTRAINT PK_AX_TOOL_MST PRIMARY KEY (TOOL_ID)
);
COMMENT ON TABLE AX_TOOL_MST IS 'AX HUB Tool 마스터';
COMMENT ON COLUMN AX_TOOL_MST.TOOL_ID IS 'Tool ID (PK)';
COMMENT ON COLUMN AX_TOOL_MST.TOOL_NM IS 'Tool명';
COMMENT ON COLUMN AX_TOOL_MST.TOOL_DS IS 'Tool설명';
COMMENT ON COLUMN AX_TOOL_MST.TOOL_TYPE_CD IS 'Tool유형코드 (MCP/FUNC/EXT)';
COMMENT ON COLUMN AX_TOOL_MST.PUSE_YN IS '사용여부 (Y/N)';
-- ② 지식(Knowledge) 마스터
CREATE TABLE AX_KNWL_MST (
KNWL_ID VARCHAR(20) NOT NULL, -- 지식 ID (PK)
KNWL_NM VARCHAR(100) NOT NULL, -- 지식명
KNWL_DS VARCHAR(500), -- 지식설명
KNWL_TYPE_CD VARCHAR(20), -- 지식유형코드 (PRODUCT/MANUAL/LEGAL 등)
PUSE_YN VARCHAR(1) DEFAULT 'Y',
SYST_RGI_DT DATE,
SYST_RGI_PRAF_NO VARCHAR(8),
SYST_RGI_OGNZ_NO VARCHAR(7),
SYST_RGI_SYST_CD VARCHAR(3),
SYST_RGI_PRGR_ID VARCHAR(100),
SYST_CHG_DT DATE,
SYST_CHG_PRAF_NO VARCHAR(8),
SYST_CHG_OGNZ_NO VARCHAR(7),
SYST_CHG_SYST_CD VARCHAR(3),
SYST_CHG_PRGR_ID VARCHAR(100),
CONSTRAINT PK_AX_KNWL_MST PRIMARY KEY (KNWL_ID)
);
COMMENT ON TABLE AX_KNWL_MST IS 'AX HUB 지식 마스터';
COMMENT ON COLUMN AX_KNWL_MST.KNWL_ID IS '지식 ID (PK)';
COMMENT ON COLUMN AX_KNWL_MST.KNWL_NM IS '지식명';
COMMENT ON COLUMN AX_KNWL_MST.KNWL_DS IS '지식설명';
COMMENT ON COLUMN AX_KNWL_MST.KNWL_TYPE_CD IS '지식유형코드 (PRODUCT/MANUAL/LEGAL/REPORT)';
COMMENT ON COLUMN AX_KNWL_MST.PUSE_YN IS '사용여부 (Y/N)';
-- ③ 역할-Tool 권한 매핑
-- SYST_ID + ROLE_NO → S_EIAM_TIS.AA_ROLE 참조 (FK 미설정: 스키마 분리 환경)
CREATE TABLE AX_ROLE_TOOL_ATHR (
ROLE_TOOL_ATHR_ID VARCHAR(20) NOT NULL, -- 역할Tool권한ID (PK)
SYST_ID VARCHAR(10) NOT NULL, -- 시스템ID (EIAM 연동 키)
ROLE_NO VARCHAR(50) NOT NULL, -- 역할번호 (EIAM AA_ROLE.ROLE_NO)
TOOL_ID VARCHAR(20) NOT NULL, -- Tool ID
PUSE_YN VARCHAR(1) DEFAULT 'Y',
SYST_RGI_DT DATE,
SYST_RGI_PRAF_NO VARCHAR(8),
SYST_RGI_OGNZ_NO VARCHAR(7),
SYST_RGI_SYST_CD VARCHAR(3),
SYST_RGI_PRGR_ID VARCHAR(100),
SYST_CHG_DT DATE,
SYST_CHG_PRAF_NO VARCHAR(8),
SYST_CHG_OGNZ_NO VARCHAR(7),
SYST_CHG_SYST_CD VARCHAR(3),
SYST_CHG_PRGR_ID VARCHAR(100),
CONSTRAINT PK_AX_ROLE_TOOL_ATHR PRIMARY KEY (ROLE_TOOL_ATHR_ID)
);
-- (SYST_ID, ROLE_NO, TOOL_ID) 중복 방지
CREATE UNIQUE INDEX UK_AX_ROLE_TOOL_ATHR
ON AX_ROLE_TOOL_ATHR (SYST_ID, ROLE_NO, TOOL_ID);
COMMENT ON TABLE AX_ROLE_TOOL_ATHR IS '역할-Tool 권한 매핑';
COMMENT ON COLUMN AX_ROLE_TOOL_ATHR.ROLE_TOOL_ATHR_ID IS '역할Tool권한ID (PK)';
COMMENT ON COLUMN AX_ROLE_TOOL_ATHR.SYST_ID IS '시스템ID';
COMMENT ON COLUMN AX_ROLE_TOOL_ATHR.ROLE_NO IS '역할번호 (EIAM)';
COMMENT ON COLUMN AX_ROLE_TOOL_ATHR.TOOL_ID IS 'Tool ID';
COMMENT ON COLUMN AX_ROLE_TOOL_ATHR.PUSE_YN IS '사용여부';
-- ④ 역할-지식 권한 매핑
CREATE TABLE AX_ROLE_KNWL_ATHR (
ROLE_KNWL_ATHR_ID VARCHAR(20) NOT NULL, -- 역할지식권한ID (PK)
SYST_ID VARCHAR(10) NOT NULL,
ROLE_NO VARCHAR(50) NOT NULL,
KNWL_ID VARCHAR(20) NOT NULL,
PUSE_YN VARCHAR(1) DEFAULT 'Y',
SYST_RGI_DT DATE,
SYST_RGI_PRAF_NO VARCHAR(8),
SYST_RGI_OGNZ_NO VARCHAR(7),
SYST_RGI_SYST_CD VARCHAR(3),
SYST_RGI_PRGR_ID VARCHAR(100),
SYST_CHG_DT DATE,
SYST_CHG_PRAF_NO VARCHAR(8),
SYST_CHG_OGNZ_NO VARCHAR(7),
SYST_CHG_SYST_CD VARCHAR(3),
SYST_CHG_PRGR_ID VARCHAR(100),
CONSTRAINT PK_AX_ROLE_KNWL_ATHR PRIMARY KEY (ROLE_KNWL_ATHR_ID)
);
CREATE UNIQUE INDEX UK_AX_ROLE_KNWL_ATHR
ON AX_ROLE_KNWL_ATHR (SYST_ID, ROLE_NO, KNWL_ID);
COMMENT ON TABLE AX_ROLE_KNWL_ATHR IS '역할-지식 권한 매핑';
COMMENT ON COLUMN AX_ROLE_KNWL_ATHR.ROLE_KNWL_ATHR_ID IS '역할지식권한ID (PK)';
COMMENT ON COLUMN AX_ROLE_KNWL_ATHR.SYST_ID IS '시스템ID';
COMMENT ON COLUMN AX_ROLE_KNWL_ATHR.ROLE_NO IS '역할번호 (EIAM)';
COMMENT ON COLUMN AX_ROLE_KNWL_ATHR.KNWL_ID IS '지식ID';
COMMENT ON COLUMN AX_ROLE_KNWL_ATHR.PUSE_YN IS '사용여부';
-- AA_USAC 테이블 생성 (유저 마스터)
CREATE TABLE S_EIAM_TIS.AA_USAC (
PRAF_NO VARCHAR(8) PRIMARY KEY, -- 인사번호 (PK)
PRAF_NM VARCHAR(200), -- 인사명
OGNZ_NO VARCHAR(7) NOT NULL, -- 조직번호 (NOT NULL)
ADDRE VARCHAR(250), -- 이메일주소
PRAF_OFDU_CD VARCHAR(10), -- 인사직무코드
PRAF_OFDU_NM VARCHAR(100), -- 인사직무명
PRAF_OFLE_CD VARCHAR(10), -- 인사직급코드
PRAF_OFLE_NM VARCHAR(100), -- 인사직급명
PRAF_DUTY_CD VARCHAR(10), -- 인사직책코드
PRAF_DUTY_NM VARCHAR(100), -- 인사직책명
MNGR_PRAF_NO VARCHAR(8), -- 관리자인사번호
PUSE_YN VARCHAR(1), -- 사용여부
SYST_RGI_DT DATE, -- 시스템등록일시
SYST_RGI_PRAF_NO VARCHAR(8), -- 시스템등록인사번호
SYST_RGI_OGNZ_NO VARCHAR(7), -- 시스템등록조직번호
SYST_RGI_SYST_CD VARCHAR(3), -- 시스템등록시스템코드
SYST_RGI_PRGR_ID VARCHAR(100), -- 시스템등록프로그램ID
SYST_CHG_DT DATE, -- 시스템변경일시
SYST_CHG_PRAF_NO VARCHAR(8), -- 시스템변경인사번호
SYST_CHG_OGNZ_NO VARCHAR(7), -- 시스템변경조직번호
SYST_CHG_SYST_CD VARCHAR(3), -- 시스템변경시스템코드
SYST_CHG_PRGR_ID VARCHAR(100) -- 시스템변경프로그램ID
);
-- 인덱스 생성
CREATE INDEX IDX_AA_USAC_OGNZ_NO ON S_EIAM_TIS.AA_USAC (OGNZ_NO);
-- 컬럼 코멘트 추가
COMMENT ON COLUMN S_EIAM_TIS.AA_USAC.PRAF_NO IS '인사번호 (PK)';
COMMENT ON COLUMN S_EIAM_TIS.AA_USAC.PRAF_NM IS '인사명';
COMMENT ON COLUMN S_EIAM_TIS.AA_USAC.OGNZ_NO IS '조직번호 (NOT NULL)';
COMMENT ON COLUMN S_EIAM_TIS.AA_USAC.ADDRE IS '이메일주소';
COMMENT ON COLUMN S_EIAM_TIS.AA_USAC.PRAF_OFDU_CD IS '인사직무코드';
COMMENT ON COLUMN S_EIAM_TIS.AA_USAC.PRAF_OFDU_NM IS '인사직무명';
COMMENT ON COLUMN S_EIAM_TIS.AA_USAC.PRAF_OFLE_CD IS '인사직급코드';
COMMENT ON COLUMN S_EIAM_TIS.AA_USAC.PRAF_OFLE_NM IS '인사직급명';
COMMENT ON COLUMN S_EIAM_TIS.AA_USAC.PRAF_DUTY_CD IS '인사직책코드';
COMMENT ON COLUMN S_EIAM_TIS.AA_USAC.PRAF_DUTY_NM IS '인사직책명';
COMMENT ON COLUMN S_EIAM_TIS.AA_USAC.MNGR_PRAF_NO IS '관리자인사번호';
COMMENT ON COLUMN S_EIAM_TIS.AA_USAC.PUSE_YN IS '사용여부';
COMMENT ON COLUMN S_EIAM_TIS.AA_USAC.SYST_RGI_DT IS '시스템등록일시';
COMMENT ON COLUMN S_EIAM_TIS.AA_USAC.SYST_RGI_PRAF_NO IS '시스템등록인사번호';
COMMENT ON COLUMN S_EIAM_TIS.AA_USAC.SYST_RGI_OGNZ_NO IS '시스템등록조직번호';
COMMENT ON COLUMN S_EIAM_TIS.AA_USAC.SYST_RGI_SYST_CD IS '시스템등록시스템코드';
COMMENT ON COLUMN S_EIAM_TIS.AA_USAC.SYST_RGI_PRGR_ID IS '시스템등록프로그램ID';
COMMENT ON COLUMN S_EIAM_TIS.AA_USAC.SYST_CHG_DT IS '시스템변경일시';
COMMENT ON COLUMN S_EIAM_TIS.AA_USAC.SYST_CHG_PRAF_NO IS '시스템변경인사번호';
COMMENT ON COLUMN S_EIAM_TIS.AA_USAC.SYST_CHG_OGNZ_NO IS '시스템변경조직번호';
COMMENT ON COLUMN S_EIAM_TIS.AA_USAC.SYST_CHG_SYST_CD IS '시스템변경시스템코드';
COMMENT ON COLUMN S_EIAM_TIS.AA_USAC.SYST_CHG_PRGR_ID IS '시스템변경프로그램ID';
-- 위임
CREATE TABLE S_EIAM_TIS.AA_MNDT
(
MNDT_ID VARCHAR(10) NOT NULL,
SYST_ID VARCHAR(10) NOT NULL,
PRAF_NO VARCHAR(8) NOT NULL,
OGNZ_NO VARCHAR(7),
TGTR_PRAF_NO VARCHAR(8) NOT NULL,
TGTR_OGNZ_NO VARCHAR(7),
ROLE_NO VARCHAR(50) NOT NULL,
MNDT_STRT_DT DATE,
MNDT_END_DT DATE,
MNDT_DS VARCHAR(1000),
PUSE_YN VARCHAR(1),
SYST_RGI_DT DATE,
SYST_RGI_PRAF_NO VARCHAR(8),
SYST_RGI_OGNZ_NO VARCHAR(7),
SYST_RGI_SYST_CD VARCHAR(3),
SYST_RGI_PRGR_ID VARCHAR(100),
SYST_CHG_DT DATE,
SYST_CHG_PRAF_NO VARCHAR(8),
SYST_CHG_OGNZ_NO VARCHAR(7),
SYST_CHG_SYST_CD VARCHAR(3),
SYST_CHG_PRGR_ID VARCHAR(100)
);
ALTER TABLE S_EIAM_TIS.AA_MNDT ADD CONSTRAINT PK_AA_MNDT PRIMARY KEY (MNDT_ID);
COMMENT ON COLUMN S_EIAM_TIS.AA_MNDT.MNDT_ID IS '위임ID';
COMMENT ON COLUMN S_EIAM_TIS.AA_MNDT.SYST_ID IS '시스템ID';
COMMENT ON COLUMN S_EIAM_TIS.AA_MNDT.PRAF_NO IS '인사번호';
COMMENT ON COLUMN S_EIAM_TIS.AA_MNDT.OGNZ_NO IS '조직번호';
COMMENT ON COLUMN S_EIAM_TIS.AA_MNDT.TGTR_PRAF_NO IS '대상자인사번호';
COMMENT ON COLUMN S_EIAM_TIS.AA_MNDT.TGTR_OGNZ_NO IS '대상자조직번호';
COMMENT ON COLUMN S_EIAM_TIS.AA_MNDT.ROLE_NO IS '역할번호';
COMMENT ON COLUMN S_EIAM_TIS.AA_MNDT.MNDT_STRT_DT IS '위임시작일시';
COMMENT ON COLUMN S_EIAM_TIS.AA_MNDT.MNDT_END_DT IS '위임종료일시';
COMMENT ON COLUMN S_EIAM_TIS.AA_MNDT.MNDT_DS IS '위임설명';
COMMENT ON COLUMN S_EIAM_TIS.AA_MNDT.PUSE_YN IS '사용여부';
COMMENT ON COLUMN S_EIAM_TIS.AA_MNDT.SYST_RGI_DT IS '시스템등록일시';
COMMENT ON COLUMN S_EIAM_TIS.AA_MNDT.SYST_RGI_PRAF_NO IS '시스템등록인사번호';
COMMENT ON COLUMN S_EIAM_TIS.AA_MNDT.SYST_RGI_OGNZ_NO IS '시스템등록조직번호';
COMMENT ON COLUMN S_EIAM_TIS.AA_MNDT.SYST_RGI_SYST_CD IS '시스템등록시스템코드';
COMMENT ON COLUMN S_EIAM_TIS.AA_MNDT.SYST_RGI_PRGR_ID IS '시스템등록프로그램ID';
COMMENT ON COLUMN S_EIAM_TIS.AA_MNDT.SYST_CHG_DT IS '시스템변경일시';
COMMENT ON COLUMN S_EIAM_TIS.AA_MNDT.SYST_CHG_PRAF_NO IS '시스템변경인사번호';
COMMENT ON COLUMN S_EIAM_TIS.AA_MNDT.SYST_CHG_OGNZ_NO IS '시스템변경조직번호';
COMMENT ON COLUMN S_EIAM_TIS.AA_MNDT.SYST_CHG_SYST_CD IS '시스템변경시스템코드';
COMMENT ON COLUMN S_EIAM_TIS.AA_MNDT.SYST_CHG_PRGR_ID IS '시스템변경프로그램ID';
-- 역할
CREATE TABLE S_EIAM_TIS.AA_ROLE
(
SYST_ID VARCHAR(10) NOT NULL,
ROLE_NO VARCHAR(50) NOT NULL,
ROLE_NM VARCHAR(100),
ROLE_DS VARCHAR(1000),
ASST_OWNR_ROLE_TYPE_CD VARCHAR(3),
MASK_ECPT_MD_CD VARCHAR(1),
INDV_INFO_ATHR_YN VARCHAR(1),
MAIN_CST_IFIN_YN VARCHAR(1),
PUSE_YN VARCHAR(1),
SYST_RGI_DT DATE,
SYST_RGI_PRAF_NO VARCHAR(8),
SYST_RGI_OGNZ_NO VARCHAR(7),
SYST_RGI_SYST_CD VARCHAR(3),
SYST_RGI_PRGR_ID VARCHAR(100),
SYST_CHG_DT DATE,
SYST_CHG_PRAF_NO VARCHAR(8),
SYST_CHG_OGNZ_NO VARCHAR(7),
SYST_CHG_SYST_CD VARCHAR(3),
SYST_CHG_PRGR_ID VARCHAR(100)
);
CREATE UNIQUE INDEX S_EIAM_TIS.PK_AA_ROLE
ON S_EIAM_TIS.AA_ROLE (SYST_ID,ROLE_NO);
ALTER TABLE S_EIAM_TIS.AA_ROLE ADD CONSTRAINT PK_AA_ROLE PRIMARY KEY (SYST_ID,ROLE_NO);
COMMENT ON COLUMN S_EIAM_TIS.AA_ROLE.SYST_ID IS '시스템ID';
COMMENT ON COLUMN S_EIAM_TIS.AA_ROLE.ROLE_NO IS '역할번호';
COMMENT ON COLUMN S_EIAM_TIS.AA_ROLE.ROLE_NM IS '역할명';
COMMENT ON COLUMN S_EIAM_TIS.AA_ROLE.ROLE_DS IS '역할설명';
COMMENT ON COLUMN S_EIAM_TIS.AA_ROLE.ASST_OWNR_ROLE_TYPE_CD IS '자산소유자역할유형코드';
COMMENT ON COLUMN S_EIAM_TIS.AA_ROLE.MASK_ECPT_MD_CD IS '마스킹제외방법코드';
COMMENT ON COLUMN S_EIAM_TIS.AA_ROLE.INDV_INFO_ATHR_YN IS '개인정보권한여부';
COMMENT ON COLUMN S_EIAM_TIS.AA_ROLE.MAIN_CST_IFIN_YN IS '주요고객정보조회여부';
COMMENT ON COLUMN S_EIAM_TIS.AA_ROLE.PUSE_YN IS '사용여부';
COMMENT ON COLUMN S_EIAM_TIS.AA_ROLE.SYST_RGI_DT IS '시스템등록일시';
COMMENT ON COLUMN S_EIAM_TIS.AA_ROLE.SYST_RGI_PRAF_NO IS '시스템등록인사번호';
COMMENT ON COLUMN S_EIAM_TIS.AA_ROLE.SYST_RGI_OGNZ_NO IS '시스템등록조직번호';
COMMENT ON COLUMN S_EIAM_TIS.AA_ROLE.SYST_RGI_SYST_CD IS '시스템등록시스템코드';
COMMENT ON COLUMN S_EIAM_TIS.AA_ROLE.SYST_RGI_PRGR_ID IS '시스템등록프로그램ID';
COMMENT ON COLUMN S_EIAM_TIS.AA_ROLE.SYST_CHG_DT IS '시스템변경일시';
COMMENT ON COLUMN S_EIAM_TIS.AA_ROLE.SYST_CHG_PRAF_NO IS '시스템변경인사번호';
COMMENT ON COLUMN S_EIAM_TIS.AA_ROLE.SYST_CHG_OGNZ_NO IS '시스템변경조직번호';
COMMENT ON COLUMN S_EIAM_TIS.AA_ROLE.SYST_CHG_SYST_CD IS '시스템변경시스템코드';
COMMENT ON COLUMN S_EIAM_TIS.AA_ROLE.SYST_CHG_PRGR_ID IS '시스템변경프로그램ID';
-- 사용자그룹
CREATE TABLE S_EIAM_TIS.AA_USER_GROU
(
SYST_ID VARCHAR(10) NOT NULL,
USER_GROU_ID VARCHAR(10) NOT NULL,
OGNZ_NO VARCHAR(7),
USER_GROU_NM VARCHAR(100),
USER_GROU_DS VARCHAR(1000),
PUSE_YN VARCHAR(1),
SYST_RGI_DT DATE,
SYST_RGI_PRAF_NO VARCHAR(8),
SYST_RGI_OGNZ_NO VARCHAR(7),
SYST_RGI_SYST_CD VARCHAR(3),
SYST_RGI_PRGR_ID VARCHAR(100),
SYST_CHG_DT DATE,
SYST_CHG_PRAF_NO VARCHAR(8),
SYST_CHG_OGNZ_NO VARCHAR(7),
SYST_CHG_SYST_CD VARCHAR(3),
SYST_CHG_PRGR_ID VARCHAR(100)
);
CREATE UNIQUE INDEX S_EIAM_TIS.PK_AA_USER_GROU
ON S_EIAM_TIS.AA_USER_GROU (SYST_ID,USER_GROU_ID);
ALTER TABLE S_EIAM_TIS.AA_USER_GROU
ADD CONSTRAINT PK_AA_USER_GROU PRIMARY KEY (SYST_ID,USER_GROU_ID);
COMMENT ON COLUMN S_EIAM_TIS.AA_USER_GROU.SYST_ID IS '시스템ID';
COMMENT ON COLUMN S_EIAM_TIS.AA_USER_GROU.USER_GROU_ID IS '사용자그룹ID';
COMMENT ON COLUMN S_EIAM_TIS.AA_USER_GROU.OGNZ_NO IS '조직번호';
COMMENT ON COLUMN S_EIAM_TIS.AA_USER_GROU.USER_GROU_NM IS '사용자그룹명';
COMMENT ON COLUMN S_EIAM_TIS.AA_USER_GROU.USER_GROU_DS IS '사용자그룹설명';
COMMENT ON COLUMN S_EIAM_TIS.AA_USER_GROU.PUSE_YN IS '사용여부';
COMMENT ON COLUMN S_EIAM_TIS.AA_USER_GROU.SYST_RGI_DT IS '시스템등록일시';
COMMENT ON COLUMN S_EIAM_TIS.AA_USER_GROU.SYST_RGI_PRAF_NO IS '시스템등록인사번호';
COMMENT ON COLUMN S_EIAM_TIS.AA_USER_GROU.SYST_RGI_OGNZ_NO IS '시스템등록조직번호';
COMMENT ON COLUMN S_EIAM_TIS.AA_USER_GROU.SYST_RGI_SYST_CD IS '시스템등록시스템코드';
COMMENT ON COLUMN S_EIAM_TIS.AA_USER_GROU.SYST_RGI_PRGR_ID IS '시스템등록프로그램ID';
COMMENT ON COLUMN S_EIAM_TIS.AA_USER_GROU.SYST_CHG_DT IS '시스템변경일시';
COMMENT ON COLUMN S_EIAM_TIS.AA_USER_GROU.SYST_CHG_PRAF_NO IS '시스템변경인사번호';
COMMENT ON COLUMN S_EIAM_TIS.AA_USER_GROU.SYST_CHG_OGNZ_NO IS '시스템변경조직번호';
COMMENT ON COLUMN S_EIAM_TIS.AA_USER_GROU.SYST_CHG_SYST_CD IS '시스템변경시스템코드';
COMMENT ON COLUMN S_EIAM_TIS.AA_USER_GROU.SYST_CHG_PRGR_ID IS '시스템변경프로그램ID';
-- 사용자/그룹관계
CREATE TABLE S_EIAM_TIS.AA_USAC_USER_GROU_RTNS
(
USAC_USER_GROU_RTNS_ID VARCHAR(10) NOT NULL,
SYST_ID VARCHAR(10) NOT NULL,
PRAF_NO VARCHAR(8) NOT NULL,
USER_GROU_ID VARCHAR(10) NOT NULL,
VLDT_YMD DATE,
EXPR_YMD DATE,
PUSE_YN VARCHAR(1),
SYST_RGI_DT DATE,
SYST_RGI_PRAF_NO VARCHAR(8),
SYST_RGI_OGNZ_NO VARCHAR(7),
SYST_RGI_SYST_CD VARCHAR(3),
SYST_RGI_PRGR_ID VARCHAR(100),
SYST_CHG_DT DATE,
SYST_CHG_PRAF_NO VARCHAR(8),
SYST_CHG_OGNZ_NO VARCHAR(7),
SYST_CHG_SYST_CD VARCHAR(3),
SYST_CHG_PRGR_ID VARCHAR(100)
);
CREATE UNIQUE INDEX S_EIAM_TIS.PK_AA_USAC_USER_GROU_RTNS
ON S_EIAM_TIS.AA_USAC_USER_GROU_RTNS (USAC_USER_GROU_RTNS_ID);
ALTER TABLE S_EIAM_TIS.AA_USAC_USER_GROU_RTNS
ADD CONSTRAINT PK_AA_USAC_USER_GROU_RTNS PRIMARY KEY (USAC_USER_GROU_RTNS_ID);
COMMENT ON COLUMN S_EIAM_TIS.AA_USAC_USER_GROU_RTNS.USAC_USER_GROU_RTNS_ID IS '사용자계정사용자그룹관계ID';
COMMENT ON COLUMN S_EIAM_TIS.AA_USAC_USER_GROU_RTNS.SYST_ID IS '시스템ID';
COMMENT ON COLUMN S_EIAM_TIS.AA_USAC_USER_GROU_RTNS.PRAF_NO IS '인사번호';
COMMENT ON COLUMN S_EIAM_TIS.AA_USAC_USER_GROU_RTNS.USER_GROU_ID IS '사용자그룹ID';
COMMENT ON COLUMN S_EIAM_TIS.AA_USAC_USER_GROU_RTNS.VLDT_YMD IS '유효일자';
COMMENT ON COLUMN S_EIAM_TIS.AA_USAC_USER_GROU_RTNS.EXPR_YMD IS '만료일자';
COMMENT ON COLUMN S_EIAM_TIS.AA_USAC_USER_GROU_RTNS.PUSE_YN IS '사용여부';
COMMENT ON COLUMN S_EIAM_TIS.AA_USAC_USER_GROU_RTNS.SYST_RGI_DT IS '시스템등록일시';
COMMENT ON COLUMN S_EIAM_TIS.AA_USAC_USER_GROU_RTNS.SYST_RGI_PRAF_NO IS '시스템등록인사번호';
COMMENT ON COLUMN S_EIAM_TIS.AA_USAC_USER_GROU_RTNS.SYST_RGI_OGNZ_NO IS '시스템등록조직번호';
COMMENT ON COLUMN S_EIAM_TIS.AA_USAC_USER_GROU_RTNS.SYST_RGI_SYST_CD IS '시스템등록시스템코드';
COMMENT ON COLUMN S_EIAM_TIS.AA_USAC_USER_GROU_RTNS.SYST_RGI_PRGR_ID IS '시스템등록프로그램ID';
COMMENT ON COLUMN S_EIAM_TIS.AA_USAC_USER_GROU_RTNS.SYST_CHG_DT IS '시스템변경일시';
COMMENT ON COLUMN S_EIAM_TIS.AA_USAC_USER_GROU_RTNS.SYST_CHG_PRAF_NO IS '시스템변경인사번호';
COMMENT ON COLUMN S_EIAM_TIS.AA_USAC_USER_GROU_RTNS.SYST_CHG_OGNZ_NO IS '시스템변경조직번호';
COMMENT ON COLUMN S_EIAM_TIS.AA_USAC_USER_GROU_RTNS.SYST_CHG_SYST_CD IS '시스템변경시스템코드';
COMMENT ON COLUMN S_EIAM_TIS.AA_USAC_USER_GROU_RTNS.SYST_CHG_PRGR_ID IS '시스템변경프로그램ID';
-- 사용자그룹/역할 관계
CREATE TABLE S_EIAM_TIS.AA_USER_GROU_ROLE_RTNS
(
USER_GROU_ROLE_RTNS_ID VARCHAR(10) NOT NULL,
SYST_ID VARCHAR(10) NOT NULL,
USER_GROU_ID VARCHAR(10) NOT NULL,
ROLE_NO VARCHAR(50) NOT NULL,
PUSE_YN VARCHAR(1),
SYST_RGI_DT DATE,
SYST_RGI_PRAF_NO VARCHAR(8),
SYST_RGI_OGNZ_NO VARCHAR(7),
SYST_RGI_SYST_CD VARCHAR(3),
SYST_RGI_PRGR_ID VARCHAR(100),
SYST_CHG_DT DATE,
SYST_CHG_PRAF_NO VARCHAR(8),
SYST_CHG_OGNZ_NO VARCHAR(7),
SYST_CHG_SYST_CD VARCHAR(3),
SYST_CHG_PRGR_ID VARCHAR(100)
);
CREATE UNIQUE INDEX S_EIAM_TIS.PK_AA_USER_GROU_ROLE_RTNS
ON S_EIAM_TIS.AA_USER_GROU_ROLE_RTNS (USER_GROU_ROLE_RTNS_ID);
ALTER TABLE S_EIAM_TIS.AA_USER_GROU_ROLE_RTNS
ADD CONSTRAINT PK_AA_USER_GROU_ROLE_RTNS PRIMARY KEY (USER_GROU_ROLE_RTNS_ID);
COMMENT ON COLUMN S_EIAM_TIS.AA_USER_GROU_ROLE_RTNS.USER_GROU_ROLE_RTNS_ID IS '사용자그룹역할관계ID';
COMMENT ON COLUMN S_EIAM_TIS.AA_USER_GROU_ROLE_RTNS.SYST_ID IS '시스템ID';
COMMENT ON COLUMN S_EIAM_TIS.AA_USER_GROU_ROLE_RTNS.USER_GROU_ID IS '사용자그룹ID';
COMMENT ON COLUMN S_EIAM_TIS.AA_USER_GROU_ROLE_RTNS.ROLE_NO IS '역할번호';
COMMENT ON COLUMN S_EIAM_TIS.AA_USER_GROU_ROLE_RTNS.PUSE_YN IS '사용여부';
COMMENT ON COLUMN S_EIAM_TIS.AA_USER_GROU_ROLE_RTNS.SYST_RGI_DT IS '시스템등록일시';
COMMENT ON COLUMN S_EIAM_TIS.AA_USER_GROU_ROLE_RTNS.SYST_RGI_PRAF_NO IS '시스템등록인사번호';
COMMENT ON COLUMN S_EIAM_TIS.AA_USER_GROU_ROLE_RTNS.SYST_RGI_OGNZ_NO IS '시스템등록조직번호';
COMMENT ON COLUMN S_EIAM_TIS.AA_USER_GROU_ROLE_RTNS.SYST_RGI_SYST_CD IS '시스템등록시스템코드';
COMMENT ON COLUMN S_EIAM_TIS.AA_USER_GROU_ROLE_RTNS.SYST_RGI_PRGR_ID IS '시스템등록프로그램ID';
COMMENT ON COLUMN S_EIAM_TIS.AA_USER_GROU_ROLE_RTNS.SYST_CHG_DT IS '시스템변경일시';
COMMENT ON COLUMN S_EIAM_TIS.AA_USER_GROU_ROLE_RTNS.SYST_CHG_PRAF_NO IS '시스템변경인사번호';
COMMENT ON COLUMN S_EIAM_TIS.AA_USER_GROU_ROLE_RTNS.SYST_CHG_OGNZ_NO IS '시스템변경조직번호';
COMMENT ON COLUMN S_EIAM_TIS.AA_USER_GROU_ROLE_RTNS.SYST_CHG_SYST_CD IS '시스템변경시스템코드';
COMMENT ON COLUMN S_EIAM_TIS.AA_USER_GROU_ROLE_RTNS.SYST_CHG_PRGR_ID IS '시스템변경프로그램ID';
-- AA_OGNZ 테이블 생성 (조직)
CREATE TABLE S_EIAM_TIS.AA_OGNZ (
OGNZ_NM VARCHAR2(8) PRIMARY KEY, -- 인사번호 (PK)
OGNZ_ABR_NM VARCHAR2(200), -- 인사명
OGNZ_NO VARCHAR2(7) NOT NULL, -- 조직번호 (NOT NULL)
SPPO_GONZ_NO VARCHAR2(250), -- 이메일주소
VLDT_YMD VARCHAR2(10), -- 인사직무코드
PUSE_YN VARCHAR2(100), -- 인사직무명
SYST_RGI_DT DATE, -- 시스템등록일시
SYST_RGI_PRAF_NO VARCHAR2(8), -- 시스템등록인사번호
SYST_RGI_OGNZ_NO VARCHAR2(7), -- 시스템등록조직번호
SYST_RGI_SYST_CD VARCHAR2(3), -- 시스템등록시스템코드
SYST_RGI_PRGR_ID VARCHAR2(100), -- 시스템등록프로그램ID
SYST_CHG_DT DATE, -- 시스템변경일시
SYST_CHG_PRAF_NO VARCHAR2(8), -- 시스템변경인사번호
SYST_CHG_OGNZ_NO VARCHAR2(7), -- 시스템변경조직번호
SYST_CHG_SYST_CD VARCHAR2(3), -- 시스템변경시스템코드
SYST_CHG_PRGR_ID VARCHAR2(100) -- 시스템변경프로그램ID
);

View File

@@ -0,0 +1,8 @@
# SLF4J ??? ?? (logback?? ???)
appender=com.p6spy.engine.spy.appender.Slf4JLogger
# ??? ??? ??? ?? (???? ?? ??)
logMessageFormat=io.shinhanlife.axhub.common.config.P6SpySqlFormatter
# ?? ?? 0ms?? (connection ?? ??) ???
filter.executionThreshold=1